diff flys-client/src/main/java/de/intevation/flys/client/client/ui/LocationDistancePanel.java @ 1534:98123d34529b

Added UI parts and event for filtering distances and locations. flys-client/trunk@3749 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Raimund Renkert <raimund.renkert@intevation.de>
date Mon, 23 Jan 2012 11:07:38 +0000
parents 2a00f4849738
children 4f4d29404dba
line wrap: on
line diff
--- a/flys-client/src/main/java/de/intevation/flys/client/client/ui/LocationDistancePanel.java	Fri Jan 20 15:47:14 2012 +0000
+++ b/flys-client/src/main/java/de/intevation/flys/client/client/ui/LocationDistancePanel.java	Mon Jan 23 11:07:38 2012 +0000
@@ -15,7 +15,12 @@
 import com.smartgwt.client.widgets.form.fields.events.BlurEvent;
 import com.smartgwt.client.widgets.form.fields.events.ChangeHandler;
 import com.smartgwt.client.widgets.form.fields.events.ChangeEvent;
+import com.smartgwt.client.widgets.form.fields.events.ChangedHandler;
+import com.smartgwt.client.widgets.form.fields.events.ChangedEvent;
+
 import com.smartgwt.client.widgets.form.fields.FormItem;
+import com.smartgwt.client.widgets.form.fields.SelectItem;
+import com.smartgwt.client.widgets.form.fields.TextItem;
 import com.smartgwt.client.widgets.form.fields.RadioGroupItem;
 import com.smartgwt.client.widgets.layout.HLayout;
 import com.smartgwt.client.widgets.layout.VLayout;
@@ -51,6 +56,7 @@
 import de.intevation.flys.client.client.Config;
 import de.intevation.flys.client.client.event.FilterHandler;
 import de.intevation.flys.client.client.event.StringFilterEvent;
+import de.intevation.flys.client.client.event.RangeFilterEvent;
 import de.intevation.flys.client.client.ui.range.DistanceInfoDataSource;
 
 
@@ -137,7 +143,12 @@
     protected DistanceInfoObject[] tableData;
 
     /** The table filter.*/
-    protected TableFilter filter;
+    protected TableFilter filterDescription;
+    protected RangeTableFilter filterRange;
+
+    /** The Combobox for table filter criteria. */
+    protected SelectItem filterCriteria;
+
 
     /**
      * Creates a new LocationDistancePanel instance.
@@ -678,7 +689,7 @@
         inputTables   = new TabSet();
         inputTables.addTabSelectedHandler(new TabSelectedHandler() {
             public void onTabSelected(TabSelectedEvent evt) {
-                filter.clear();
+                filterDescription.clear();
             }
         });
 
@@ -694,19 +705,59 @@
         inputTables.addTab(locations);
         inputTables.addTab(distances);
 
-        filter = new TableFilter();
-        filter.setHeight("30px");
-        filter.addFilterHandler(this);
+        filterDescription = new TableFilter();
+        filterDescription.setHeight("30px");
+        filterDescription.addFilterHandler(this);
+
+        filterRange = new RangeTableFilter();
+        filterRange.setHeight("30px");
+        filterRange.addFilterHandler(this);
+        filterRange.setVisible(false);
+
+        filterCriteria = new SelectItem();
+        filterCriteria.setShowTitle(false);
+        filterCriteria.setWidth(100);
+        filterCriteria.addChangedHandler(new ChangedHandler() {
+            public void onChanged(ChangedEvent e) {
+                if(e.getValue().toString().equals("range")) {
+                    filterRange.setVisible(true);
+                    filterDescription.setVisible(false);
+                    filterDescription.clear();
+                }
+                else {
+                    filterRange.setVisible(false);
+                    filterRange.clear();
+                    filterDescription.setVisible(true);
+                }
+            }
+        });
+
+        LinkedHashMap<String, String> filterMap =
+            new LinkedHashMap<String, String>();
+        filterMap.put("description", MESSAGES.description());
+        filterMap.put("range", MESSAGES.range());
+        filterCriteria.setValueMap(filterMap);
+        filterCriteria.setValue("description");
+
+        DynamicForm form = new DynamicForm();
+        form.setFields(filterCriteria);
 
         inputTables.setHeight("*");
 
         VLayout helper = new VLayout();
+        HLayout filterLayout = new HLayout();
+
+        filterLayout.addMember(form);
+        filterLayout.addMember(filterDescription);
+        filterLayout.addMember(filterRange);
+        filterLayout.setHeight("33px");
         helper.addMember(inputTables);
-        helper.addMember(filter);
+        helper.addMember(filterLayout);
         helper.setHeight100();
         helper.setWidth100();
 
         helperContainer.addMember(helper);
+        filterLayout.setWidth("200");
 
         return layout;
     }
@@ -730,6 +781,9 @@
     }
 
 
+    public void onFilterCriteriaChanged(RangeFilterEvent event) {
+        GWT.log("filtering range");
+    }
 
 
     @Override
@@ -1020,7 +1074,7 @@
         }
         if (value.equals(FIELD_VALUE_LOCATION)) {
             enableLocationPanel();
-            filter.clear();
+            filterDescription.clear();
             // Remove the tab containing the locationDistanceTable.
             // The 'updateTab()' avoids the tab content to be destroyed.
             inputTables.updateTab(0, null);
@@ -1036,7 +1090,7 @@
         }
         else {
             enableDistancePanel();
-            filter.clear();
+            filterDescription.clear();
             // Remove the tab containing the locationTable.
             // The 'updateTab()' avoids the tab content to be destroyed.
             inputTables.updateTab(0, null);

http://dive4elements.wald.intevation.org