comparison gwt-client/src/main/java/org/dive4elements/river/client/client/ui/uinfo/VegetationzonesTablePanel.java @ 9068:a5cf8d7bff3c

access uinfo.salx; tablePanel edit/non-edit merge
author gernotbelger
date Mon, 14 May 2018 18:24:35 +0200
parents b5d7a9d79837
children 1ffd38826175
comparison
equal deleted inserted replaced
9067:2ed3824a3d53 9068:a5cf8d7bff3c
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.uinfo; 9 package org.dive4elements.river.client.client.ui.uinfo;
10 10
11 import java.util.ArrayList; 11 import org.dive4elements.river.client.client.ui.PanelHelper;
12 import java.util.List; 12 import org.dive4elements.river.client.shared.model.DataList;
13 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.smartgwt.client.data.Record;
23 import com.smartgwt.client.widgets.Canvas; 14 import com.smartgwt.client.widgets.Canvas;
24 import com.smartgwt.client.widgets.Label; 15 import com.smartgwt.client.widgets.Label;
25 import com.smartgwt.client.widgets.form.fields.TextItem;
26 import com.smartgwt.client.widgets.form.validator.IsIntegerValidator; 16 import com.smartgwt.client.widgets.form.validator.IsIntegerValidator;
27 import com.smartgwt.client.widgets.form.validator.IsStringValidator; 17 import com.smartgwt.client.widgets.form.validator.IsStringValidator;
28 import com.smartgwt.client.widgets.grid.ListGrid;
29 import com.smartgwt.client.widgets.grid.ListGridField; 18 import com.smartgwt.client.widgets.grid.ListGridField;
30 import com.smartgwt.client.widgets.grid.ListGridRecord;
31 import com.smartgwt.client.widgets.layout.HLayout;
32 import com.smartgwt.client.widgets.layout.VLayout;
33 19
34 public class VegetationzonesTablePanel extends AbstractUIProvider { 20 public class VegetationzonesTablePanel extends SuperVegZonesTablePanel {
21
35 private static final long serialVersionUID = 1L; 22 private static final long serialVersionUID = 1L;
36 23
37 protected ListGrid elements; 24 @Override
38 private TextItem vegzone;
39 private TextItem start;
40 private TextItem end;
41 private ListGrid table;
42
43 private static final String datakey = "vegzones";
44
45 public Canvas createWidget(final DataList data) { 25 public Canvas createWidget(final DataList data) {
46 26
47 final VLayout root = new VLayout(); 27 data.add(VegetationzonesTablePanel.getDummyData()); // TODO: GET REAL DATA!
48 final HLayout input = new HLayout();
49 final VLayout tableLayout = new VLayout();
50
51 this.elements = new ListGrid();
52 28
53 final Label title = new Label(data.get(0).getDescription()); 29 final Label title = new Label(data.get(0).getDescription());
54 title.setHeight("35px"); // orig:25 30 title.setHeight("35px"); // orig:25
55 31
56 this.vegzone = PanelHelper.createItem("uinfo_vegetation_zone_label", this.MSG.uinfo_vegetation_zone_label(), 200, new IsStringValidator()); 32 this.vegzone = PanelHelper.createItem("uinfo_vegetation_zone_label", this.MSG.uinfo_vegetation_zone_label(), 200, new IsStringValidator());
57 this.start = PanelHelper.createItem("uinfo_vegetation_zones_from", this.MSG.uinfo_vegetation_zones_from(), 40, new IsIntegerValidator()); 33 this.start = PanelHelper.createItem("uinfo_vegetation_zones_from", this.MSG.uinfo_vegetation_zones_from(), 40, new IsIntegerValidator());
58 this.end = PanelHelper.createItem("uinfo_vegetation_zones_to", this.MSG.uinfo_vegetation_zones_to(), 40, new IsIntegerValidator()); 34 this.end = PanelHelper.createItem("uinfo_vegetation_zones_to", this.MSG.uinfo_vegetation_zones_to(), 40, new IsIntegerValidator());
59 35
60 final Label sel = new Label(this.MSG.select()); 36 final Label sel = new Label(this.MSG.select());
61 sel.setHeight(25); 37 sel.setHeight(25);
62 this.elements.setWidth(450); // 185 38 this.elements.setWidth(420); // 185
63 this.elements.setHeight(500); // 120 39 this.elements.setHeight(500); //
64 this.elements.setShowHeaderContextMenu(false); 40 this.elements.setShowHeaderContextMenu(false);
65 this.elements.setCanReorderFields(false); 41 this.elements.setCanReorderFields(false);
66 this.elements.setCanSort(false); 42 this.elements.setCanSort(false);
67 this.elements.setCanEdit(false); 43 this.elements.setCanEdit(false);
68 final ListGridField vegzone = new ListGridField("vegzone", this.MSG.uinfo_vegetation_zones_label()); 44 final ListGridField vegzone = new ListGridField("vegzone", this.MSG.uinfo_vegetation_zones_label());
69 final ListGridField from = new ListGridField("from", this.MSG.uinfo_vegetation_zones_from()); 45 final ListGridField from = new ListGridField("from", this.MSG.uinfo_vegetation_zones_from());
70 final ListGridField to = new ListGridField("to", this.MSG.uinfo_vegetation_zones_to()); 46 final ListGridField to = new ListGridField("to", this.MSG.uinfo_vegetation_zones_to());
71 vegzone.setWidth(285); 47 vegzone.setWidth(265);
72 from.setWidth(70); 48 from.setWidth(70);
73 to.setWidth(70); 49 to.setWidth(70);
74 50
75 for (final Data dataItem : data.getAll()) { 51 addDataInit(data);
76 createEntry(dataItem);
77 }
78 52
79 this.elements.setFields(vegzone, from, to); 53 this.elements.setFields(vegzone, from, to);
80 54
81 tableLayout.addMember(this.elements); 55 this.tableLayout.addMember(this.elements);
82 root.addMember(title); 56 this.root.addMember(title);
83 root.addMember(input); 57 this.root.addMember(this.input);
84 root.addMember(tableLayout); 58 this.root.addMember(this.tableLayout);
85 root.addMember(PanelHelper.getSpacer(10)); 59 this.root.addMember(PanelHelper.getSpacer(10));
86 60
87 return root; 61 return this.root;
88 }
89
90 private void createEntry(final Data data) {
91
92 if (data.getItems() != null) {
93 for (final DataItem dataItem : data.getItems()) {
94 if (dataItem.getStringValue() != null) {
95 if (dataItem.getStringValue().contains(",")) {
96 final String[] vals = dataItem.getStringValue().split(",");
97 if (vals.length == 3) {
98 final String vegzone = vals[0];
99 final String from = vals[1];
100 final String to = vals[2];
101
102 if (vegzone == null || from == null || to == null) {
103 return;
104 }
105
106 final ListGridRecord r = new ListGridRecord();
107 r.setAttribute("vegzone", vegzone);
108 r.setAttribute("from", from);
109 r.setAttribute("to", to);
110 this.elements.addData(r);
111
112 }
113 }
114 }
115 }
116 }
117 }
118
119 @Override
120 public Canvas createOld(final DataList dataList) { // TODO: Veg-Table übersichtlich oben anzeigen, irgendwie abkürzen (etwa "20 Einträge")
121 final HLayout layout = new HLayout();
122 layout.setWidth("400px");
123 final VLayout vLayout = new VLayout();
124 vLayout.setWidth(130);
125 final Label label = new Label(dataList.getLabel());
126 label.setWidth("200px");
127 label.setHeight(25);
128
129 final List<Data> items = dataList.getAll();
130 final Data str = getData(items, datakey);
131 final DataItem[] strItems = str.getItems();
132
133 final String[] entries = strItems[0].getLabel().split(";");
134 for (final String entry : entries) {
135 final String[] vals = entry.split(",");
136 final Label dateLabel = new Label(vals[0] + " TODO: MAKE SELECTED ENTRIES VEGZONE FOR ARTIFACT" + vals[1]);
137 dateLabel.setHeight(20);
138 vLayout.addMember(dateLabel);
139 }
140 final Canvas back = getBackButton(dataList.getState());
141 layout.addMember(label);
142 layout.addMember(vLayout);
143 layout.addMember(back);
144
145 return layout;
146 }
147
148 @Override
149 public Canvas create(final DataList data) {
150 final VLayout layout = new VLayout();
151 final Canvas helper = createHelper();
152 this.helperContainer.addMember(helper);
153
154 final Canvas submit = getNextButton();
155 // if (data.size() == 0) { // TODO: GET DATA
156
157 data.add(getDummyData());
158
159 // }
160 final Canvas widget = createWidget(data);
161
162 layout.addMember(widget);
163 layout.addMember(submit); // TODO: SUBMIT
164
165 // fetchSedimentLoadData(); //TODO: feed from database...
166
167 return layout;
168 }
169
170 private Canvas createHelper() {
171 this.table = new ListGrid();
172 this.table.setShowHeaderContextMenu(false);
173 this.table.setWidth100();
174 this.table.setShowRecordComponents(true);
175 this.table.setShowRecordComponentsByCell(true);
176 this.table.setHeight100();
177 this.table.setEmptyMessage(this.MSG.empty_table());
178 this.table.setCanReorderFields(false);
179
180 /* Input support pins */
181 // final String baseUrl = GWT.getHostPageBaseURL();
182 // final ListGridField pinFrom = new ListGridField("fromIcon", this.MSG.uinfo_vegetation_zones_from());
183 // pinFrom.setWidth(300);
184 // pinFrom.setType(ListGridFieldType.ICON);
185 // pinFrom.setCellIcon(baseUrl + this.MSG.markerGreen());
186 //
187 // final ListGridField pinTo = new ListGridField("toIcon", this.MSG.uinfo_vegetation_zones_to());
188 // pinTo.setType(ListGridFieldType.ICON);
189 // pinTo.setWidth(300);
190 // pinTo.setCellIcon(baseUrl + this.MSG.markerRed());
191 //
192 // pinFrom.addRecordClickHandler(new RecordClickHandler() {
193 // @Override
194 // public void onRecordClick(final RecordClickEvent e) {
195 // final Record r = e.getRecord();
196 // VegetationzonesTableEditPanel.this.vegzone.setValue(r.getAttribute("date")); // date??
197 // }
198 // });
199 //
200 // pinFrom.addRecordClickHandler(new RecordClickHandler() {
201 // @Override
202 // public void onRecordClick(final RecordClickEvent e) {
203 // final Record r = e.getRecord();
204 // VegetationzonesTableEditPanel.this.start.setValue(r.getAttribute("date"));
205 // }
206 // });
207 //
208 // pinTo.addRecordClickHandler(new RecordClickHandler() {
209 // @Override
210 // public void onRecordClick(final RecordClickEvent e) {
211 // final Record r = e.getRecord();
212 // VegetationzonesTableEditPanel.this.end.setValue(r.getAttribute("date"));
213 // }
214 // });
215 //
216 // final ListGridField date = new ListGridField("date", this.MSG.year());
217 // date.setType(ListGridFieldType.TEXT);
218 // date.setWidth(100);
219 //
220 // final ListGridField descr = new ListGridField("description", this.MSG.description());
221 // descr.setType(ListGridFieldType.TEXT);
222 // descr.setWidth("*");
223 //
224 // this.table.setFields(pinFrom, pinTo, date, descr);
225 return this.table;
226 }
227
228 @Override
229 protected Data[] getData() {
230 final List<Data> data = new ArrayList<Data>();
231
232 final ListGridRecord[] lgr = this.elements.getRecords();
233 if (lgr.length == 0) {
234 return getDummyData();// return new Data[0];
235 }
236 String d = "";
237 for (final ListGridRecord element : lgr) {
238 final Record r = element;
239 d += r.getAttribute("vegzone") + "," + r.getAttribute("from") + "," + r.getAttribute("to");
240 d += ";";
241 }
242
243 final DataItem item = new DefaultDataItem(datakey, null, d); // DATA-key
244 data.add(new DefaultData(datakey, null, null, new DataItem[] { item }));
245 return data.toArray(new Data[data.size()]);
246 }
247
248 private Data[] getDummyData() {
249 final List<Data> data = new ArrayList<Data>();
250 String d = "";
251 d = d + "Zonaler Wald" + "," + "0" + "," + "5";
252 final DataItem item = new DefaultDataItem(datakey, "entryDescription", d); // DATA-key
253 data.add(new DefaultData(datakey, null, null, new DataItem[] { item }));
254 return data.toArray(new Data[data.size()]);
255 } 62 }
256 63
257 } 64 }

http://dive4elements.wald.intevation.org