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 }

http://dive4elements.wald.intevation.org