comparison gwt-client/src/main/java/org/dive4elements/river/client/client/ui/bundu/CustomFixationChoiceRadioPanel.java @ 9267:c7e5285d434f

bundu bezugswst work
author gernotbelger
date Wed, 18 Jul 2018 15:34:53 +0200
parents
children 3d006afee054
comparison
equal deleted inserted replaced
9266:465347d12990 9267:c7e5285d434f
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.bundu;
10
11 import java.util.ArrayList;
12 import java.util.Iterator;
13 import java.util.LinkedHashMap;
14 import java.util.List;
15
16 import org.dive4elements.river.client.client.ui.RadioPanel;
17 import org.dive4elements.river.client.client.ui.fixation.FixEventSelect;
18 import org.dive4elements.river.client.client.ui.fixation.FixGaugeSelectPanel;
19 import org.dive4elements.river.client.shared.model.Data;
20 import org.dive4elements.river.client.shared.model.DataItem;
21 import org.dive4elements.river.client.shared.model.DataList;
22 import org.dive4elements.river.client.shared.model.DefaultData;
23 import org.dive4elements.river.client.shared.model.DefaultDataItem;
24 import org.dive4elements.river.client.shared.model.IntDataItem;
25 import org.dive4elements.river.client.shared.model.IntegerArrayData;
26
27 import com.google.gwt.i18n.client.DateTimeFormat;
28 import com.smartgwt.client.widgets.Canvas;
29 import com.smartgwt.client.widgets.Label;
30 import com.smartgwt.client.widgets.layout.HLayout;
31 import com.smartgwt.client.widgets.layout.VLayout;
32
33 public class CustomFixationChoiceRadioPanel extends RadioPanel {
34
35 private static final long serialVersionUID = 3357071563224461043L;
36
37 private String events[];
38 private int bezugsjahr = 0;
39
40 @Override
41 public Canvas createOld(final DataList dataList) { // wild überschrieben :-(
42 final List<Data> list = dataList.getAll();
43
44 final VLayout root = new VLayout();
45 final HLayout layoutChoice = new HLayout();
46 layoutChoice.setHeight(35);
47 layoutChoice.setWidth(400);
48
49 for (final Data item : list) {
50 if ("fix_choice".equals(item.getLabel())) {
51 final Label labelLabel = new Label(this.MSG.bundu_bezugswst_fix_choice_title());
52 final Label valueLabel = new Label(item.getItems()[0].getLabel());
53
54 labelLabel.setWidth(200);
55 valueLabel.setWidth(180);
56 layoutChoice.addMember(labelLabel);
57 layoutChoice.addMember(valueLabel);
58 final Canvas back = getBackButton(dataList.getState());
59 layoutChoice.addMember(back);
60 root.addMember(layoutChoice);
61 }
62 }
63
64 final Data data = getData(list, "events");
65 if (data != null) {
66
67 final VLayout dataLayout = FixEventSelect.getEventDataLayout(data);
68
69 final HLayout layout = new HLayout();
70 layout.setWidth("400px");
71 final Label label = new Label(this.MSG.bundu_bezugswst_auto_event_choice());
72 label.setWidth("200px");
73 layout.addMember(label);
74 layout.addMember(dataLayout);
75 root.addMember(layout);
76 }
77
78 return root;
79 }
80
81 @Override
82 public Canvas create(final DataList dataList) { // wild überschrieben :-(
83 final Data data = dataList.get(0);
84 final DataItem[] items = data.getItems();
85 for (final DataItem item : items) {
86 if (item.getLabel().equals("ignore_events_temp")) {
87 if (!item.getStringValue().equals(""))
88 this.events = (item.getStringValue().split(";"));
89
90 } else if (item.getLabel().equals("ignore_singleyear")) {
91 this.bezugsjahr = Integer.valueOf(item.getStringValue());
92 }
93 }
94 return super.create(dataList);
95 }
96
97 @Override
98 protected Data[] getData() { // TODO: wild überschreiben :-(
99 final String value = this.form.getValueAsString("selection");
100 final List<Data> data = new ArrayList<Data>();
101
102 // Default-values for data. they have to be reset, if user switches from auto to manual
103 IntegerArrayData iad = new IntegerArrayData("events", "events", new IntDataItem[] {});
104 DataItem firstItem = new DefaultDataItem(null, null, "");
105 DataItem secItem = new DefaultDataItem(null, null, "");
106 DataItem startItem = new DefaultDataItem(null, null, "");
107 DataItem endItem = new DefaultDataItem(null, null, "");
108
109 final DataItem item = new DefaultDataItem("fix_choice", "fix_choice", value);
110 data.add(new DefaultData("fix_choice", null, null, new DataItem[] { item }));
111
112 if (value.equals("state.bundu.fix.auto")) {
113 // set gauges: (do not appear in create old, but need to be set for calculation purpose
114 final LinkedHashMap<String, String> map = FixGaugeSelectPanel.getMapValues(this.MSG);
115 final String mnq = this.MSG.gauge_mnq();
116 final String hq5 = this.MSG.gauge_hq5();
117 String firstKey = "-1";
118 String secondKey = "-1";
119 // irgendwie hässlich, aber sicher (man kann die Map ändern und kriegt hier den richtigen Index)
120 final Iterator<String> iterator = map.keySet().iterator();
121 while (iterator.hasNext()) {
122 final String key = iterator.next();
123 final String mapValue = map.get(key);
124 if (mnq.equals(mapValue)) {
125 firstKey = key;
126 }
127 if (hq5.equals(mapValue)) {
128 secondKey = key;
129 }
130 }
131 firstItem = new DefaultDataItem("q1", "q1", firstKey);
132 secItem = new DefaultDataItem("q2", "q2", secondKey);
133
134 // make start, end
135 final DateTimeFormat df = DateTimeFormat.getFormat("dd.MM.yyyy");
136 /// EVENT SELECTION... have to appear in selectOld somehow...
137 startItem = new DefaultDataItem("start", "start", String.valueOf(df.parse("01.01." + (this.bezugsjahr - 5)).getTime()));
138 endItem = new DefaultDataItem("end", "end", String.valueOf(df.parse("31.12." + (this.bezugsjahr + 5)).getTime()));
139
140 /// MAKE EVENTS (muss glaube ich zum schluss erst erscheinen...
141 if (this.events != null) {
142 final IntDataItem[] arr = new IntDataItem[this.events.length];
143 for (int i = 0; i < this.events.length; i++) {
144 try {
145 final String s = this.events[i];
146 final Integer v = new Integer(s);
147 arr[i] = new IntDataItem("id", "id", v.intValue());
148 }
149 catch (final NumberFormatException nfe) {
150 continue;
151 }
152 }
153 iad = new IntegerArrayData("events", "events", arr); // overrides "real" events with events_temp from previous state...
154 }
155 }
156
157 data.add(iad);
158
159 data.add(new DefaultData("q1", null, null, new DataItem[] { firstItem }));
160 data.add(new DefaultData("q2", null, null, new DataItem[] { secItem }));
161 data.add(new DefaultData("start", null, null, new DataItem[] { startItem }));
162 data.add(new DefaultData("end", null, null, new DataItem[] { endItem }));
163
164 return data.toArray(new Data[data.size()]);
165
166 }
167
168 }

http://dive4elements.wald.intevation.org