Mercurial > dive4elements > river
comparison gwt-client/src/main/java/org/dive4elements/river/client/client/ui/minfo/SedLoadDistancePanel.java @ 9175:34dc0163ad2d
DistancePanel Berechnungsstrecke->Darstellungsbereich Refactoring
author | gernotbelger |
---|---|
date | Mon, 25 Jun 2018 17:58:11 +0200 |
parents | 5e38e2924c07 |
children |
comparison
equal
deleted
inserted
replaced
9174:06bb3e94a927 | 9175:34dc0163ad2d |
---|---|
7 */ | 7 */ |
8 | 8 |
9 package org.dive4elements.river.client.client.ui.minfo; | 9 package org.dive4elements.river.client.client.ui.minfo; |
10 | 10 |
11 import java.util.List; | 11 import java.util.List; |
12 | |
13 import com.smartgwt.client.data.Record; | |
14 import com.smartgwt.client.util.SC; | |
15 import com.smartgwt.client.widgets.Canvas; | |
16 import com.smartgwt.client.widgets.Label; | |
17 import com.smartgwt.client.widgets.form.fields.events.BlurEvent; | |
18 import com.smartgwt.client.widgets.form.fields.events.BlurHandler; | |
19 import com.smartgwt.client.widgets.grid.events.CellClickEvent; | |
20 import com.smartgwt.client.widgets.grid.events.CellClickHandler; | |
21 import com.smartgwt.client.widgets.layout.HLayout; | |
22 import com.smartgwt.client.widgets.layout.VLayout; | |
23 | 12 |
24 import org.dive4elements.river.client.client.Config; | 13 import org.dive4elements.river.client.client.Config; |
25 import org.dive4elements.river.client.client.ui.AbstractUIProvider; | 14 import org.dive4elements.river.client.client.ui.AbstractUIProvider; |
26 import org.dive4elements.river.client.client.ui.DoubleRangeOnlyPanel; | 15 import org.dive4elements.river.client.client.ui.DoubleRangeOnlyPanel; |
27 import org.dive4elements.river.client.client.ui.DoubleRangePanel; | 16 import org.dive4elements.river.client.client.ui.DoubleRangePanel; |
32 import org.dive4elements.river.client.shared.model.DataItem; | 21 import org.dive4elements.river.client.shared.model.DataItem; |
33 import org.dive4elements.river.client.shared.model.DataList; | 22 import org.dive4elements.river.client.shared.model.DataList; |
34 import org.dive4elements.river.client.shared.model.DefaultData; | 23 import org.dive4elements.river.client.shared.model.DefaultData; |
35 import org.dive4elements.river.client.shared.model.DefaultDataItem; | 24 import org.dive4elements.river.client.shared.model.DefaultDataItem; |
36 | 25 |
37 | 26 import com.smartgwt.client.data.Record; |
38 public class SedLoadDistancePanel | 27 import com.smartgwt.client.util.SC; |
39 extends AbstractUIProvider | 28 import com.smartgwt.client.widgets.Canvas; |
40 implements BlurHandler, CellClickHandler | 29 import com.smartgwt.client.widgets.Label; |
41 { | 30 import com.smartgwt.client.widgets.form.fields.events.BlurEvent; |
31 import com.smartgwt.client.widgets.form.fields.events.BlurHandler; | |
32 import com.smartgwt.client.widgets.grid.events.CellClickEvent; | |
33 import com.smartgwt.client.widgets.grid.events.CellClickHandler; | |
34 import com.smartgwt.client.widgets.layout.HLayout; | |
35 import com.smartgwt.client.widgets.layout.VLayout; | |
36 | |
37 public class SedLoadDistancePanel extends AbstractUIProvider implements BlurHandler, CellClickHandler { | |
42 public static final String FIELD_LOWER = "ld_from"; | 38 public static final String FIELD_LOWER = "ld_from"; |
43 public static final String FIELD_UPPER = "ld_to"; | 39 public static final String FIELD_UPPER = "ld_to"; |
44 | 40 |
45 protected DoubleRangePanel distancePanel; | 41 protected DoubleRangePanel distancePanel; |
46 protected double min; | 42 protected double min; |
47 protected double max; | 43 protected double max; |
48 protected LocationPicker picker; | 44 protected LocationPicker picker; |
49 | 45 |
50 @Override | 46 @Override |
51 public Canvas createOld(DataList dataList) { | 47 public Canvas createOld(final DataList dataList) { |
52 String s = getOldSelectionString(dataList); | 48 final String s = getOldSelectionString(dataList); |
53 String l = dataList.getLabel(); | 49 final String l = dataList.getLabel(); |
54 | 50 |
55 Label label = new Label(l); | 51 final Label label = new Label(l); |
56 Label selected = new Label(s); | 52 final Label selected = new Label(s); |
57 | 53 |
58 HLayout layout = new HLayout(); | 54 final HLayout layout = new HLayout(); |
59 | 55 |
60 layout.setWidth(400); | 56 layout.setWidth(400); |
61 label.setWidth(200); | 57 label.setWidth(200); |
62 selected.setWidth(130); | 58 selected.setWidth(130); |
63 | 59 |
66 layout.addMember(getBackButton(dataList.getState())); | 62 layout.addMember(getBackButton(dataList.getState())); |
67 | 63 |
68 return layout; | 64 return layout; |
69 } | 65 } |
70 | 66 |
71 protected String getOldSelectionString(DataList dataList) { | 67 protected String getOldSelectionString(final DataList dataList) { |
72 List<Data> items = dataList.getAll(); | 68 final List<Data> items = dataList.getAll(); |
73 | 69 |
74 Data dFrom = getData(items, FIELD_LOWER); | 70 final Data dFrom = getData(items, FIELD_LOWER); |
75 Data dTo = getData(items, FIELD_UPPER); | 71 final Data dTo = getData(items, FIELD_UPPER); |
76 | 72 |
77 DataItem[] from = dFrom.getItems(); | 73 final DataItem[] from = dFrom.getItems(); |
78 DataItem[] to = dTo.getItems(); | 74 final DataItem[] to = dTo.getItems(); |
79 | 75 |
80 StringBuilder sb = new StringBuilder(); | 76 final StringBuilder sb = new StringBuilder(); |
81 sb.append(from[0].getLabel()); | 77 sb.append(from[0].getLabel()); |
82 sb.append(" " + MSG.dpUnitFrom() + " - "); | 78 sb.append(" " + this.MSG.dpUnitFrom() + " - "); |
83 sb.append(to[0].getLabel()); | 79 sb.append(to[0].getLabel()); |
84 sb.append(" " + MSG.dpUnitTo()); | 80 sb.append(" " + this.MSG.dpUnitTo()); |
85 | 81 |
86 return sb.toString(); | 82 return sb.toString(); |
87 } | 83 } |
88 | 84 |
89 @Override | 85 @Override |
90 public Canvas create(DataList data) { | 86 public Canvas create(final DataList data) { |
91 picker = new LocationPicker(this); | 87 this.picker = new LocationPicker(this); |
92 distancePanel = new DoubleRangeOnlyPanel( | 88 this.distancePanel = new DoubleRangeOnlyPanel(this.MSG.dpUnitFrom() + " - ", this.MSG.dpUnitTo(), 0d, 0d, 250, this, "right"); |
93 MSG.dpUnitFrom() + " - ", | 89 final VLayout layout = new VLayout(); |
94 MSG.dpUnitTo(), 0d, 0d, 250, this, "right"); | |
95 VLayout layout = new VLayout(); | |
96 layout.setMembersMargin(10); | 90 layout.setMembersMargin(10); |
97 | 91 |
98 Label label = new Label(MSG.distance_state()); | 92 final Label label = getLabel(data); |
99 | 93 |
100 Canvas submit = getNextButton(); | 94 final Canvas submit = getNextButton(); |
101 | 95 |
102 label.setHeight(25); | 96 label.setHeight(25); |
103 distancePanel.setHeight(50); | 97 this.distancePanel.setHeight(50); |
104 | 98 |
105 layout.addMember(label); | 99 layout.addMember(label); |
106 layout.addMember(distancePanel); | 100 layout.addMember(this.distancePanel); |
107 layout.addMember(submit); | 101 layout.addMember(submit); |
108 | 102 |
109 initMinMaxValues(data); | 103 initMinMaxValues(data); |
110 initDefaultValues(data); | 104 initDefaultValues(data); |
111 | 105 |
112 | 106 this.picker.setIsDistance(true); |
113 picker.setIsDistance(true); | 107 this.picker.getLocationTable().setAutoFetchData(true); |
114 picker.getLocationTable().setAutoFetchData(true); | 108 this.picker.prepareFilter(); |
115 picker.prepareFilter(); | 109 |
116 | 110 this.helperContainer.addMember(this.picker.getLocationTable()); |
117 helperContainer.addMember(picker.getLocationTable()); | 111 this.helperContainer.addMember(this.picker.getFilterLayout()); |
118 helperContainer.addMember(picker.getFilterLayout()); | 112 this.helperContainer.addMember(this.picker.getResultCountForm()); |
119 helperContainer.addMember(picker.getResultCountForm()); | |
120 | 113 |
121 setPickerDataSource(); | 114 setPickerDataSource(); |
122 picker.createLocationTable(); | 115 this.picker.createLocationTable(); |
123 | 116 |
124 return layout; | 117 return layout; |
125 } | 118 } |
126 | 119 |
127 protected void initMinMaxValues(DataList data) { | 120 protected void initMinMaxValues(final DataList data) { |
128 Data f = getData(data.getAll(), FIELD_LOWER); | 121 final Data f = getData(data.getAll(), FIELD_LOWER); |
129 Data t = getData(data.getAll(), FIELD_UPPER); | 122 final Data t = getData(data.getAll(), FIELD_UPPER); |
130 | 123 |
131 DataItem[] fItems = f.getItems(); | 124 final DataItem[] fItems = f.getItems(); |
132 DataItem[] tItems = t.getItems(); | 125 final DataItem[] tItems = t.getItems(); |
133 | 126 |
134 try { | 127 try { |
135 min = Double.valueOf(fItems[0].getStringValue()); | 128 this.min = Double.valueOf(fItems[0].getStringValue()); |
136 max = Double.valueOf(tItems[0].getStringValue()); | 129 this.max = Double.valueOf(tItems[0].getStringValue()); |
137 } | 130 } |
138 catch (NumberFormatException nfe) { | 131 catch (final NumberFormatException nfe) { |
139 min = -Double.MAX_VALUE; | 132 this.min = -Double.MAX_VALUE; |
140 max = Double.MAX_VALUE; | 133 this.max = Double.MAX_VALUE; |
141 } | 134 } |
142 } | 135 } |
143 | 136 |
144 protected void initDefaultValues(DataList data) { | 137 protected void initDefaultValues(final DataList data) { |
145 initDefaultFrom(data); | 138 initDefaultFrom(data); |
146 initDefaultTo(data); | 139 initDefaultTo(data); |
147 } | 140 } |
148 | 141 |
149 protected void initDefaultFrom(DataList data) { | 142 private Label getLabel(final DataList data) { |
150 Data f = getData(data.getAll(), FIELD_LOWER); | 143 final Data item = data.get(0); |
144 // if (data.getState().contains("uinfo")) { // "Wahl der Berechnungsstrecke/des Darstellungsbereichs" (server) vs. | |
145 // "Berechnungsstrecke wählen" (client) | |
146 return new Label(item.getDescription()); // holt das Label vom Server (funktoniert schon sehr oft so!) | |
147 // } | |
148 // return new Label(getLabel()); // holt das Label aus den Flys-Constants.. | |
149 } | |
150 | |
151 protected void initDefaultFrom(final DataList data) { | |
152 final Data f = getData(data.getAll(), FIELD_LOWER); | |
151 | 153 |
152 double from = getDefaultFrom(); | 154 double from = getDefaultFrom(); |
153 | 155 |
154 try { | 156 try { |
155 from = getDefaultValue(f); | 157 from = getDefaultValue(f); |
156 } | 158 } |
157 catch (NumberFormatException nfe) { | 159 catch (final NumberFormatException nfe) { |
158 // do nothing | 160 // do nothing |
159 } | 161 } |
160 | 162 |
161 distancePanel.setFrom(from); | 163 this.distancePanel.setFrom(from); |
162 } | 164 } |
163 | |
164 | 165 |
165 protected double getDefaultFrom() { | 166 protected double getDefaultFrom() { |
166 return min; | 167 return this.min; |
167 } | 168 } |
168 | 169 |
169 | 170 protected void initDefaultTo(final DataList data) { |
170 protected void initDefaultTo(DataList data) { | 171 final Data t = getData(data.getAll(), FIELD_UPPER); |
171 Data t = getData(data.getAll(), FIELD_UPPER); | |
172 | 172 |
173 double to = getDefaultTo(); | 173 double to = getDefaultTo(); |
174 | 174 |
175 try { | 175 try { |
176 to = getDefaultValue(t); | 176 to = getDefaultValue(t); |
177 } | 177 } |
178 catch (NumberFormatException nfe) { | 178 catch (final NumberFormatException nfe) { |
179 // do nothing | 179 // do nothing |
180 } | 180 } |
181 | 181 |
182 distancePanel.setTo(to); | 182 this.distancePanel.setTo(to); |
183 } | 183 } |
184 | |
185 | 184 |
186 protected double getDefaultTo() { | 185 protected double getDefaultTo() { |
187 return max; | 186 return this.max; |
188 } | 187 } |
189 | 188 |
190 protected double getDefaultValue(Data data) | 189 protected double getDefaultValue(final Data data) throws NumberFormatException { |
191 throws NumberFormatException | 190 final DataItem def = data.getDefault(); |
192 { | 191 final String defValue = def != null ? def.getStringValue() : null; |
193 DataItem def = data.getDefault(); | |
194 String defValue = def != null ? def.getStringValue() : null; | |
195 | 192 |
196 return Double.valueOf(defValue); | 193 return Double.valueOf(defValue); |
197 } | 194 } |
198 | 195 |
199 /** Hook service to the listgrid with possible input values. */ | 196 /** Hook service to the listgrid with possible input values. */ |
200 protected void setPickerDataSource() { | 197 protected void setPickerDataSource() { |
201 Config config = Config.getInstance(); | 198 final Config config = Config.getInstance(); |
202 String url = config.getServerUrl(); | 199 final String url = config.getServerUrl(); |
203 String river = ""; | 200 String river = ""; |
204 | 201 |
205 ArtifactDescription adescr = artifact.getArtifactDescription(); | 202 final ArtifactDescription adescr = this.artifact.getArtifactDescription(); |
206 DataList[] data = adescr.getOldData(); | 203 final DataList[] data = adescr.getOldData(); |
207 | 204 |
208 // Try to find a "river" data item to set the source for the | 205 // Try to find a "river" data item to set the source for the |
209 // list grid. | 206 // list grid. |
210 String dataFilter = "locations"; | 207 String dataFilter = "locations"; |
211 if (data != null && data.length > 0) { | 208 if (data != null && data.length > 0) { |
212 for (int i = 0; i < data.length; i++) { | 209 for (final DataList dl : data) { |
213 DataList dl = data[i]; | |
214 if (dl.getState().equals("state.minfo.river")) { | 210 if (dl.getState().equals("state.minfo.river")) { |
215 dataFilter = "measuringpoint"; | 211 dataFilter = "measuringpoint"; |
216 } | 212 } |
217 if (dl.getState().equals("state.winfo.river") || | 213 if (dl.getState().equals("state.winfo.river") || dl.getState().equals("state.chart.river") || dl.getState().equals("state.minfo.river")) { |
218 dl.getState().equals("state.chart.river") || | |
219 dl.getState().equals("state.minfo.river")) { | |
220 for (int j = 0; j < dl.size(); j++) { | 214 for (int j = 0; j < dl.size(); j++) { |
221 Data d = dl.get(j); | 215 final Data d = dl.get(j); |
222 DataItem[] di = d.getItems(); | 216 final DataItem[] di = d.getItems(); |
223 if (di != null && di.length == 1) { | 217 if (di != null && di.length == 1) { |
224 river = d.getItems()[0].getStringValue(); | 218 river = d.getItems()[0].getStringValue(); |
225 break; | 219 break; |
226 } | 220 } |
227 } | 221 } |
228 } | 222 } |
229 } | 223 } |
230 } | 224 } |
231 | 225 |
232 picker.getLocationTable().setDataSource(new DistanceInfoDataSource( | 226 this.picker.getLocationTable().setDataSource(new DistanceInfoDataSource(url, river, dataFilter)); |
233 url, river, dataFilter)); | |
234 } | 227 } |
235 | 228 |
236 @Override | 229 @Override |
237 protected Data[] getData() { | 230 protected Data[] getData() { |
238 Data[] data = new Data[2]; | 231 final Data[] data = new Data[2]; |
239 | 232 |
240 data[0] = getDataFrom(); | 233 data[0] = getDataFrom(); |
241 data[1] = getDataTo(); | 234 data[1] = getDataTo(); |
242 | 235 |
243 return data; | 236 return data; |
244 } | 237 } |
245 | 238 |
246 protected Data getDataFrom() { | 239 protected Data getDataFrom() { |
247 String value = String.valueOf(distancePanel.getFrom()); | 240 final String value = String.valueOf(this.distancePanel.getFrom()); |
248 String field = FIELD_LOWER; | 241 final String field = FIELD_LOWER; |
249 | 242 |
250 DataItem item = new DefaultDataItem(field, field, value); | 243 final DataItem item = new DefaultDataItem(field, field, value); |
251 return new DefaultData( | 244 return new DefaultData(field, null, null, new DataItem[] { item }); |
252 field, null, null, new DataItem[] { item }); | |
253 } | 245 } |
254 | 246 |
255 protected Data getDataTo() { | 247 protected Data getDataTo() { |
256 String value = String.valueOf(distancePanel.getTo()); | 248 final String value = String.valueOf(this.distancePanel.getTo()); |
257 String field = FIELD_UPPER; | 249 final String field = FIELD_UPPER; |
258 | 250 |
259 DataItem item = new DefaultDataItem(field, field, value); | 251 final DataItem item = new DefaultDataItem(field, field, value); |
260 return new DefaultData( | 252 return new DefaultData(field, null, null, new DataItem[] { item }); |
261 field, null, null, new DataItem[] { item }); | 253 } |
262 } | 254 |
263 | 255 @Override |
264 @Override | 256 public void onBlur(final BlurEvent event) { |
265 public void onBlur(BlurEvent event) { | 257 this.distancePanel.validateForm(); |
266 distancePanel.validateForm(); | 258 } |
267 } | 259 |
268 | 260 @Override |
269 @Override | 261 public void onCellClick(final CellClickEvent e) { |
270 public void onCellClick(CellClickEvent e) { | 262 final Record record = e.getRecord(); |
271 Record record = e.getRecord(); | 263 final int ndx = e.getColNum(); |
272 int ndx = e.getColNum(); | 264 final String from = record.getAttribute("from"); |
273 String from = record.getAttribute("from"); | 265 try { |
274 try { | 266 final double value = Double.valueOf(from); |
275 double value = Double.valueOf(from); | |
276 switch (ndx) { | 267 switch (ndx) { |
277 case 0: distancePanel.setFrom(value); break; | 268 case 0: |
278 case 1: distancePanel.setTo(value); break; | 269 this.distancePanel.setFrom(value); |
270 break; | |
271 case 1: | |
272 this.distancePanel.setTo(value); | |
273 break; | |
279 } | 274 } |
280 } | 275 } |
281 catch(NumberFormatException nfe) { | 276 catch (final NumberFormatException nfe) { |
282 SC.warn(MSG.wrongFormat()); | 277 SC.warn(this.MSG.wrongFormat()); |
283 } | 278 } |
284 } | 279 } |
280 | |
285 } | 281 } |