annotate gwt-client/src/main/java/org/dive4elements/river/client/client/ui/sinfo/FloodInfrastructurePanel.java @ 9624:02ca823ec9c6

zu Pos 20 Nachtrag; infrastructureChoice
author dnt_bjoernsen <d.tironi@bjoernsen.de>
date Fri, 11 Oct 2019 18:30:36 +0200
parents 8ed6c45136fa
children
rev   line source
9611
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
1 /** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
2 * Software engineering by
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
3 * Björnsen Beratende Ingenieure GmbH
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
4 * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
5 *
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
6 * This file is Free Software under the GNU AGPL (>=v3)
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
7 * and comes with ABSOLUTELY NO WARRANTY! Check out the
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
8 * documentation coming with Dive4Elements River for details.
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
9 */
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
10 package org.dive4elements.river.client.client.ui.sinfo;
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
11
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
12 import java.util.ArrayList;
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
13 import java.util.List;
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
14
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
15 import org.dive4elements.river.client.client.ui.AbstractUIProvider;
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
16 import org.dive4elements.river.client.client.ui.DatacageWidget;
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
17 import org.dive4elements.river.client.client.ui.DatacageWidgetData;
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
18 import org.dive4elements.river.client.client.ui.PanelHelper;
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
19 import org.dive4elements.river.client.shared.model.Data;
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
20 import org.dive4elements.river.client.shared.model.DataItem;
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
21 import org.dive4elements.river.client.shared.model.DataList;
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
22 import org.dive4elements.river.client.shared.model.DefaultData;
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
23 import org.dive4elements.river.client.shared.model.DefaultDataItem;
9624
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
24 import org.dive4elements.river.client.shared.model.InfrastructureServerClientXChange;
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
25 import org.dive4elements.river.client.shared.model.InfrastructureServerClientXChange.Element;
9611
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
26 import org.dive4elements.river.client.shared.model.User;
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
27
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
28 import com.google.gwt.core.client.GWT;
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
29 import com.smartgwt.client.types.ListGridFieldType;
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
30 import com.smartgwt.client.util.SC;
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
31 import com.smartgwt.client.widgets.Button;
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
32 import com.smartgwt.client.widgets.Canvas;
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
33 import com.smartgwt.client.widgets.Label;
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
34 import com.smartgwt.client.widgets.events.ClickEvent;
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
35 import com.smartgwt.client.widgets.events.ClickHandler;
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
36 import com.smartgwt.client.widgets.grid.ListGrid;
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
37 import com.smartgwt.client.widgets.grid.ListGridField;
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
38 import com.smartgwt.client.widgets.grid.ListGridRecord;
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
39 import com.smartgwt.client.widgets.grid.events.RecordClickEvent;
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
40 import com.smartgwt.client.widgets.grid.events.RecordClickHandler;
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
41 import com.smartgwt.client.widgets.layout.HLayout;
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
42 import com.smartgwt.client.widgets.layout.Layout;
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
43 import com.smartgwt.client.widgets.layout.VLayout;
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
44 import com.smartgwt.client.widgets.tree.TreeNode;
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
45
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
46 /**
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
47 * @author Domenico Nardi Tironi
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
48 *
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
49 */
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
50 public class FloodInfrastructurePanel extends AbstractUIProvider {
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
51 private static final long serialVersionUID = 1L;
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
52
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
53 private static final String datakey = "flood_infrastructure";
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
54 private ListGrid elements = new ListGrid();
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
55
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
56 private final User m_user;
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
57
9624
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
58 private final InfrastructureServerClientXChange xchangeHelper = new InfrastructureServerClientXChange();
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
59
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
60 private Button submit;
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
61
9611
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
62 public FloodInfrastructurePanel(final User user) {
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
63 this.m_user = user;
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
64 }
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
65
9624
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
66 protected final ListGrid createTable(final Layout root, final DataList data, final String width) {
9611
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
67
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
68 final Label title = new Label(data.get(0).getDescription());
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
69 title.setHeight("35px");
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
70
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
71 this.elements.setWidth(width);
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
72 this.elements.setHeight(300);
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
73 this.elements.setShowHeaderContextMenu(false);
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
74 this.elements.setCanReorderFields(false);
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
75 this.elements.setCanSort(true);
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
76 this.elements.setSortField("to");
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
77 this.elements.setCanResizeFields(false);
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
78
9624
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
79 this.elements.setCanEdit(false);
9611
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
80
9624
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
81 final ListGridField groupIdField = new ListGridField("group_id", "groupId");
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
82 groupIdField.setHidden(true);
9611
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
83
9624
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
84 final ListGridField groupField = createField("group_label", "Infrastruktur BWaStr");// this.MSG.uinfo_vegetation_zones_label());
9611
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
85
9624
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
86 final ListGridField typeIdField = new ListGridField("type_id", "typeId");
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
87 typeIdField.setHidden(true);
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
88
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
89 final ListGridField typeField = createField("type_label", "Typ/Bezeichnung");// this.MSG.uinfo_vegetation_zones_label());
9611
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
90
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
91 final ListGridField removeField = PanelHelper.createRemoveField(this.elements, GWT.getHostPageBaseURL() + this.MSG.removeFeature());
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
92 this.elements.addRecordClickHandler(new RecordClickHandler() { // adding another custom record-Remove-Handler which is not included in the
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
93 @Override
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
94 public void onRecordClick(final RecordClickEvent event) {
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
95 if (event.getField().getName().equals(removeField.getName())) {
9624
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
96 final ListGridRecord r = event.getRecord();
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
97 final Element infrastr = new Element(r.getAttribute("group_id"), r.getAttribute("group_label"), r.getAttribute("type_id"),
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
98 r.getAttribute("type_label"));
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
99 FloodInfrastructurePanel.this.xchangeHelper.removeObject(infrastr);
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
100
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
101 validateInput();
9611
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
102 }
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
103 }
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
104 });
9624
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
105 this.elements.setFields(groupIdField, groupField, typeIdField, typeField, removeField);
9611
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
106
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
107 root.setWidth(width);
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
108 root.addMember(title);
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
109 root.addMember(this.elements);
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
110 root.addMember(PanelHelper.getSpacer(3));
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
111 root.addMember(PanelHelper.getSpacer(3));
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
112 return this.elements;
9624
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
113 }
9611
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
114
9624
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
115 private ListGridField createField(final String id, final String label) {
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
116 final ListGridField field = new ListGridField(id, label);// this.MSG.uinfo_vegetation_zones_label());
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
117 field.setType(ListGridFieldType.TEXT);
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
118 field.setWidth("*"); // 245
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
119 field.setCanSort(false);
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
120 field.setCanDragResize(true);
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
121 field.setCanEdit(false);
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
122 return field;
9611
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
123 }
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
124
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
125 @Override
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
126 public final VLayout create(final DataList data) {
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
127 final VLayout layout = new VLayout();
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
128
9624
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
129 final List<Data> items = data.getAll();
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
130 final Data str = getData(items, datakey);
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
131 final DataItem[] strItems = str.getItems();
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
132 if (strItems.length > 0)
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
133 this.xchangeHelper.parseAndAdd(strItems[0].getStringValue());
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
134
9611
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
135 final Canvas helper = createHelper(data);
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
136 if (helper != null)
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
137 this.helperContainer.addMember(helper);
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
138
9624
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
139 this.submit = (Button) getNextButton();
9611
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
140
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
141 final VLayout root = new VLayout();
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
142 root.setWidth(450);
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
143 createWidget(root, data);
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
144
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
145 layout.addMember(root);
9624
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
146 layout.addMember(this.submit);
9611
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
147
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
148 return layout;
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
149 }
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
150
9624
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
151 private void validateInput() {
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
152 if (this.xchangeHelper.getItems().size() > 0)
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
153 this.submit.enable();
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
154 else
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
155 this.submit.disable();
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
156 }
9611
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
157
9624
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
158 private Canvas createHelper(final DataList dataList) {
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
159
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
160 final DatacageWidgetData data = new DatacageWidgetData(this.artifact, this.m_user, "sinfo_floodduration_infrastructures", "load-system:true", false);
9611
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
161
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
162 final DatacageWidget datacage = new DatacageWidget(data);
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
163
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
164 final Button plusBtn = new Button("Hinzufügen"); // this.MSG.uinfo_inundation_duration_set_vegetation_zone()
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
165 plusBtn.addClickHandler(new ClickHandler() {
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
166 @Override
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
167 public void onClick(final ClickEvent event) {
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
168 handlePlusClicked(datacage);
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
169 }
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
170 });
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
171
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
172 final VLayout helperLayout = new VLayout();
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
173 helperLayout.addMember(datacage);
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
174 helperLayout.addMember(plusBtn);
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
175
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
176 return helperLayout;
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
177 }
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
178
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
179 private void handlePlusClicked(final DatacageWidget datacage) {
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
180 final List<TreeNode> selection = datacage.getPlainSelection();
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
181 if (selection == null || selection.isEmpty()) {
9624
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
182 SC.say(FloodInfrastructurePanel.this.MSG.warning());
9611
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
183 return;
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
184 }
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
185
9624
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
186 for (final TreeNode selectedNode : selection) {
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
187 final String groupId = selectedNode.getAttribute("group_id"); // node-names from meta-data.xml
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
188 final String groupLabel = selectedNode.getAttribute("group_label");
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
189 final String typeId = selectedNode.getAttribute("type_id");
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
190 final String typeLabel = selectedNode.getAttribute("type_label");
9611
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
191
9624
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
192 if (isEmpty(groupId) || isEmpty(groupLabel) || isEmpty(typeId) || isEmpty(typeLabel))
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
193 continue;
9611
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
194
9624
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
195 final InfrastructureServerClientXChange.Element infrastr = new InfrastructureServerClientXChange.Element(groupId, groupLabel, typeId, typeLabel);
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
196 if (this.xchangeHelper.containsObject(infrastr))
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
197 continue;
9611
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
198
9624
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
199 this.xchangeHelper.addObject(infrastr);
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
200
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
201 this.elements.addData(createEntry(infrastr));
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
202 }
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
203 validateInput();
9611
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
204 }
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
205
9624
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
206 private boolean isEmpty(final String test) {
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
207 if (test == null)
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
208 return true;
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
209 if (test.trim().equals(""))
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
210 return true;
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
211 return false;
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
212 }
9611
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
213
9624
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
214 public final ListGridRecord createEntry(final InfrastructureServerClientXChange.Element row) {
9611
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
215 final ListGridRecord r = new ListGridRecord();
9624
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
216 r.setAttribute("group_id", row.getGroupId());
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
217 r.setAttribute("group_label", row.getGroupLabel());
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
218 r.setAttribute("type_id", row.getTypeId());
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
219 r.setAttribute("type_label", row.getTypeLabel());
9611
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
220 return r;
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
221 }
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
222
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
223 public void createWidget(final Layout root, final DataList data) {
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
224
9624
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
225 this.elements = createTable(root, data, "420");
9611
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
226
9624
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
227 for (final Element item : this.xchangeHelper.getItems())
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
228 this.elements.addData(createEntry(item));
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
229 validateInput();
9611
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
230 }
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
231
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
232 @Override
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
233 public Canvas createOld(final DataList dataList) {
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
234 final HLayout layout = new HLayout();
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
235 layout.setWidth("400px");
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
236 final VLayout vLayout = new VLayout();
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
237 vLayout.setWidth(130);
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
238 final Label label = new Label(dataList.getLabel());
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
239 label.setWidth("200px");
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
240 label.setHeight("25px");
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
241
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
242 final List<Data> items = dataList.getAll();
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
243 final Data str = getData(items, datakey);
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
244 final DataItem[] strItems = str.getItems();
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
245
9624
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
246 final List<Element> items1 = InfrastructureServerClientXChange.parse(strItems[0].getStringValue());
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
247
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
248 final StringBuilder builder = new StringBuilder();
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
249
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
250 for (final Element infrastr : items1) {
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
251 builder.append(infrastr.getGroupLabel()).append(" - ").append(infrastr.getTypeLabel()).append("; ");
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
252 }
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
253 if (builder.length() > 1)
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
254 builder.deleteCharAt(builder.length() - 2);
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
255 else
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
256 builder.append(" - keine Auswahl - (will never appear because the workflow is being disabled when the table is empty) ");
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
257 final Label dateLabel = new Label(builder.toString());
9611
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
258 dateLabel.setHeight("20px");
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
259 vLayout.addMember(dateLabel);
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
260
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
261 final Canvas back = getBackButton(dataList.getState());
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
262 layout.addMember(label);
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
263 layout.addMember(vLayout);
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
264 layout.addMember(back);
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
265
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
266 return layout;
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
267 }
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
268
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
269 @Override
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
270 protected final Data[] getData() {
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
271 final List<Data> data = new ArrayList<Data>();
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
272
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
273 final ListGridRecord[] lgr = this.elements.getRecords();
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
274 if (lgr.length == 0) {
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
275 }
9624
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
276 final String dataStr = this.xchangeHelper.parseListToDataString();
9611
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
277
9624
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
278 final DataItem item = new DefaultDataItem(datakey, null,
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
279 dataStr.equals("") ? "Non-Empty Value -> createOld would be called (not necessary, because workflow is disabled when table is empty)"
02ca823ec9c6 zu Pos 20 Nachtrag; infrastructureChoice
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents: 9611
diff changeset
280 : dataStr);
9611
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
281 data.add(new DefaultData(datakey, null, null, new DataItem[] { item }));
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
282 return data.toArray(new Data[data.size()]);
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
283 }
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
284
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
diff changeset
285 }

http://dive4elements.wald.intevation.org