From f8b24379efdefd662754da965f9f452e5c51d78c Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Wed, 16 Jul 2014 08:59:56 +0200
Subject: [PATCH] OO-1013: persists the settings of the flexi table for groups
 and questions

---
 .../course/member/CourseBusinessGroupListController.java | 2 +-
 .../ui/main/AbstractBusinessGroupListController.java     | 9 ++++++---
 .../olat/group/ui/main/BusinessGroupListController.java  | 4 ++--
 .../ui/main/FavoritBusinessGroupListController.java      | 4 ++--
 .../group/ui/main/OpenBusinessGroupListController.java   | 4 ++--
 .../ui/main/OverviewBusinessGroupListController.java     | 8 ++++----
 .../group/ui/main/SearchBusinessGroupListController.java | 4 ++--
 .../main/SelectBusinessGroupCourseAuthorController.java  | 2 +-
 .../ui/main/SelectFavoritBusinessGroupController.java    | 2 +-
 .../ui/main/SelectOwnedBusinessGroupController.java      | 2 +-
 .../ui/main/SelectSearchBusinessGroupController.java     | 2 +-
 .../modules/qpool/ui/AbstractItemListController.java     | 3 +++
 12 files changed, 26 insertions(+), 20 deletions(-)

diff --git a/src/main/java/org/olat/course/member/CourseBusinessGroupListController.java b/src/main/java/org/olat/course/member/CourseBusinessGroupListController.java
index 115c2f63d54..c5c5287d9b8 100644
--- a/src/main/java/org/olat/course/member/CourseBusinessGroupListController.java
+++ b/src/main/java/org/olat/course/member/CourseBusinessGroupListController.java
@@ -80,7 +80,7 @@ public class CourseBusinessGroupListController extends AbstractBusinessGroupList
 	private SelectBusinessGroupController selectController;
 	
 	public CourseBusinessGroupListController(UserRequest ureq, WindowControl wControl, RepositoryEntry re) {
-		super(ureq, wControl, "group_list", false, false, re);
+		super(ureq, wControl, "group_list", false, false, "course", re);
 		this.re = re;
 	}
 
diff --git a/src/main/java/org/olat/group/ui/main/AbstractBusinessGroupListController.java b/src/main/java/org/olat/group/ui/main/AbstractBusinessGroupListController.java
index 1ab9d88a5fb..a2ecb8e1775 100644
--- a/src/main/java/org/olat/group/ui/main/AbstractBusinessGroupListController.java
+++ b/src/main/java/org/olat/group/ui/main/AbstractBusinessGroupListController.java
@@ -172,13 +172,14 @@ public abstract class AbstractBusinessGroupListController extends FormBasicContr
 	
 	private BusinessGroupViewFilter filter;
 	private Object userObject;
+	private final String prefsKey;
 	
