From 5000839a3cb217321c7f1653a133f8d6a2ee58ad Mon Sep 17 00:00:00 2001
From: buczekp <buczekp>
Date: Mon, 31 May 2010 16:21:36 +0000
Subject: [PATCH] [LMS-1518] fixed problem with combo box selectionChanged
 event not being fired after reset of filters

SVN: 16227
---
 .../ui/grid/ListColumnFilterWidget.java        | 18 ++++++++++++------
 .../ui/grid/TextColumnFilterWidget.java        | 18 ++++++++++++------
 2 files changed, 24 insertions(+), 12 deletions(-)

diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/ListColumnFilterWidget.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/ListColumnFilterWidget.java
index d899507e543..e2d5270dff2 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/ListColumnFilterWidget.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/ListColumnFilterWidget.java
@@ -63,6 +63,8 @@ public class ListColumnFilterWidget<T> extends ComboBox<ModelData> implements
 
     private final DelayedTask delayedFilterApplierTask;
 
+    private boolean disableApply = false;
+
     public ListColumnFilterWidget(IColumnDefinition<T> filteredField,
             final IDelegatedAction onFilterAction, List<String> distinctValues)
     {
@@ -76,7 +78,10 @@ public class ListColumnFilterWidget<T> extends ComboBox<ModelData> implements
                 @Override
                 public void selectionChanged(SelectionChangedEvent<ModelData> event)
                 {
-                    onFilterAction.execute();
+                    if (disableApply == false)
+                    {
+                        onFilterAction.execute();
+                    }
                 }
             });
 
@@ -89,7 +94,7 @@ public class ListColumnFilterWidget<T> extends ComboBox<ModelData> implements
         setToolTip(label);
         setTemplate(GWTUtils.getTooltipTemplate(MODEL_DISPLAY_KEY, ModelDataPropertyNames.TOOLTIP));
 
-        GWTUtils.setupAutoWidth(this);        
+        GWTUtils.setupAutoWidth(this);
     }
 
     private static DelayedTask createFilterApplierTask(final IDelegatedAction onFilterAction)
@@ -210,10 +215,11 @@ public class ListColumnFilterWidget<T> extends ComboBox<ModelData> implements
     @Override
     public void reset()
     {
-        // Simple 'f.reset()' causes automatic filter application,
-        // but we want to reload data only once after all filters are cleared.
-        setRawValue(getEmptyText());
-        applyEmptyText();
+        // 'super.reset()' causes automatic filter application,
+        // but we want to reload data only once after all filters are cleared
+        disableApply = true;
+        super.reset();
+        disableApply = false;
     }
 
 }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/TextColumnFilterWidget.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/TextColumnFilterWidget.java
index 1ecb8205339..d096a19ba7d 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/TextColumnFilterWidget.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/TextColumnFilterWidget.java
@@ -40,6 +40,8 @@ public class TextColumnFilterWidget<T/* entity */> extends StoreFilterField<Mode
 
     private final IDelegatedAction onFilterAction;
 
+    private boolean disableApply = false;
+
     /** @param onFilterAction callback executed when data are about to be filtered. */
     public TextColumnFilterWidget(IColumnDefinition<T> filteredField,
             IDelegatedAction onFilterAction)
@@ -71,8 +73,11 @@ public class TextColumnFilterWidget<T/* entity */> extends StoreFilterField<Mode
     @Override
     protected void onFilter()
     {
-        super.onFilter();
-        onFilterAction.execute();
+        if (disableApply == false)
+        {
+            super.onFilter();
+            onFilterAction.execute();
+        }
     }
 
     /** NOTE: We do not use this method, data are filtered on the server side */
@@ -103,9 +108,10 @@ public class TextColumnFilterWidget<T/* entity */> extends StoreFilterField<Mode
     @Override
     public void reset()
     {
-        // Simple 'f.reset()' causes automatic filter application,
-        // but we want to reload data only once after all filters are cleared.
-        setRawValue(getEmptyText());
-        applyEmptyText();
+        // 'super.reset()' causes automatic filter application,
+        // but we want to reload data only once after all filters are cleared
+        disableApply = true;
+        super.reset();
+        disableApply = false;
     }
 }
-- 
GitLab