From 7c1f14fbd6aa537612d0259dbae37600b3426de9 Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Mon, 5 Dec 2016 15:14:19 +0100
Subject: [PATCH] OO-2400: reload the list of questions after cancelling an
 extended search

---
 .../form/flexible/elements/FlexiTableElement.java   |  8 ++++++++
 .../impl/elements/table/FlexiTableElementImpl.java  |  5 +++--
 .../qpool/ui/AbstractItemListController.java        | 13 ++++++++++++-
 3 files changed, 23 insertions(+), 3 deletions(-)

diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/elements/FlexiTableElement.java b/src/main/java/org/olat/core/gui/components/form/flexible/elements/FlexiTableElement.java
index 18174b0e23f..1623beea125 100644
--- a/src/main/java/org/olat/core/gui/components/form/flexible/elements/FlexiTableElement.java
+++ b/src/main/java/org/olat/core/gui/components/form/flexible/elements/FlexiTableElement.java
@@ -380,6 +380,14 @@ public interface FlexiTableElement extends FormItem {
 	 */
 	public void reset(boolean page, boolean internal, boolean reloadData);
 	
+	/**
+	 * It will reload all the data without filter. Use it with cautious as
+	 * at some place, there are minimal restrictions to the search string.
+	 * 
+	 * @param ureq
+	 */
+	public void resetSearch(UserRequest ureq);
+	
 	public void reloadData();
 
 	/**
diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiTableElementImpl.java b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiTableElementImpl.java
index 71e78716a52..094ef037ac6 100644
--- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiTableElementImpl.java
+++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiTableElementImpl.java
@@ -1295,7 +1295,7 @@ public class FlexiTableElementImpl extends FormItemImpl implements FlexiTableEle
 		if(StringHelper.containsNonWhitespace(search)) {
 			doSearch(ureq, FlexiTableSearchEvent.QUICK_SEARCH, search, null);
 		} else {
-			doResetSearch(ureq);
+			resetSearch(ureq);
 		}
 	}
 	
@@ -1367,7 +1367,8 @@ public class FlexiTableElementImpl extends FormItemImpl implements FlexiTableEle
 				search, getSelectedFilters(), getSelectedExtendedFilters(), condQueries, FormEvent.ONCLICK));
 	}
 	
-	protected void doResetSearch(UserRequest ureq) {
+	@Override
+	public void resetSearch(UserRequest ureq) {
 		conditionalQueries = null;
 		currentPage = 0;
 		if(dataSource != null) {
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 03cb37f6692..18b08a9e9ce 100644
--- a/src/main/java/org/olat/modules/qpool/ui/AbstractItemListController.java
+++ b/src/main/java/org/olat/modules/qpool/ui/AbstractItemListController.java
@@ -55,6 +55,7 @@ import org.olat.core.gui.control.Controller;
 import org.olat.core.gui.control.Event;
 import org.olat.core.gui.control.WindowControl;
 import org.olat.core.id.OLATResourceable;
+import org.olat.core.util.StringHelper;
 import org.olat.core.util.event.EventBus;
 import org.olat.core.util.event.GenericEventListener;
 import org.olat.modules.qpool.QPoolService;
@@ -109,7 +110,6 @@ public abstract class AbstractItemListController extends FormBasicController
 		
 		extendedSearchCtrl = new ExtendedSearchController(ureq, getWindowControl(), key, mainForm);
 		extendedSearchCtrl.setEnabled(false);
-		listenTo(extendedSearchCtrl);
 		
 		initForm(ureq);
 		
@@ -167,6 +167,7 @@ public abstract class AbstractItemListController extends FormBasicController
 		itemsTable.setExtendedSearch(extendedSearchCtrl);
 		itemsTable.setColumnIndexForDragAndDropLabel(Cols.title.ordinal());
 		itemsTable.setAndLoadPersistedPreferences(ureq, "qpool-list-" + prefsKey);
+		listenTo(extendedSearchCtrl);
 		
 		VelocityContainer detailsVC = createVelocityContainer("item_list_details");
 		itemsTable.setDetailsRenderer(detailsVC, this);
@@ -225,6 +226,16 @@ public abstract class AbstractItemListController extends FormBasicController
 
 	@Override
 	protected void event(UserRequest ureq, Controller source, Event event) {
+		if(extendedSearchCtrl == source) {
+			if(event == Event.CANCELLED_EVENT) {
+				String quickSearch = itemsTable.getQuickSearchString();
+				if(StringHelper.containsNonWhitespace(quickSearch)) {
+					itemsTable.quickSearch(ureq, quickSearch);
+				} else {
+					itemsTable.resetSearch(ureq);
+				}
+			}
+		}
 		super.event(ureq, source, event);
 	}
 
-- 
GitLab