diff gwt-client/src/main/java/org/dive4elements/river/client/client/ui/ModuleSelection.java @ 5928:34392dc16546

Implemented interaction design in project startup page.
author Raimund Renkert <rrenkert@intevation.de>
date Wed, 08 May 2013 16:34:45 +0200
parents 172338b1407f
children 59afa245549b
line wrap: on
line diff
--- a/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/ModuleSelection.java	Wed May 08 16:32:23 2013 +0200
+++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/ModuleSelection.java	Wed May 08 16:34:45 2013 +0200
@@ -16,7 +16,10 @@
 import com.smartgwt.client.widgets.Canvas;
 import com.smartgwt.client.widgets.Label;
 import com.smartgwt.client.widgets.form.DynamicForm;
+import com.smartgwt.client.widgets.form.fields.LinkItem;
 import com.smartgwt.client.widgets.form.fields.RadioGroupItem;
+import com.smartgwt.client.widgets.form.fields.events.ChangeEvent;
+import com.smartgwt.client.widgets.form.fields.events.ChangeHandler;
 import com.smartgwt.client.widgets.layout.HLayout;
 import com.smartgwt.client.widgets.layout.VLayout;
 
@@ -31,7 +34,10 @@
 import org.dive4elements.river.client.shared.model.DefaultDataItem;
 import org.dive4elements.river.client.shared.model.Module;
 
+import java.util.ArrayList;
 import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
 
 /**
  * The ModuleSelection combines the river selection and the module selection in
@@ -57,11 +63,26 @@
     /** The ModuleService used to retrieve the available modules of a user.*/
     protected ModuleServiceAsync moduleService = GWT.create(ModuleService.class);
 
+    private List<String> fixRivers;
+    private List<String> minfoRivers;
+    protected Map<String, LinkItem> rivers;
 
     /**
      * The default constructor.
      */
     public ModuleSelection() {
+        rivers = null;
+        //TODO: put all the rivers into a config file, or something.
+        fixRivers = new ArrayList<String>();
+        fixRivers.add("Rhein");
+        fixRivers.add("Elbe");
+        fixRivers.add("Donau");
+
+        minfoRivers = new ArrayList<String>();
+        minfoRivers.add("Elbe");
+        minfoRivers.add("Rhein");
+        minfoRivers.add("Oder");
+
         readModules();
     }
 
@@ -141,6 +162,27 @@
         DynamicForm form = new DynamicForm();
 
         radio = new RadioGroupItem("plugin");
+        radio.addChangeHandler(new ChangeHandler() {
+            @Override
+            public void onChange(ChangeEvent event) {
+                String selected = (String)event.getValue();
+                if (!rivers.isEmpty()) {
+                    for (Map.Entry<String, LinkItem> s: rivers.entrySet()) {
+                        if (selected.equals("minfo") && !minfoRivers.contains(s.getKey())) {
+                            s.getValue().hide();
+                        }
+                        else if (selected.equals("fixanalysis") && !fixRivers.contains(s.getKey())) {
+                            s.getValue().hide();
+                        }
+                        else {
+                            s.getValue().show();
+                            s.getValue().setCellStyle("formCell");
+                        }
+                        callUnHighlightRiver(s.getKey());
+                    }
+                }
+            }
+        });
 
         label.setWidth(50);
         label.setHeight(25);
@@ -180,5 +222,13 @@
 
         return new Data[] {data};
     }
+
+    public void setRivers(Map<String, LinkItem> rivers) {
+        this.rivers = rivers;
+    }
+
+    private native void callUnHighlightRiver(String name) /*-{
+        $wnd.unHighlight(name);
+    }-*/;
 }
 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org