-	public AbstractBusinessGroupListController(UserRequest ureq, WindowControl wControl, String page) {
-		this(ureq, wControl, page, false, false, null);
+	public AbstractBusinessGroupListController(UserRequest ureq, WindowControl wControl, String page, String prefsKey) {
+		this(ureq, wControl, page, false, false, prefsKey, null);
 	}
 	
 	public AbstractBusinessGroupListController(UserRequest ureq, WindowControl wControl, String page,
-			boolean showAdminTools, boolean startExtendedSearch, Object userObject) {
+			boolean showAdminTools, boolean startExtendedSearch, String prefsKey, Object userObject) {
 		super(ureq, wControl, page);
 		setTranslator(Util.createPackageTranslator(AbstractBusinessGroupListController.class, ureq.getLocale(), getTranslator()));
 
@@ -187,6 +188,7 @@ public abstract class AbstractBusinessGroupListController extends FormBasicContr
 		this.showAdminTools = showAdminTools && admin;
 		this.userObject = userObject;
 		this.startExtendedSearch = startExtendedSearch;
+		this.prefsKey = prefsKey;
 
 		initForm(ureq);
 	}
@@ -201,6 +203,7 @@ public abstract class AbstractBusinessGroupListController extends FormBasicContr
 		FlexiTableSortOptions options = new FlexiTableSortOptions();
 		options.setFromColumnModel(true);
 		tableEl.setSortSettings(options);
+		tableEl.setAndLoadPersistedPreferences(ureq, "gbg-list-" + prefsKey);
 		
 		searchCtrl = new BusinessGroupSearchController(ureq, getWindowControl(), isAdmin(), true, showAdminTools, mainForm);
 		searchCtrl.setEnabled(false);
diff --git a/src/main/java/org/olat/group/ui/main/BusinessGroupListController.java b/src/main/java/org/olat/group/ui/main/BusinessGroupListController.java
index 8b309696f17..64097229cf8 100644
--- a/src/main/java/org/olat/group/ui/main/BusinessGroupListController.java
+++ b/src/main/java/org/olat/group/ui/main/BusinessGroupListController.java
@@ -31,8 +31,8 @@ import org.olat.group.model.SearchBusinessGroupParams;
  */
 public class BusinessGroupListController extends AbstractBusinessGroupListController {
 	
-	public BusinessGroupListController(UserRequest ureq, WindowControl wControl) {
-		super(ureq, wControl, "group_list");
+	public BusinessGroupListController(UserRequest ureq, WindowControl wControl, String prefsKey) {
+		super(ureq, wControl, "group_list", prefsKey);
 	}
 
 	@Override
diff --git a/src/main/java/org/olat/group/ui/main/FavoritBusinessGroupListController.java b/src/main/java/org/olat/group/ui/main/FavoritBusinessGroupListController.java
index 5a5d117d875..cc618904332 100644
--- a/src/main/java/org/olat/group/ui/main/FavoritBusinessGroupListController.java
+++ b/src/main/java/org/olat/group/ui/main/FavoritBusinessGroupListController.java
@@ -31,8 +31,8 @@ import org.olat.group.model.SearchBusinessGroupParams;
  */
 public class FavoritBusinessGroupListController extends AbstractBusinessGroupListController {
 
-	public FavoritBusinessGroupListController(UserRequest ureq, WindowControl wControl) {
-		super(ureq, wControl, "group_list");
+	public FavoritBusinessGroupListController(UserRequest ureq, WindowControl wControl, String prefsKey) {
+		super(ureq, wControl, "group_list", prefsKey);
 	}
 
 	@Override
diff --git a/src/main/java/org/olat/group/ui/main/OpenBusinessGroupListController.java b/src/main/java/org/olat/group/ui/main/OpenBusinessGroupListController.java
index c8022d803ca..0bc11b54d49 100644
--- a/src/main/java/org/olat/group/ui/main/OpenBusinessGroupListController.java
+++ b/src/main/java/org/olat/group/ui/main/OpenBusinessGroupListController.java
@@ -41,8 +41,8 @@ import org.olat.group.ui.main.BusinessGroupFlexiTableModel.Cols;
  */
 public class OpenBusinessGroupListController extends AbstractBusinessGroupListController {
 	
-	public OpenBusinessGroupListController(UserRequest ureq, WindowControl wControl) {
-		super(ureq, wControl, "group_list");
+	public OpenBusinessGroupListController(UserRequest ureq, WindowControl wControl, String prefsKey) {
+		super(ureq, wControl, "group_list", prefsKey);
 	}
 	
 	@Override
diff --git a/src/main/java/org/olat/group/ui/main/OverviewBusinessGroupListController.java b/src/main/java/org/olat/group/ui/main/OverviewBusinessGroupListController.java
index 22e000c0e33..425fc9cc933 100644
--- a/src/main/java/org/olat/group/ui/main/OverviewBusinessGroupListController.java
+++ b/src/main/java/org/olat/group/ui/main/OverviewBusinessGroupListController.java
@@ -168,7 +168,7 @@ public class OverviewBusinessGroupListController extends BasicController impleme
 		OLATResourceable ores = OresHelper.createOLATResourceableInstance("Favorits", 0l);
 		ThreadLocalUserActivityLogger.addLoggingResourceInfo(LoggingResourceable.wrapBusinessPath(ores));
 		WindowControl bwControl = BusinessControlFactory.getInstance().createBusinessWindowControl(ores, null, getWindowControl());
-		favoritGroupsCtrl = new FavoritBusinessGroupListController(ureq, bwControl);
+		favoritGroupsCtrl = new FavoritBusinessGroupListController(ureq, bwControl, "favorit");
 		listenTo(favoritGroupsCtrl);
 		
 		favoritGroupsCtrl.doDefaultSearch();
@@ -183,7 +183,7 @@ public class OverviewBusinessGroupListController extends BasicController impleme
 		OLATResourceable ores = OresHelper.createOLATResourceableInstance("AllGroups", 0l);
 		ThreadLocalUserActivityLogger.addLoggingResourceInfo(LoggingResourceable.wrapBusinessPath(ores));
 		WindowControl bwControl = BusinessControlFactory.getInstance().createBusinessWindowControl(ores, null, getWindowControl());
-		myGroupsCtrl = new BusinessGroupListController(ureq, bwControl);
+		myGroupsCtrl = new BusinessGroupListController(ureq, bwControl, "my");
 		listenTo(myGroupsCtrl);
 
 		myGroupsCtrl.doDefaultSearch();
@@ -198,7 +198,7 @@ public class OverviewBusinessGroupListController extends BasicController impleme
 		OLATResourceable ores = OresHelper.createOLATResourceableInstance("OwnedGroups", 0l);
 		ThreadLocalUserActivityLogger.addLoggingResourceInfo(LoggingResourceable.wrapBusinessPath(ores));
 		WindowControl bwControl = BusinessControlFactory.getInstance().createBusinessWindowControl(ores, null, getWindowControl());
-		openGroupsCtrl = new OpenBusinessGroupListController(ureq, bwControl);
+		openGroupsCtrl = new OpenBusinessGroupListController(ureq, bwControl, "public");
 		listenTo(openGroupsCtrl);
 
 		openGroupsCtrl.doDefaultSearch();
@@ -213,7 +213,7 @@ public class OverviewBusinessGroupListController extends BasicController impleme
 		OLATResourceable ores = OresHelper.createOLATResourceableInstance("Search", 0l);
 		ThreadLocalUserActivityLogger.addLoggingResourceInfo(LoggingResourceable.wrapBusinessPath(ores));
 		WindowControl bwControl = BusinessControlFactory.getInstance().createBusinessWindowControl(ores, null, getWindowControl());
-		searchGroupsCtrl = new SearchBusinessGroupListController(ureq, bwControl);
+		searchGroupsCtrl = new SearchBusinessGroupListController(ureq, bwControl, "search");
 		listenTo(searchGroupsCtrl);
 
 		mainVC.put("groupList", searchGroupsCtrl.getInitialComponent());
diff --git a/src/main/java/org/olat/group/ui/main/SearchBusinessGroupListController.java b/src/main/java/org/olat/group/ui/main/SearchBusinessGroupListController.java
index dd9c0250450..40679936993 100644
--- a/src/main/java/org/olat/group/ui/main/SearchBusinessGroupListController.java
+++ b/src/main/java/org/olat/group/ui/main/SearchBusinessGroupListController.java
@@ -31,8 +31,8 @@ import org.olat.group.model.SearchBusinessGroupParams;
  */
 public class SearchBusinessGroupListController extends AbstractBusinessGroupListController {
 	
-	public SearchBusinessGroupListController(UserRequest ureq, WindowControl wControl) {
-		super(ureq, wControl, "group_list", true, true, null);
+	public SearchBusinessGroupListController(UserRequest ureq, WindowControl wControl, String prefsKey) {
+		super(ureq, wControl, "group_list", true, true, prefsKey, null);
 	}
 
 	@Override
diff --git a/src/main/java/org/olat/group/ui/main/SelectBusinessGroupCourseAuthorController.java b/src/main/java/org/olat/group/ui/main/SelectBusinessGroupCourseAuthorController.java
index abc58fc36f6..4210eddf4d4 100644
--- a/src/main/java/org/olat/group/ui/main/SelectBusinessGroupCourseAuthorController.java
+++ b/src/main/java/org/olat/group/ui/main/SelectBusinessGroupCourseAuthorController.java
@@ -35,7 +35,7 @@ import org.olat.group.model.SearchBusinessGroupParams;
 public class SelectBusinessGroupCourseAuthorController extends AbstractBusinessGroupListController {
 	
 	public SelectBusinessGroupCourseAuthorController(UserRequest ureq, WindowControl wControl) {
-		super(ureq, wControl, "group_list");
+		super(ureq, wControl, "group_list", "authors");
 	}
 
 	@Override
diff --git a/src/main/java/org/olat/group/ui/main/SelectFavoritBusinessGroupController.java b/src/main/java/org/olat/group/ui/main/SelectFavoritBusinessGroupController.java
index 4a50502df25..2bc1e0de90f 100644
--- a/src/main/java/org/olat/group/ui/main/SelectFavoritBusinessGroupController.java
+++ b/src/main/java/org/olat/group/ui/main/SelectFavoritBusinessGroupController.java
@@ -32,7 +32,7 @@ import org.olat.group.model.SearchBusinessGroupParams;
 public class SelectFavoritBusinessGroupController extends AbstractBusinessGroupListController {
 
 	public SelectFavoritBusinessGroupController(UserRequest ureq, WindowControl wControl) {
-		super(ureq, wControl, "group_list");
+		super(ureq, wControl, "group_list", "sel-favorit");
 	}
 
 
diff --git a/src/main/java/org/olat/group/ui/main/SelectOwnedBusinessGroupController.java b/src/main/java/org/olat/group/ui/main/SelectOwnedBusinessGroupController.java
index 070d9495513..ae67a476625 100644
--- a/src/main/java/org/olat/group/ui/main/SelectOwnedBusinessGroupController.java
+++ b/src/main/java/org/olat/group/ui/main/SelectOwnedBusinessGroupController.java
@@ -32,7 +32,7 @@ import org.olat.group.model.SearchBusinessGroupParams;
 public class SelectOwnedBusinessGroupController extends AbstractBusinessGroupListController {
 	
 	public SelectOwnedBusinessGroupController(UserRequest ureq, WindowControl wControl) {
-		super(ureq, wControl, "select_group_list");
+		super(ureq, wControl, "select_group_list", "sel-owned");
 	}
 
 	@Override
diff --git a/src/main/java/org/olat/group/ui/main/SelectSearchBusinessGroupController.java b/src/main/java/org/olat/group/ui/main/SelectSearchBusinessGroupController.java
index 68f683bad2f..6d882b63417 100644
--- a/src/main/java/org/olat/group/ui/main/SelectSearchBusinessGroupController.java
+++ b/src/main/java/org/olat/group/ui/main/SelectSearchBusinessGroupController.java
@@ -34,7 +34,7 @@ public class SelectSearchBusinessGroupController extends AbstractBusinessGroupLi
 	private final boolean restricted;
 	
 	public SelectSearchBusinessGroupController(UserRequest ureq, WindowControl wControl, boolean restricted) {
-		super(ureq, wControl, "group_list");
+		super(ureq, wControl, "group_list", "sel-search");
 		this.restricted = restricted;
 	}
 
diff --git a/src/main/java/org/olat/modules/qpool/ui/AbstractItemListController.java b/src/main/java/org/olat/modules/qpool/ui/AbstractItemListController.java
index 95951773d4d..bd3c0946573 100644
--- a/src/main/java/org/olat/modules/qpool/ui/AbstractItemListController.java
+++ b/src/main/java/org/olat/modules/qpool/ui/AbstractItemListController.java
@@ -75,6 +75,7 @@ public abstract class AbstractItemListController extends FormBasicController
 	private FlexiTableElement itemsTable;
 	private QuestionItemDataModel model;
 	
+	private final String prefsKey;
 	private ExtendedSearchController extendedSearchCtrl;
 	
 	private final MarkManager markManager;
@@ -86,6 +87,7 @@ public abstract class AbstractItemListController extends FormBasicController
 	public AbstractItemListController(UserRequest ureq, WindowControl wControl, QuestionItemsSource source, String key) {
 		super(ureq, wControl, "item_list");
 
+		this.prefsKey = key;
 		this.itemsSource = source;
 		markManager = CoreSpringFactory.getImpl(MarkManager.class);
 		qpoolService = CoreSpringFactory.getImpl(QPoolService.class);
@@ -146,6 +148,7 @@ public abstract class AbstractItemListController extends FormBasicController
 		itemsTable.setSortSettings(new FlexiTableSortOptions(true));
 		itemsTable.setExtendedSearch(extendedSearchCtrl);
 		itemsTable.setColumnIndexForDragAndDropLabel(Cols.title.ordinal());
+		itemsTable.setAndLoadPersistedPreferences(ureq, "qpool-list-" + prefsKey);
 
 		initButtons(ureq, formLayout);
 	}
-- 
GitLab