diff flys-client/src/main/java/de/intevation/flys/client/client/ui/WQAdaptedInputPanel.java @ 246:ccba1a0b743e

The WQAdaptedInputPanel displays input fields for each gauge and returns the correct w/q values now. flys-client/trunk@1831 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Thu, 05 May 2011 08:09:03 +0000
parents 11c5bcd349b1
children 4a684d29404f
line wrap: on
line diff
--- a/flys-client/src/main/java/de/intevation/flys/client/client/ui/WQAdaptedInputPanel.java	Wed May 04 14:54:38 2011 +0000
+++ b/flys-client/src/main/java/de/intevation/flys/client/client/ui/WQAdaptedInputPanel.java	Thu May 05 08:09:03 2011 +0000
@@ -1,7 +1,13 @@
 package de.intevation.flys.client.client.ui;
 
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
 import com.google.gwt.core.client.GWT;
 
+import com.smartgwt.client.types.TitleOrientation;
 import com.smartgwt.client.widgets.Canvas;
 import com.smartgwt.client.widgets.Label;
 import com.smartgwt.client.widgets.form.fields.events.BlurHandler;
@@ -16,6 +22,8 @@
 import de.intevation.flys.client.shared.model.DefaultData;
 import de.intevation.flys.client.shared.model.DefaultDataItem;
 
+import de.intevation.flys.client.client.FLYSConstants;
+
 
 /**
  * This UIProvider creates a widget to enter W or Q data for discharge
@@ -27,17 +35,34 @@
 extends      AbstractUIProvider
 implements   ChangeHandler, BlurHandler
 {
+    public static final String FIELD_WQ_MODE = "wq_mode";
+
+
+    /** The message class that provides i18n strings.*/
+    protected FLYSConstants MSG = GWT.create(FLYSConstants.class);
+
+    /** Stores the input panels related to their keys.*/
+    protected Map<String, DoubleArrayPanel> wqranges;
+
+
+
     public WQAdaptedInputPanel() {
+        wqranges = new HashMap<String, DoubleArrayPanel>();
     }
 
 
     public Canvas create(DataList data) {
-        GWT.log("HELLO INGO");
         Canvas submit = getNextButton();
+        Canvas widget = createWidget(data);
+        Label  label  = new Label(MSG.wqadaptedTitle());
+
+        label.setHeight(25);
 
         VLayout layout = new VLayout();
         layout.setMembersMargin(10);
 
+        layout.addMember(label);
+        layout.addMember(widget);
         layout.addMember(submit);
 
         return layout;
@@ -50,19 +75,103 @@
     }
 
 
+    protected Canvas createWidget(DataList dataList) {
+        VLayout layout = new VLayout();
+
+        List<Data> data = dataList.getAll();
+
+        for (Data d: data) {
+            String name = d.getLabel();
+
+            if (name.equals(FIELD_WQ_MODE)) {
+                continue;
+            }
+
+            DataItem[] items = d.getItems();
+
+            for (DataItem item: items) {
+                String title = item.getLabel();
+
+                DoubleArrayPanel dap = new DoubleArrayPanel(
+                    createLineTitle(title), null, this, TitleOrientation.LEFT);
+
+                wqranges.put(title, dap);
+
+                layout.addMember(dap);
+            }
+        }
+
+        return layout;
+    }
+
+
+    public String createLineTitle(String key) {
+        String[] splitted = key.split(";");
+
+        return splitted[0] + " - " + splitted[1];
+    }
+
+
     public Data[] getData() {
-        DataItem item = new DefaultDataItem("wq_mode", "wq_mode", "bla");
+        Data mode   = getWQMode();
+        Data values = getWQValues();
 
+        return new Data[] { mode, values };
+    }
+
+
+    protected Data getWQMode() {
+        // TODO Search for the correct value!
+        DataItem item = new DefaultDataItem("wq_mode", "wq_mode", "q");
         Data mode = new DefaultData(
             "wq_mode", null, null, new DataItem[] { item });
 
+        return mode;
+    }
+
+
+    protected Data getWQValues() {
+        String wqvalue = null;
+
+        Iterator<String> iter = wqranges.keySet().iterator();
+        while (iter.hasNext()) {
+            String           key = iter.next();
+            DoubleArrayPanel dap = wqranges.get(key);
+
+            double[] values = dap.getInputValues();
+            if (wqvalue == null) {
+                wqvalue = createValueString(key, values);
+            }
+            else {
+                wqvalue += ":" + createValueString(key, values);
+            }
+        }
+
         DataItem valueItem = new DefaultDataItem(
-            "wq_values", "wq_values",
-            "0.0;70.2;9.6");
+            "wq_values", "wq_values", wqvalue);
         Data values = new DefaultData(
             "wq_values", null, null, new DataItem[] { valueItem });
 
-        return new Data[] { mode, values };
+        return values;
+    }
+
+
+    protected String createValueString(String key, double[] values) {
+        StringBuilder sb = new StringBuilder();
+
+        boolean first = true;
+
+        for (double value: values) {
+            if (!first) {
+                sb.append(",");
+            }
+
+            sb.append(Double.toString(value));
+
+            first = false;
+        }
+
+        return key + ";" + sb.toString();
     }
 
 
@@ -72,7 +181,8 @@
 
 
     public void onBlur(BlurEvent event) {
-        // TODO IMPLEMENT ME
+        DoubleArrayPanel dap = (DoubleArrayPanel) event.getForm();
+        dap.validateForm(event.getItem());
     }
 }
 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org