Mercurial > dive4elements > river
view 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 source
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; 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.layout.VLayout; import de.intevation.flys.client.shared.model.Data; import de.intevation.flys.client.shared.model.DataItem; import de.intevation.flys.client.shared.model.DataList; 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 * longitudinal section computations. * * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> */ public class WQAdaptedInputPanel 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) { 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; } public Canvas createOld(DataList dataList) { // TODO IMPLEMENT ME return new Label("Ich hab schon was eingegeben."); } 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() { 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", wqvalue); Data values = new DefaultData( "wq_values", null, null, new DataItem[] { valueItem }); 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(); } public void onChange(ChangeEvent event) { // TODO IMPLEMENT ME } public void onBlur(BlurEvent event) { DoubleArrayPanel dap = (DoubleArrayPanel) event.getForm(); dap.validateForm(event.getItem()); } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :