comparison 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
comparison
equal deleted inserted replaced
245:1e73d5a4859c 246:ccba1a0b743e
1 package de.intevation.flys.client.client.ui; 1 package de.intevation.flys.client.client.ui;
2
3 import java.util.HashMap;
4 import java.util.Iterator;
5 import java.util.List;
6 import java.util.Map;
2 7
3 import com.google.gwt.core.client.GWT; 8 import com.google.gwt.core.client.GWT;
4 9
10 import com.smartgwt.client.types.TitleOrientation;
5 import com.smartgwt.client.widgets.Canvas; 11 import com.smartgwt.client.widgets.Canvas;
6 import com.smartgwt.client.widgets.Label; 12 import com.smartgwt.client.widgets.Label;
7 import com.smartgwt.client.widgets.form.fields.events.BlurHandler; 13 import com.smartgwt.client.widgets.form.fields.events.BlurHandler;
8 import com.smartgwt.client.widgets.form.fields.events.BlurEvent; 14 import com.smartgwt.client.widgets.form.fields.events.BlurEvent;
9 import com.smartgwt.client.widgets.form.fields.events.ChangeHandler; 15 import com.smartgwt.client.widgets.form.fields.events.ChangeHandler;
14 import de.intevation.flys.client.shared.model.DataItem; 20 import de.intevation.flys.client.shared.model.DataItem;
15 import de.intevation.flys.client.shared.model.DataList; 21 import de.intevation.flys.client.shared.model.DataList;
16 import de.intevation.flys.client.shared.model.DefaultData; 22 import de.intevation.flys.client.shared.model.DefaultData;
17 import de.intevation.flys.client.shared.model.DefaultDataItem; 23 import de.intevation.flys.client.shared.model.DefaultDataItem;
18 24
25 import de.intevation.flys.client.client.FLYSConstants;
26
19 27
20 /** 28 /**
21 * This UIProvider creates a widget to enter W or Q data for discharge 29 * This UIProvider creates a widget to enter W or Q data for discharge
22 * longitudinal section computations. 30 * longitudinal section computations.
23 * 31 *
25 */ 33 */
26 public class WQAdaptedInputPanel 34 public class WQAdaptedInputPanel
27 extends AbstractUIProvider 35 extends AbstractUIProvider
28 implements ChangeHandler, BlurHandler 36 implements ChangeHandler, BlurHandler
29 { 37 {
38 public static final String FIELD_WQ_MODE = "wq_mode";
39
40
41 /** The message class that provides i18n strings.*/
42 protected FLYSConstants MSG = GWT.create(FLYSConstants.class);
43
44 /** Stores the input panels related to their keys.*/
45 protected Map<String, DoubleArrayPanel> wqranges;
46
47
48
30 public WQAdaptedInputPanel() { 49 public WQAdaptedInputPanel() {
50 wqranges = new HashMap<String, DoubleArrayPanel>();
31 } 51 }
32 52
33 53
34 public Canvas create(DataList data) { 54 public Canvas create(DataList data) {
35 GWT.log("HELLO INGO");
36 Canvas submit = getNextButton(); 55 Canvas submit = getNextButton();
56 Canvas widget = createWidget(data);
57 Label label = new Label(MSG.wqadaptedTitle());
58
59 label.setHeight(25);
37 60
38 VLayout layout = new VLayout(); 61 VLayout layout = new VLayout();
39 layout.setMembersMargin(10); 62 layout.setMembersMargin(10);
40 63
64 layout.addMember(label);
65 layout.addMember(widget);
41 layout.addMember(submit); 66 layout.addMember(submit);
42 67
43 return layout; 68 return layout;
44 } 69 }
45 70
48 // TODO IMPLEMENT ME 73 // TODO IMPLEMENT ME
49 return new Label("Ich hab schon was eingegeben."); 74 return new Label("Ich hab schon was eingegeben.");
50 } 75 }
51 76
52 77
78 protected Canvas createWidget(DataList dataList) {
79 VLayout layout = new VLayout();
80
81 List<Data> data = dataList.getAll();
82
83 for (Data d: data) {
84 String name = d.getLabel();
85
86 if (name.equals(FIELD_WQ_MODE)) {
87 continue;
88 }
89
90 DataItem[] items = d.getItems();
91
92 for (DataItem item: items) {
93 String title = item.getLabel();
94
95 DoubleArrayPanel dap = new DoubleArrayPanel(
96 createLineTitle(title), null, this, TitleOrientation.LEFT);
97
98 wqranges.put(title, dap);
99
100 layout.addMember(dap);
101 }
102 }
103
104 return layout;
105 }
106
107
108 public String createLineTitle(String key) {
109 String[] splitted = key.split(";");
110
111 return splitted[0] + " - " + splitted[1];
112 }
113
114
53 public Data[] getData() { 115 public Data[] getData() {
54 DataItem item = new DefaultDataItem("wq_mode", "wq_mode", "bla"); 116 Data mode = getWQMode();
117 Data values = getWQValues();
55 118
119 return new Data[] { mode, values };
120 }
121
122
123 protected Data getWQMode() {
124 // TODO Search for the correct value!
125 DataItem item = new DefaultDataItem("wq_mode", "wq_mode", "q");
56 Data mode = new DefaultData( 126 Data mode = new DefaultData(
57 "wq_mode", null, null, new DataItem[] { item }); 127 "wq_mode", null, null, new DataItem[] { item });
58 128
129 return mode;
130 }
131
132
133 protected Data getWQValues() {
134 String wqvalue = null;
135
136 Iterator<String> iter = wqranges.keySet().iterator();
137 while (iter.hasNext()) {
138 String key = iter.next();
139 DoubleArrayPanel dap = wqranges.get(key);
140
141 double[] values = dap.getInputValues();
142 if (wqvalue == null) {
143 wqvalue = createValueString(key, values);
144 }
145 else {
146 wqvalue += ":" + createValueString(key, values);
147 }
148 }
149
59 DataItem valueItem = new DefaultDataItem( 150 DataItem valueItem = new DefaultDataItem(
60 "wq_values", "wq_values", 151 "wq_values", "wq_values", wqvalue);
61 "0.0;70.2;9.6");
62 Data values = new DefaultData( 152 Data values = new DefaultData(
63 "wq_values", null, null, new DataItem[] { valueItem }); 153 "wq_values", null, null, new DataItem[] { valueItem });
64 154
65 return new Data[] { mode, values }; 155 return values;
156 }
157
158
159 protected String createValueString(String key, double[] values) {
160 StringBuilder sb = new StringBuilder();
161
162 boolean first = true;
163
164 for (double value: values) {
165 if (!first) {
166 sb.append(",");
167 }
168
169 sb.append(Double.toString(value));
170
171 first = false;
172 }
173
174 return key + ";" + sb.toString();
66 } 175 }
67 176
68 177
69 public void onChange(ChangeEvent event) { 178 public void onChange(ChangeEvent event) {
70 // TODO IMPLEMENT ME 179 // TODO IMPLEMENT ME
71 } 180 }
72 181
73 182
74 public void onBlur(BlurEvent event) { 183 public void onBlur(BlurEvent event) {
75 // TODO IMPLEMENT ME 184 DoubleArrayPanel dap = (DoubleArrayPanel) event.getForm();
185 dap.validateForm(event.getItem());
76 } 186 }
77 } 187 }
78 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : 188 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org