changeset 519:77234b1d009c

ISSUE-90 & ISSUE-40 (part II/II) Former selected values are preselected after back jumps. flys-client/trunk@1998 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Tue, 24 May 2011 16:22:34 +0000
parents bac8e6ea277d
children 9e2b151770bd
files flys-client/ChangeLog flys-client/src/main/java/de/intevation/flys/client/client/ui/SelectProvider.java flys-client/src/main/java/de/intevation/flys/client/client/ui/SingleLocationPanel.java flys-client/src/main/java/de/intevation/flys/client/client/ui/WQAdaptedInputPanel.java flys-client/src/main/java/de/intevation/flys/client/client/ui/WQInputPanel.java
diffstat 5 files changed, 256 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/flys-client/ChangeLog	Tue May 24 11:22:05 2011 +0000
+++ b/flys-client/ChangeLog	Tue May 24 16:22:34 2011 +0000
@@ -1,3 +1,15 @@
+2011-05-24  Ingo Weinzierl <ingo@intevation.de>
+
+	  ISSUE-91
+	  ISSUE-40 (part II/II)
+
+	* src/main/java/de/intevation/flys/client/client/ui/WQAdaptedInputPanel.java,
+	  src/main/java/de/intevation/flys/client/client/ui/WQInputPanel.java,
+	  src/main/java/de/intevation/flys/client/client/ui/SelectProvider.java,
+	  src/main/java/de/intevation/flys/client/client/ui/SingleLocationPanel.java:
+	  Read default values in those panels and fill the form items with that
+	  data.
+	  
 2011-05-24  Ingo Weinzierl <ingo@intevation.de>
 
 	* src/main/java/de/intevation/flys/client/client/FLYSConstants.properties,
--- a/flys-client/src/main/java/de/intevation/flys/client/client/ui/SelectProvider.java	Tue May 24 11:22:05 2011 +0000
+++ b/flys-client/src/main/java/de/intevation/flys/client/client/ui/SelectProvider.java	Tue May 24 16:22:34 2011 +0000
@@ -126,12 +126,21 @@
 
             LinkedHashMap<String, String> it = new LinkedHashMap<String, String>();
 
