comparison gwt-client/src/main/java/org/dive4elements/river/client/client/ui/fixation/FixLocationPanel.java @ 9099:850ce16034e9

2.3.4.1.10 Berechnung mit Start-km > End-km
author gernotbelger
date Mon, 28 May 2018 13:22:45 +0200
parents 5e38e2924c07
children 6c24c857ccf9
comparison
equal deleted inserted replaced
9098:32dd7e761e4e 9099:850ce16034e9
6 * documentation coming with Dive4Elements River for details. 6 * documentation coming with Dive4Elements River for details.
7 */ 7 */
8 8
9 package org.dive4elements.river.client.client.ui.fixation; 9 package org.dive4elements.river.client.client.ui.fixation;
10 10
11 import java.util.ArrayList;
11 import java.util.List; 12 import java.util.List;
12 import java.util.ArrayList;
13
14 import com.google.gwt.core.client.GWT;
15
16 import com.smartgwt.client.widgets.Canvas;
17 import com.smartgwt.client.widgets.Label;
18
19 import com.smartgwt.client.widgets.layout.HLayout;
20 import com.smartgwt.client.widgets.layout.VLayout;
21
22 import com.smartgwt.client.widgets.form.fields.FormItem;
23 import com.smartgwt.client.widgets.form.fields.events.BlurHandler;
24 import com.smartgwt.client.widgets.form.fields.events.BlurEvent;
25 13
26 import org.dive4elements.river.client.client.FLYSConstants; 14 import org.dive4elements.river.client.client.FLYSConstants;
27 import org.dive4elements.river.client.client.ui.DoubleRangePanel; 15 import org.dive4elements.river.client.client.ui.DoubleRangePanel;
28
29 import org.dive4elements.river.client.shared.model.Data; 16 import org.dive4elements.river.client.shared.model.Data;
30 import org.dive4elements.river.client.shared.model.DataItem; 17 import org.dive4elements.river.client.shared.model.DataItem;
31 import org.dive4elements.river.client.shared.model.DataList; 18 import org.dive4elements.river.client.shared.model.DataList;
32 import org.dive4elements.river.client.shared.model.DefaultData; 19 import org.dive4elements.river.client.shared.model.DefaultData;
33 import org.dive4elements.river.client.shared.model.DefaultDataItem; 20 import org.dive4elements.river.client.shared.model.DefaultDataItem;
21
22 import com.google.gwt.core.client.GWT;
23 import com.smartgwt.client.widgets.Canvas;
24 import com.smartgwt.client.widgets.Label;
25 import com.smartgwt.client.widgets.form.fields.FormItem;
26 import com.smartgwt.client.widgets.form.fields.events.BlurEvent;
27 import com.smartgwt.client.widgets.form.fields.events.BlurHandler;
28 import com.smartgwt.client.widgets.layout.HLayout;
29 import com.smartgwt.client.widgets.layout.VLayout;
30
34 /** 31 /**
35 * This UIProvider creates a panel for location or distance input. 32 * This UIProvider creates a panel for location or distance input.
36 * 33 *
37 * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> 34 * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a>
38 */ 35 */
39 public class FixLocationPanel 36 public class FixLocationPanel extends FixationPanel implements BlurHandler {
40 extends FixationPanel
41 implements BlurHandler
42 {
43 /** The message class that provides i18n strings. */ 37 /** The message class that provides i18n strings. */
44 protected FLYSConstants MESSAGES = GWT.create(FLYSConstants.class); 38 protected FLYSConstants MESSAGES = GWT.create(FLYSConstants.class);
45 39
46 /** The constant name of the input field to enter locations.*/ 40 /** The constant name of the input field to enter locations. */
47 public static final String FIELD_VALUE_LOCATION = "location"; 41 public static final String FIELD_VALUE_LOCATION = "location";
48 42
49 /** The constant name of the input field to enter distance.*/ 43 /** The constant name of the input field to enter distance. */
50 public static final String FIELD_VALUE_DISTANCE = "distance"; 44 public static final String FIELD_VALUE_DISTANCE = "distance";
51 45
52 DoubleRangePanel inputPanel; 46 DoubleRangePanel inputPanel;
53 47
54 double from; 48 double from;
55 double to; 49 double to;
56 double step; 50 double step;
57 51
58 public FixLocationPanel() { 52 public FixLocationPanel() {
59 htmlOverview = ""; 53 this.htmlOverview = "";
60 } 54 }
61 55
62 public Canvas createWidget(DataList data) { 56 @Override
57 public Canvas createWidget(final DataList data) {
63 instances.put(this.artifact.getUuid(), this); 58 instances.put(this.artifact.getUuid(), this);
64 59
65 VLayout layout = new VLayout(); 60 final VLayout layout = new VLayout();
66 61
67 Canvas title = new Label(MESSAGES.distance()); 62 final Canvas title = new Label(this.MESSAGES.distance());
68 title.setHeight("25px"); 63 title.setHeight("25px");
69 64
70 inputPanel = new DoubleRangePanel( 65 this.inputPanel = new DoubleRangePanel(this.MESSAGES.unitFrom(), this.MESSAGES.unitTo(), this.MESSAGES.unitWidth(), 0d, 0d, 0d, 240, this);
71 MESSAGES.unitFrom(),
72 MESSAGES.unitTo(),
73 MESSAGES.unitWidth(),
74 0d,
75 0d,
76 0d,
77 240,
78 this);
79 66
80 layout.addMember(title); 67 layout.addMember(title);
81 layout.addMember(inputPanel); 68 layout.addMember(this.inputPanel);
82 return layout; 69 return layout;
83 } 70 }
84 71
85 @Override 72 @Override
86 public Canvas createOld(DataList dataList) { 73 public Canvas createOld(final DataList dataList) {
87 List<Data> items = dataList.getAll(); 74 final List<Data> items = dataList.getAll();
88 75
89 Data f = getData(items, "ld_from"); 76 final Data f = getData(items, "ld_from");
90 Data t = getData(items, "ld_to"); 77 final Data t = getData(items, "ld_to");
91 Data s = getData(items, "ld_step"); 78 final Data s = getData(items, "ld_step");
92 DataItem[] fItems = f.getItems(); 79 final DataItem[] fItems = f.getItems();
93 DataItem[] tItems = t.getItems(); 80 final DataItem[] tItems = t.getItems();
94 DataItem[] sItems = s.getItems(); 81 final DataItem[] sItems = s.getItems();
95 82
96 StringBuilder sb = new StringBuilder(); 83 final StringBuilder sb = new StringBuilder();
97 sb.append(fItems[0].getLabel()); 84 sb.append(fItems[0].getLabel());
98 sb.append(" " + MESSAGES.unitFrom() + " "); 85 sb.append(" " + this.MESSAGES.unitFrom() + " ");
99 sb.append(tItems[0].getLabel()); 86 sb.append(tItems[0].getLabel());
100 sb.append(" " + MESSAGES.unitTo() + " "); 87 sb.append(" " + this.MESSAGES.unitTo() + " ");
101 sb.append(sItems[0].getLabel()); 88 sb.append(sItems[0].getLabel());
102 sb.append(" " + MESSAGES.unitWidth()); 89 sb.append(" " + this.MESSAGES.unitWidth());
103 90
104 Label old = new Label(sb.toString()); 91 final Label old = new Label(sb.toString());
105 old.setWidth(130); 92 old.setWidth(130);
106 93
107 HLayout layout = new HLayout(); 94 final HLayout layout = new HLayout();
108 layout.setWidth("400px"); 95 layout.setWidth("400px");
109 96
110 Label label = new Label(dataList.getLabel()); 97 final Label label = new Label(dataList.getLabel());
111 label.setWidth("200px"); 98 label.setWidth("200px");
112 99
113 Canvas back = getBackButton(dataList.getState()); 100 final Canvas back = getBackButton(dataList.getState());
114 101
115 layout.addMember(label); 102 layout.addMember(label);
116 layout.addMember(old); 103 layout.addMember(old);
117 layout.addMember(back); 104 layout.addMember(back);
118 105
119 return layout; 106 return layout;
120 } 107 }
121 108
122
123 /** 109 /**
124 * This method returns the selected data. 110 * This method returns the selected data.
125 * 111 *
126 * @return the selected/inserted data. 112 * @return the selected/inserted data.
127 */ 113 */
114 @Override
128 public Data[] getData() { 115 public Data[] getData() {
129 List<Data> data = new ArrayList<Data>(); 116 final List<Data> data = new ArrayList<Data>();
130 117
131 boolean valid = saveRangeValues(inputPanel); 118 final boolean valid = saveRangeValues(this.inputPanel);
132 if (valid) { 119 if (valid) {
133 String f = Double.valueOf(this.from).toString(); 120 final String f = Double.valueOf(this.from).toString();
134 String t = Double.valueOf(this.to).toString(); 121 final String t = Double.valueOf(this.to).toString();
135 String s = Double.valueOf(this.step).toString(); 122 final String s = Double.valueOf(this.step).toString();
136 DataItem fi = new DefaultDataItem("ld_from", "ld_from", f); 123 final DataItem fi = new DefaultDataItem("ld_from", "ld_from", f);
137 DataItem ti = new DefaultDataItem("ld_to", "ld_to", t); 124 final DataItem ti = new DefaultDataItem("ld_to", "ld_to", t);
138 DataItem si = new DefaultDataItem("ld_step", "ld_step", s); 125 final DataItem si = new DefaultDataItem("ld_step", "ld_step", s);
139 data.add(new DefaultData( 126 data.add(new DefaultData("ld_from", null, null, new DataItem[] { fi }));
140 "ld_from", null, null, new DataItem[]{ fi })); 127 data.add(new DefaultData("ld_to", null, null, new DataItem[] { ti }));
141 data.add(new DefaultData( 128 data.add(new DefaultData("ld_step", null, null, new DataItem[] { si }));
142 "ld_to", null, null, new DataItem[]{ ti }));
143 data.add(new DefaultData(
144 "ld_step", null, null, new DataItem[]{ si }));
145 } 129 }
146 // what else? 130 // what else?
147 return data.toArray(new Data[data.size()]); 131 return data.toArray(new Data[data.size()]);
148 } 132 }
149 133
134 protected boolean saveRangeValues(final DoubleRangePanel p) {
135 final FormItem[] items = p.getFields();
136 final boolean valid = p.validateForm();
150 137
151 protected boolean saveRangeValues(DoubleRangePanel p) { 138 if (valid) {
152 FormItem[] items = p.getFields();
153 boolean valid = p.validateForm();
154
155 if(valid) {
156 this.from = p.getFrom(); 139 this.from = p.getFrom();
157 this.to = p.getTo(); 140 this.to = p.getTo();
158 this.step = p.getStep(); 141 this.step = p.getStep();
159 } 142 }
160 return valid; 143 return valid;
161 } 144 }
162 145
163
164 @Override 146 @Override
165 public void setValues(String cid, boolean checked) { 147 public void setValues(final String cid, final boolean checked) {
166 // No user interaction, do nothing. 148 // No user interaction, do nothing.
167 } 149 }
168
169 150
170 @Override 151 @Override
171 public boolean renderCheckboxes() { 152 public boolean renderCheckboxes() {
172 // No selection, return false. 153 // No selection, return false.
173 return false; 154 return false;
174 } 155 }
175 156
176 157 @Override
177 public void success() { 158 public void success() {
178 inputPanel.setValues(fixInfo.getFrom(), fixInfo.getTo(), 100d); 159 this.inputPanel.setValues(this.fixInfo.getLowerKm(), // TODO: check if revert makes sense
160 this.fixInfo.getUpperKm(), 100d);
179 } 161 }
180 162
181 /** 163 /**
182 * This method is used to validate the inserted data in the form fields. 164 * This method is used to validate the inserted data in the form fields.
183 * 165 *
184 * @param event The BlurEvent that gives information about the FormItem that 166 * @param event
185 * has been modified and its value. 167 * The BlurEvent that gives information about the FormItem that
168 * has been modified and its value.
186 */ 169 */
187 public void onBlur(BlurEvent event) { 170 @Override
188 FormItem item = event.getItem(); 171 public void onBlur(final BlurEvent event) {
189 String field = item.getFieldName(); 172 final FormItem item = event.getItem();
173 final String field = item.getFieldName();
190 174
191 if (field == null) { 175 if (field == null) {
192 return; 176 return;
193 } 177 }
194 DoubleRangePanel p = (DoubleRangePanel) event.getForm(); 178 final DoubleRangePanel p = (DoubleRangePanel) event.getForm();
195 } 179 }
196 180
197 181 public void dumpGWT(final String cid) {
198 public void dumpGWT(String cid) {
199 GWT.log("Setting values for cId: " + cid); 182 GWT.log("Setting values for cId: " + cid);
200 GWT.log("River: " + fixInfo.getRiver()); 183 GWT.log("River: " + this.fixInfo.getRiver());
201 GWT.log("Date: " + fixInfo.getEventByCId(cid).getDate()); 184 GWT.log("Date: " + this.fixInfo.getEventByCId(cid).getDate());
202 GWT.log("Name: " + fixInfo.getEventByCId(cid).getDescription()); 185 GWT.log("Name: " + this.fixInfo.getEventByCId(cid).getDescription());
203 } 186 }
204 } 187 }

http://dive4elements.wald.intevation.org