Mercurial > dive4elements > river
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 :