-            boolean firstItem = true;
+            boolean  defaultSet = false;
+            boolean  first      = true;
+
+            DataItem def      = d.getDefault();
+            String   defValue = def != null ? def.getStringValue() : null;
+
+            if (defValue != null && defValue.length() > 0) {
+                initial.put(d.getLabel(), def.getStringValue());
+                defaultSet = true;
+            }
 
             for (DataItem item: d.getItems()) {
-                if (firstItem) {
+                if (!defaultSet && first) {
                     initial.put(d.getLabel(), item.getStringValue());
-                    firstItem = false;
+                    first = false;
                 }
 
                 it.put(item.getStringValue(), item.getLabel());
--- a/flys-client/src/main/java/de/intevation/flys/client/client/ui/SingleLocationPanel.java	Tue May 24 11:22:05 2011 +0000
+++ b/flys-client/src/main/java/de/intevation/flys/client/client/ui/SingleLocationPanel.java	Tue May 24 16:22:34 2011 +0000
@@ -3,6 +3,7 @@
 import java.util.List;
 
 import com.google.gwt.core.client.GWT;
+import com.google.gwt.i18n.client.NumberFormat;
 import com.google.gwt.user.client.rpc.AsyncCallback;
 
 import com.smartgwt.client.widgets.Canvas;
@@ -91,12 +92,12 @@
         VLayout layout = new VLayout();
         layout.setMembersMargin(10);
 
-        initDefaults(data);
-
         Label label   = new Label(MESSAGES.location ());
         Canvas widget = createWidget(data);
         Canvas submit = getNextButton();
 
+        initDefaults(data);
+
         createLocationTable();
 
         widget.setHeight(50);
@@ -179,6 +180,22 @@
      * @param list The DataList container that stores the Data objects.
      */
     protected void initDefaults(DataList list) {
+        Data data = list.get(0);
+
+        if (data == null) {
+            return;
+        }
+
+        DataItem def   = data.getDefault();
+        String   value = def.getStringValue();
+
+        try {
+            double d = Double.parseDouble(value);
+            setLocationValues(new double[] { d } );
+        }
+        catch (NumberFormatException nfe) {
+            // could not parse, dont know what to do else
+        }
     }
 
 
--- a/flys-client/src/main/java/de/intevation/flys/client/client/ui/WQAdaptedInputPanel.java	Tue May 24 11:22:05 2011 +0000
+++ b/flys-client/src/main/java/de/intevation/flys/client/client/ui/WQAdaptedInputPanel.java	Tue May 24 16:22:34 2011 +0000
@@ -183,10 +183,81 @@
         layout.setHeight(25 + listHeight);
         layout.setWidth(350);
 
+        initUserDefaults(dataList);
+
         return layout;
     }
 
 
+    protected void initUserDefaults(DataList dataList) {
+
+        initUserWQValues(dataList);
+        initUserWQMode(dataList);
+    }
+
+
+    protected void initUserWQMode(DataList dataList) {
+        List<Data> allData = dataList.getAll();
+
+        Data     dDef  = getData(allData, "wq_mode");
+        DataItem def   = dDef != null ? dDef.getDefault() : null;
+        String   value = def != null ? def.getStringValue() : null;
+
+        if (value != null && value.equals(FIELD_WQ_Q)) {
+            modes.setValue(FIELD_WQ_MODE, FIELD_WQ_Q);
+        }
+        else {
+            modes.setValue(FIELD_WQ_MODE, FIELD_WQ_W);
+        }
+    }
+
+
+    protected void initUserWQValues(DataList dataList) {
+        List<Data> allData = dataList.getAll();
+
+        Data     dDef  = getData(allData, "wq_values");
+        DataItem def   = dDef != null ? dDef.getDefault() : null;
+        String   value = def != null ? def.getStringValue() : null;
+
+        if (value == null || value.length() == 0) {
+            return;
+        }
+
+        String[] lines = value.split(GAUGE_SEPARATOR);
+
+        if (lines == null || lines.length == 0) {
+            return;
+        }
+
+        for (String line: lines) {
+            String[] cols  = line.split(GAUGE_PART_SEPARATOR);
+            String   title = createLineTitle(line);
+
+            if (cols == null || cols.length < 3) {
+                continue;
+            }
+
+            String[] strValues = cols[2].split(VALUE_SEPARATOR);
+            double[] values    = new double[strValues.length];
+
+            int idx = 0;
+
+            for (String strValue: strValues) {
+                try {
+                    values[idx++] = Double.valueOf(strValue);
+                }
+                catch (NumberFormatException nfe) {
+                    // do nothing
+                }
+            }
+
+            String           key = cols[0] + GAUGE_PART_SEPARATOR + cols[1];
+            DoubleArrayPanel dap = wqranges.get(key);
+            dap.setValues(values);
+        }
+    }
+
+
     protected Canvas createList(DataList dataList) {
         VLayout layout = new VLayout();
 
@@ -199,7 +270,6 @@
                 createLineTitle(title), null, this, TitleOrientation.LEFT);
 
             wqranges.put(title, dap);
-
             layout.addMember(dap);
         }
 
--- a/flys-client/src/main/java/de/intevation/flys/client/client/ui/WQInputPanel.java	Tue May 24 11:22:05 2011 +0000
+++ b/flys-client/src/main/java/de/intevation/flys/client/client/ui/WQInputPanel.java	Tue May 24 16:22:34 2011 +0000
@@ -168,7 +168,6 @@
     public Canvas create(DataList data) {
         initDefaults(data);
 
-
         Canvas  widget = createWidget(data);
         Canvas  submit = getNextButton();
         Label   label  = new Label(MESSAGE.wqTitle());
@@ -182,6 +181,8 @@
         layout.addMember(widget);
         layout.addMember(submit);
 
+        initUserDefaults(data);
+
         return layout;
     }
 
@@ -420,6 +421,135 @@
     }
 
 
