Mercurial > dive4elements > river
comparison gwt-client/src/main/java/org/dive4elements/river/client/client/ui/uinfo/VegetationzonesTableEditPanel.java @ 9066:b5d7a9d79837
uinfo.inundation_duration ui
author | gernotbelger |
---|---|
date | Fri, 11 May 2018 17:04:35 +0200 |
parents | gwt-client/src/main/java/org/dive4elements/river/client/client/ui/uinfo/VegetationzonesTable.java@28c50f5efceb |
children | a5cf8d7bff3c |
comparison
equal
deleted
inserted
replaced
9065:58af9b81a97b | 9066:b5d7a9d79837 |
---|---|
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde | |
2 * Software engineering by Intevation GmbH | |
3 * | |
4 * This file is Free Software under the GNU AGPL (>=v3) | |
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the | |
6 * documentation coming with Dive4Elements River for details. | |
7 */ | |
8 | |
9 package org.dive4elements.river.client.client.ui.uinfo; | |
10 | |
11 import java.util.ArrayList; | |
12 import java.util.List; | |
13 | |
14 import org.dive4elements.river.client.client.ui.AbstractUIProvider; | |
15 import org.dive4elements.river.client.client.ui.PanelHelper; | |
16 import org.dive4elements.river.client.shared.model.Data; | |
17 import org.dive4elements.river.client.shared.model.DataItem; | |
18 import org.dive4elements.river.client.shared.model.DataList; | |
19 import org.dive4elements.river.client.shared.model.DefaultData; | |
20 import org.dive4elements.river.client.shared.model.DefaultDataItem; | |
21 | |
22 import com.google.gwt.core.client.GWT; | |
23 import com.smartgwt.client.data.Record; | |
24 import com.smartgwt.client.types.ListGridFieldType; | |
25 import com.smartgwt.client.widgets.Button; | |
26 import com.smartgwt.client.widgets.Canvas; | |
27 import com.smartgwt.client.widgets.Label; | |
28 import com.smartgwt.client.widgets.events.ClickEvent; | |
29 import com.smartgwt.client.widgets.events.ClickHandler; | |
30 import com.smartgwt.client.widgets.form.DynamicForm; | |
31 import com.smartgwt.client.widgets.form.fields.TextItem; | |
32 import com.smartgwt.client.widgets.form.validator.IsIntegerValidator; | |
33 import com.smartgwt.client.widgets.form.validator.IsStringValidator; | |
34 import com.smartgwt.client.widgets.grid.ListGrid; | |
35 import com.smartgwt.client.widgets.grid.ListGridField; | |
36 import com.smartgwt.client.widgets.grid.ListGridRecord; | |
37 import com.smartgwt.client.widgets.grid.events.RecordClickEvent; | |
38 import com.smartgwt.client.widgets.grid.events.RecordClickHandler; | |
39 import com.smartgwt.client.widgets.layout.HLayout; | |
40 import com.smartgwt.client.widgets.layout.VLayout; | |
41 | |
42 public class VegetationzonesTableEditPanel extends AbstractUIProvider { | |
43 private static final long serialVersionUID = 1L; | |
44 | |
45 protected ListGrid elements; | |
46 private TextItem vegzone; | |
47 private TextItem start; | |
48 private TextItem end; | |
49 private ListGrid table; | |
50 | |
51 private static final String datakey = "vegzones"; | |
52 | |
53 public Canvas createWidget(final DataList data) { | |
54 | |
55 final VLayout root = new VLayout(); | |
56 final HLayout input = new HLayout(); | |
57 final VLayout tableLayout = new VLayout(); | |
58 final HLayout fields = new HLayout(); | |
59 final HLayout fields2 = new HLayout(); | |
60 | |
61 final Button add = new Button(this.MSG.add_date()); // TODO: make key more generic or change to more specific | |
62 this.elements = new ListGrid(); | |
63 | |
64 final Label title = new Label(data.get(0).getDescription()); | |
65 title.setHeight("35px"); // orig:25 | |
66 | |
67 this.vegzone = PanelHelper.createItem("uinfo_vegetation_zone_label", this.MSG.uinfo_vegetation_zone_label(), 200, new IsStringValidator()); | |
68 this.start = PanelHelper.createItem("uinfo_vegetation_zones_from", this.MSG.uinfo_vegetation_zones_from(), 40, new IsIntegerValidator()); | |
69 this.end = PanelHelper.createItem("uinfo_vegetation_zones_to", this.MSG.uinfo_vegetation_zones_to(), 40, new IsIntegerValidator()); | |
70 | |
71 final DynamicForm form1 = new DynamicForm(); | |
72 final DynamicForm form2 = new DynamicForm(); | |
73 form2.setNumCols(5); | |
74 form1.setNumCols(7); | |
75 form1.setFields(this.vegzone); | |
76 form2.setFields(this.start, this.end); | |
77 | |
78 add.addClickHandler(new ClickHandler() { | |
79 @Override | |
80 public void onClick(final ClickEvent ce) { | |
81 final String v1 = VegetationzonesTableEditPanel.this.start.getValueAsString(); | |
82 final String v2 = VegetationzonesTableEditPanel.this.end.getValueAsString(); | |
83 final String v3 = VegetationzonesTableEditPanel.this.vegzone.getValueAsString(); | |
84 if (v1 == null || v2 == null || v3 == null) { | |
85 return; | |
86 } | |
87 | |
88 final ListGridRecord r = new ListGridRecord(); | |
89 r.setAttribute("vegzone", v3); | |
90 r.setAttribute("from", v1); | |
91 r.setAttribute("to", v2); | |
92 VegetationzonesTableEditPanel.this.elements.addData(r); | |
93 } | |
94 }); | |
95 | |
96 final Label sel = new Label(this.MSG.select()); | |
97 sel.setHeight(25); | |
98 this.elements.setWidth(450); // 185 | |
99 this.elements.setHeight(500); // 120 | |
100 this.elements.setShowHeaderContextMenu(false); | |
101 this.elements.setCanReorderFields(false); | |
102 this.elements.setCanSort(false); | |
103 this.elements.setCanEdit(false); | |
104 final ListGridField vegzone = new ListGridField("vegzone", this.MSG.uinfo_vegetation_zones_label()); | |
105 final ListGridField from = new ListGridField("from", this.MSG.uinfo_vegetation_zones_from()); | |
106 final ListGridField to = new ListGridField("to", this.MSG.uinfo_vegetation_zones_to()); | |
107 vegzone.setWidth(285); | |
108 from.setWidth(70); | |
109 to.setWidth(70); | |
110 | |
111 final ListGridField removeField = new ListGridField("_removeRecord", "Remove Record") { | |
112 { | |
113 setType(ListGridFieldType.ICON); | |
114 setIcon(GWT.getHostPageBaseURL() + VegetationzonesTableEditPanel.this.MSG.removeFeature()); | |
115 setCanEdit(false); | |
116 setCanFilter(false); | |
117 setCanSort(false); | |
118 setCanGroupBy(false); | |
119 setCanFreeze(false); | |
120 setWidth(25); | |
121 } | |
122 }; | |
123 | |
124 this.elements.addRecordClickHandler(new RecordClickHandler() { | |
125 @Override | |
126 public void onRecordClick(final RecordClickEvent event) { | |
127 // Just handle remove-clicks | |
128 if (!event.getField().getName().equals(removeField.getName())) { | |
129 return; | |
130 } | |
131 event.getViewer().removeData(event.getRecord()); | |
132 } | |
133 }); | |
134 | |
135 this.elements.setFields(vegzone, from, to, removeField); | |
136 | |
137 fields.addMember(form1); | |
138 fields2.addMember(form2); | |
139 // fields2.addMember(add); | |
140 | |
141 tableLayout.addMember(this.elements); | |
142 root.addMember(title); | |
143 root.addMember(input); | |
144 root.addMember(tableLayout); | |
145 root.addMember(PanelHelper.getSpacer(10)); | |
146 root.addMember(fields); | |
147 root.addMember(fields2); | |
148 root.addMember(PanelHelper.getSpacer(10)); | |
149 root.addMember(add); | |
150 root.addMember(PanelHelper.getSpacer(20)); | |
151 | |
152 return root; | |
153 } | |
154 | |
155 @Override | |
156 public Canvas createOld(final DataList dataList) { | |
157 final HLayout layout = new HLayout(); | |
158 layout.setWidth("400px"); | |
159 final VLayout vLayout = new VLayout(); | |
160 vLayout.setWidth(130); | |
161 final Label label = new Label(dataList.getLabel()); | |
162 label.setWidth("200px"); | |
163 label.setHeight(25); | |
164 | |
165 final List<Data> items = dataList.getAll(); | |
166 final Data str = getData(items, datakey); | |
167 final DataItem[] strItems = str.getItems(); | |
168 | |
169 final String[] entries = strItems[0].getLabel().split(";"); | |
170 for (final String entry : entries) { | |
171 final String[] vals = entry.split(","); | |
172 final Label dateLabel = new Label(vals[0] + " - " + vals[1]); | |
173 dateLabel.setHeight(20); | |
174 vLayout.addMember(dateLabel); | |
175 } | |
176 final Canvas back = getBackButton(dataList.getState()); | |
177 layout.addMember(label); | |
178 layout.addMember(vLayout); | |
179 layout.addMember(back); | |
180 | |
181 return layout; | |
182 } | |
183 | |
184 @Override | |
185 public Canvas create(final DataList data) { | |
186 final VLayout layout = new VLayout(); | |
187 final Canvas helper = createHelper(); | |
188 this.helperContainer.addMember(helper); | |
189 | |
190 final Canvas submit = getNextButton(); | |
191 final Canvas widget = createWidget(data); | |
192 | |
193 layout.addMember(widget); | |
194 layout.addMember(submit); // TODO: SUBMIT | |
195 | |
196 // fetchSedimentLoadData(); //TODO: feed from database... | |
197 | |
198 return layout; | |
199 } | |
200 | |
201 private Canvas createHelper() { | |
202 this.table = new ListGrid(); | |
203 this.table.setShowHeaderContextMenu(false); | |
204 this.table.setWidth100(); | |
205 this.table.setShowRecordComponents(true); | |
206 this.table.setShowRecordComponentsByCell(true); | |
207 this.table.setHeight100(); | |
208 this.table.setEmptyMessage(this.MSG.empty_table()); | |
209 this.table.setCanReorderFields(false); | |
210 | |
211 /* Input support pins */ | |
212 // final String baseUrl = GWT.getHostPageBaseURL(); | |
213 // final ListGridField pinFrom = new ListGridField("fromIcon", this.MSG.uinfo_vegetation_zones_from()); | |
214 // pinFrom.setWidth(300); | |
215 // pinFrom.setType(ListGridFieldType.ICON); | |
216 // pinFrom.setCellIcon(baseUrl + this.MSG.markerGreen()); | |
217 // | |
218 // final ListGridField pinTo = new ListGridField("toIcon", this.MSG.uinfo_vegetation_zones_to()); | |
219 // pinTo.setType(ListGridFieldType.ICON); | |
220 // pinTo.setWidth(300); | |
221 // pinTo.setCellIcon(baseUrl + this.MSG.markerRed()); | |
222 // | |
223 // pinFrom.addRecordClickHandler(new RecordClickHandler() { | |
224 // @Override | |
225 // public void onRecordClick(final RecordClickEvent e) { | |
226 // final Record r = e.getRecord(); | |
227 // VegetationzonesTableEditPanel.this.vegzone.setValue(r.getAttribute("date")); // date?? | |
228 // } | |
229 // }); | |
230 // | |
231 // pinFrom.addRecordClickHandler(new RecordClickHandler() { | |
232 // @Override | |
233 // public void onRecordClick(final RecordClickEvent e) { | |
234 // final Record r = e.getRecord(); | |
235 // VegetationzonesTableEditPanel.this.start.setValue(r.getAttribute("date")); | |
236 // } | |
237 // }); | |
238 // | |
239 // pinTo.addRecordClickHandler(new RecordClickHandler() { | |
240 // @Override | |
241 // public void onRecordClick(final RecordClickEvent e) { | |
242 // final Record r = e.getRecord(); | |
243 // VegetationzonesTableEditPanel.this.end.setValue(r.getAttribute("date")); | |
244 // } | |
245 // }); | |
246 // | |
247 // final ListGridField date = new ListGridField("date", this.MSG.year()); | |
248 // date.setType(ListGridFieldType.TEXT); | |
249 // date.setWidth(100); | |
250 // | |
251 // final ListGridField descr = new ListGridField("description", this.MSG.description()); | |
252 // descr.setType(ListGridFieldType.TEXT); | |
253 // descr.setWidth("*"); | |
254 // | |
255 // this.table.setFields(pinFrom, pinTo, date, descr); | |
256 return this.table; | |
257 } | |
258 | |
259 @Override | |
260 protected Data[] getData() { | |
261 final List<Data> data = new ArrayList<Data>(); | |
262 | |
263 final ListGridRecord[] lgr = this.elements.getRecords(); | |
264 if (lgr.length == 0) { | |
265 return new Data[0]; | |
266 } | |
267 String d = ""; | |
268 for (final ListGridRecord element : lgr) { | |
269 final Record r = element; | |
270 d += r.getAttribute("vegzone") + "," + r.getAttribute("from") + "," + r.getAttribute("to"); | |
271 d += ";"; | |
272 } | |
273 | |
274 final DataItem item = new DefaultDataItem(datakey, null, d); // DATA-key | |
275 data.add(new DefaultData(datakey, null, null, new DataItem[] { item })); | |
276 return data.toArray(new Data[data.size()]); | |
277 } | |
278 | |
279 } |