+    /**
+     * Initializes the form items with former inserted user data.
+     *
+     * @param list The DataList that contains the user data.
+     */
+    protected void initUserDefaults(DataList list) {
+        List<Data> allData = list.getAll();
+
+        Data     m        = getData(allData, "wq_mode");
+        DataItem modeItem = m != null ? m.getDefault() : null;
+        String   theMode  = modeItem != null
+            ? modeItem.getStringValue()
+            : null;
+
+        Data     s            = getData(allData, "wq_selection");
+        DataItem sI           = s != null ? s.getDefault() : null;
+        String   theSelection = sI != null ? sI.getStringValue() : null;
+
+        if (theMode == null || theMode.length() == 0) {
+            return;
+        }
+
+        initUserSingleValues(list, theMode);
+        initUserRangeValues(list, theMode);
+
+        modes.setValue(FIELD_WQ, theMode);
+
+        if (theSelection != null || theSelection.length() > 0) {
+            modes.setValue(FIELD_MODE, theSelection);
+            updatePanels(theMode, theSelection);
+        }
+    }
+
+
+    /**
+     * Initializes the single values of W or Q from DataList.
+     *
+     * @param list The DataList that contains the 'wq_single' object.
+     * @param theMode The W or Q mode.
+     */
+    protected void initUserSingleValues(DataList list, String theMode) {
+        List<Data> allData = list.getAll();
+
+        Data     s = getData(allData, "wq_single");
+        DataItem i = s != null ? s.getDefault() : null;
+
+        if (i != null) {
+            String   value = i.getStringValue();
+            String[] split = value.split(" ");
+
+            int num = split != null ? split.length : 0;
+
+            double[] values = new double[num];
+
+            for (int j = 0; j < num; j++) {
+                try {
+                    values[j] = Double.valueOf(split[j]);
+                }
+                catch (NumberFormatException nfe) {
+                    // nothing to do
+                }
+            }
+
+            if (theMode.equals("W")) {
+                setSingleW(values);
+            }
+            else {
+                setSingleQ(values);
+            }
+        }
+    }
+
+
+    /**
+     * Initializes the range values of W or Q from DataList.
+     *
+     * @param list The DataList that contains the 'wq_single' object.
+     * @param theMode The W or Q mode.
+     */
+    protected void initUserRangeValues(DataList list, String theMode) {
+        List<Data> allData = list.getAll();
+
+        // init range mode values
+        Data f = getData(allData, "wq_from");
+        Data t = getData(allData, "wq_to");
+        Data s = getData(allData, "wq_step");
+
+        if (f != null && t != null && s != null) {
+            DataItem dF = f.getDefault();
+            DataItem dT = t.getDefault();
+            DataItem dS = s.getDefault();
+
+            String fS = dF != null ? dF.getStringValue() : null;
+            String tS = dT != null ? dT.getStringValue() : null;
+            String sS = dS != null ? dS.getStringValue() : null;
+
+            try {
+                double from = Double.valueOf(fS);
+                double to   = Double.valueOf(tS);
+                double step = Double.valueOf(sS);
+
+                if (theMode.equals("W")) {
+                    setWRangeValues(from, to, step);
+                }
+                else {
+                    setQRangeValues(from, to, step);
+                }
+            }
+            catch (NumberFormatException nfe) {
+                // do nothing
+            }
+        }
+    }
+
+
+    protected void setQRangeValues(double f, double t, double s) {
+        setFromQ(f);
+        setToQ(t);
+        setStepQ(s);
+    }
+
+
+    protected void setWRangeValues(double f, double t, double s) {
+        setFromW(f);
+        setToW(t);
+        setStepW(s);
+    }
+
+
     protected String createWString(DataItem from, DataItem to, DataItem step) {
         StringBuilder sb = new StringBuilder();
         sb.append(from.getLabel());
@@ -473,11 +603,13 @@
         container.setMembersMargin(30);
         createWQInputTable();
         createWQInputPanel();
+
         // the initial panel is the Single-W panel.
-        double[] values = getSingleW();
-        wArrayPanel = new DoubleArrayPanel(
-            MESSAGE.unitWSingle(), values, this);
-        container.addMember(wArrayPanel);
+        double[] values = getSingleQ();
+        qArrayPanel = new DoubleArrayPanel(
+            MESSAGE.unitQSingle(), values, this);
+        container.addMember(qArrayPanel);
+
         helperContainer.addChild(wqTable);
         layout.addMember(modeForm);
         layout.addMember(container);
@@ -524,7 +656,7 @@
         modes.setNumCols(1);
 
         LinkedHashMap initial = new LinkedHashMap();
-        initial.put(FIELD_WQ, FIELD_WQ_W);
+        initial.put(FIELD_WQ, FIELD_WQ_Q);
         initial.put(FIELD_MODE, FIELD_MODE_SINGLE);
         modes.setValues(initial);
 
@@ -800,7 +932,6 @@
 
     protected void updatePanels(String wqMode, String inputMode) {
         container.removeMembers(container.getMembers());
-        GWT.log("updating Panel and Table");
         if (wqMode.equals(FIELD_WQ_W)) {
             if (inputMode.equals(FIELD_MODE_SINGLE)) {
                 // Single W mode
@@ -1146,7 +1277,10 @@
                     }
                     tableData = wqi;
                     addWQInfo(wqi);
-                    updatePanels(FIELD_WQ_W, FIELD_MODE_SINGLE);
+
+                    String wq = (String) modes.getValue(FIELD_WQ);
+                    String sr = (String) modes.getValue(FIELD_MODE);
+                    updatePanels(wq, sr);
                 }
             }
         );

http://dive4elements.wald.intevation.org