Mercurial > dive4elements > river
comparison gwt-client/src/main/java/org/dive4elements/river/client/client/ui/fixation/FixPeriodPanel.java @ 9256:6c24c857ccf9
fixation refactoring and inputItem behaviour to interfaces
author | gernotbelger |
---|---|
date | Fri, 13 Jul 2018 12:04:21 +0200 |
parents | 5e38e2924c07 |
children |
comparison
equal
deleted
inserted
replaced
9255:9be51f776798 | 9256:6c24c857ccf9 |
---|---|
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; | |
12 import java.util.Date; | |
13 import java.util.List; | |
14 | |
15 import org.dive4elements.river.client.client.FLYSConstants; | |
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 import org.dive4elements.river.client.shared.model.FixingsOverviewInfo; | |
22 import org.dive4elements.river.client.shared.model.FixingsOverviewInfo.FixEvent; | |
23 | |
11 import com.google.gwt.core.client.GWT; | 24 import com.google.gwt.core.client.GWT; |
12 import com.google.gwt.i18n.client.DateTimeFormat; | 25 import com.google.gwt.i18n.client.DateTimeFormat; |
13 | |
14 import com.smartgwt.client.util.SC; | 26 import com.smartgwt.client.util.SC; |
15 import com.smartgwt.client.widgets.Canvas; | 27 import com.smartgwt.client.widgets.Canvas; |
16 import com.smartgwt.client.widgets.Label; | 28 import com.smartgwt.client.widgets.Label; |
17 import com.smartgwt.client.widgets.form.DynamicForm; | 29 import com.smartgwt.client.widgets.form.DynamicForm; |
18 import com.smartgwt.client.widgets.form.fields.DateRangeItem; | 30 import com.smartgwt.client.widgets.form.fields.DateRangeItem; |
19 import com.smartgwt.client.widgets.layout.HLayout; | 31 import com.smartgwt.client.widgets.layout.HLayout; |
20 import com.smartgwt.client.widgets.layout.VLayout; | 32 import com.smartgwt.client.widgets.layout.VLayout; |
21 | 33 |
22 import org.dive4elements.river.client.client.FLYSConstants; | |
23 import org.dive4elements.river.client.shared.model.Data; | |
24 import org.dive4elements.river.client.shared.model.DataItem; | |
25 import org.dive4elements.river.client.shared.model.DataList; | |
26 import org.dive4elements.river.client.shared.model.DefaultData; | |
27 import org.dive4elements.river.client.shared.model.DefaultDataItem; | |
28 import org.dive4elements.river.client.shared.model.FixingsOverviewInfo.FixEvent; | |
29 | |
30 import java.util.ArrayList; | |
31 import java.util.Date; | |
32 import java.util.List; | |
33 | |
34 /** | 34 /** |
35 * This UIProvider creates a panel for location or distance input. | 35 * This UIProvider creates a panel for location or distance input. |
36 * | 36 * |
37 * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> | 37 * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> |
38 */ | 38 */ |
39 public class FixPeriodPanel | 39 public class FixPeriodPanel extends FixationPanel { |
40 extends FixationPanel | |
41 { | |
42 /** The message class that provides i18n strings. */ | 40 /** The message class that provides i18n strings. */ |
43 protected FLYSConstants MESSAGES = GWT.create(FLYSConstants.class); | 41 protected FLYSConstants MESSAGES = GWT.create(FLYSConstants.class); |
44 | 42 |
45 DateRangeItem inputPanel; | 43 DateRangeItem inputPanel; |
46 | 44 |
52 | 50 |
53 public FixPeriodPanel() { | 51 public FixPeriodPanel() { |
54 this("start", "end"); | 52 this("start", "end"); |
55 } | 53 } |
56 | 54 |
57 public FixPeriodPanel(String startName, String endName) { | 55 public FixPeriodPanel(final String startName, final String endName) { |
58 this.startName = startName; | 56 this.startName = startName; |
59 this.endName = endName; | 57 this.endName = endName; |
60 htmlOverview = ""; | 58 } |
61 } | 59 |
62 | 60 @Override |
63 @Override | 61 public Canvas createWidget(final DataList data) { |
64 public Canvas createWidget(DataList data) { | |
65 instances.put(this.artifact.getUuid(), this); | 62 instances.put(this.artifact.getUuid(), this); |
66 | 63 |
67 VLayout layout = new VLayout(); | 64 final VLayout layout = new VLayout(); |
68 | 65 |
69 Label title = new Label(data.get(0).getDescription()); | 66 final Label title = new Label(data.get(0).getDescription()); |
70 title.setHeight("25px"); | 67 title.setHeight("25px"); |
71 | 68 |
72 DynamicForm form = new DynamicForm(); | 69 final DynamicForm form = new DynamicForm(); |
73 inputPanel = new DateRangeItem(); | 70 this.inputPanel = new DateRangeItem(); |
74 inputPanel.setToTitle(MESSAGES.to()); | 71 this.inputPanel.setToTitle(this.MESSAGES.to()); |
75 inputPanel.setFromTitle(MESSAGES.from()); | 72 this.inputPanel.setFromTitle(this.MESSAGES.from()); |
76 inputPanel.setShowTitle(false); | 73 this.inputPanel.setShowTitle(false); |
77 form.setFields(inputPanel); | 74 form.setFields(this.inputPanel); |
78 | 75 |
79 layout.addMember(title); | 76 layout.addMember(title); |
80 layout.addMember(form); | 77 layout.addMember(form); |
81 | 78 |
82 return layout; | 79 return layout; |
83 } | 80 } |
84 | 81 |
85 @Override | 82 @Override |
86 public Canvas createOld(DataList dataList) { | 83 public Canvas createOld(final DataList dataList) { |
87 List<Data> items = dataList.getAll(); | 84 final List<Data> items = dataList.getAll(); |
88 | 85 |
89 Data start = getData(items, startName); | 86 final Data start = getData(items, this.startName); |
90 Data end = getData(items, endName); | 87 final Data end = getData(items, this.endName); |
91 DataItem[] startItem = start.getItems(); | 88 final DataItem[] startItem = start.getItems(); |
92 DataItem[] endItem = end.getItems(); | 89 final DataItem[] endItem = end.getItems(); |
93 | 90 |
94 String v1 = startItem[0].getStringValue(); | 91 final String v1 = startItem[0].getStringValue(); |
95 String v2 = endItem[0].getStringValue(); | 92 final String v2 = endItem[0].getStringValue(); |
96 | 93 |
97 long v1l = 0; | 94 long v1l = 0; |
98 long v2l = 0; | 95 long v2l = 0; |
99 try { | 96 try { |
100 v1l = Long.parseLong(v1); | 97 v1l = Long.parseLong(v1); |
101 v2l = Long.parseLong(v2); | 98 v2l = Long.parseLong(v2); |
102 } | 99 } |
103 catch(NumberFormatException nfe) { | 100 catch (final NumberFormatException nfe) { |
104 GWT.log(nfe.toString()); | 101 GWT.log(nfe.toString()); |
105 } | 102 } |
106 Date d1 = new Date(v1l); | 103 final Date d1 = new Date(v1l); |
107 Date d2 = new Date(v2l); | 104 final Date d2 = new Date(v2l); |
108 | 105 |
109 DateTimeFormat f = | 106 final DateTimeFormat f = DateTimeFormat.getFormat(DateTimeFormat.PredefinedFormat.DATE_MEDIUM); |
110 DateTimeFormat.getFormat( | 107 final StringBuilder sb = new StringBuilder(); |
111 DateTimeFormat.PredefinedFormat.DATE_MEDIUM); | |
112 StringBuilder sb = new StringBuilder(); | |
113 sb.append(f.format(d1) + " - "); | 108 sb.append(f.format(d1) + " - "); |
114 sb.append(f.format(d2)); | 109 sb.append(f.format(d2)); |
115 | 110 |
116 Label old = new Label(sb.toString()); | 111 final Label old = new Label(sb.toString()); |
117 old.setWidth(130); | 112 old.setWidth(130); |
118 | 113 |
119 HLayout layout = new HLayout(); | 114 final HLayout layout = new HLayout(); |
120 layout.setWidth("400px"); | 115 layout.setWidth("400px"); |
121 | 116 |
122 Label label = new Label(dataList.getLabel()); | 117 final Label label = new Label(dataList.getLabel()); |
123 label.setWidth("200px"); | 118 label.setWidth("200px"); |
124 | 119 |
125 Canvas back = getBackButton(dataList.getState()); | 120 final Canvas back = getBackButton(dataList.getState()); |
126 | 121 |
127 layout.addMember(label); | 122 layout.addMember(label); |
128 layout.addMember(old); | 123 layout.addMember(old); |
129 layout.addMember(back); | 124 layout.addMember(back); |
130 | 125 |
131 return layout; | 126 return layout; |
132 } | 127 } |
133 | |
134 | 128 |
135 /** | 129 /** |
136 * This method returns the selected data. | 130 * This method returns the selected data. |
137 * | 131 * |
138 * @return the selected/inserted data. | 132 * @return the selected/inserted data. |
139 */ | 133 */ |
140 @Override | 134 @Override |
141 public Data[] getData() { | 135 public Data[] getData() { |
142 List<Data> data = new ArrayList<Data>(); | 136 final List<Data> data = new ArrayList<Data>(); |
143 | 137 |
144 boolean valid = saveDateValues(); | 138 final boolean valid = saveDateValues(); |
145 if(valid) { | 139 if (valid) { |
146 String start = Long.valueOf(this.start).toString(); | 140 final String start = Long.valueOf(this.start).toString(); |
147 String end = Long.valueOf(this.end).toString(); | 141 final String end = Long.valueOf(this.end).toString(); |
148 DataItem startItem = new DefaultDataItem( | 142 final DataItem startItem = new DefaultDataItem(this.startName, this.startName, start); |
149 startName, startName, start); | 143 final DataItem endItem = new DefaultDataItem(this.endName, this.endName, end); |
150 DataItem endItem = new DefaultDataItem(endName, endName, end); | 144 data.add(new DefaultData(this.startName, null, null, new DataItem[] { startItem })); |
151 data.add(new DefaultData( | 145 data.add(new DefaultData(this.endName, null, null, new DataItem[] { endItem })); |
152 startName, | |
153 null, | |
154 null, | |
155 new DataItem[] { startItem })); | |
156 data.add(new DefaultData( | |
157 endName, | |
158 null, | |
159 null, | |
160 new DataItem[] { endItem })); | |
161 } | 146 } |
162 | 147 |
163 return data.toArray(new Data[data.size()]); | 148 return data.toArray(new Data[data.size()]); |
164 } | 149 } |
165 | 150 |
166 | 151 @Override |
167 @Override | 152 public void setValues(final String cid, final boolean checked) { |
168 public void setValues(String cid, boolean checked) { | |
169 // No user interaction, do nothing. | 153 // No user interaction, do nothing. |
170 } | 154 } |
171 | |
172 | 155 |
173 @Override | 156 @Override |
174 public boolean renderCheckboxes() { | 157 public boolean renderCheckboxes() { |
175 // No selection, return false. | 158 // No selection, return false. |
176 return false; | 159 return false; |
177 } | 160 } |
178 | 161 |
179 @Override | 162 @Override |
180 public void success() { | 163 public void success(final FixingsOverviewInfo fixInfo) { |
181 List<FixEvent> list = fixInfo.getEvents(); | 164 final List<FixEvent> list = fixInfo.getEvents(); |
182 | 165 |
183 // The date in FixEvent is always "de" locale, so it seems... | 166 // The date in FixEvent is always "de" locale, so it seems... |
184 DateTimeFormat df = DateTimeFormat.getFormat("dd.MM.yyyy"); | 167 final DateTimeFormat df = DateTimeFormat.getFormat("dd.MM.yyyy"); |
185 | 168 |
186 if (!setFromAndToDate(list, df)) { | 169 if (!setFromAndToDate(list, df)) { |
187 GWT.log("FixPeriodPanel::success(): could not set " | 170 GWT.log("FixPeriodPanel::success(): could not set " + "from and to dates!"); |
188 + "from and to dates!"); | 171 } |
189 } | 172 } |
190 } | 173 |
191 | 174 protected boolean setFromAndToDate(final List<FixEvent> list, final DateTimeFormat df) { |
192 protected boolean setFromAndToDate(List<FixEvent> list, DateTimeFormat df) { | |
193 try { | 175 try { |
194 setFromDate(list.get(0).getDate(), df); | 176 setFromDate(list.get(0).getDate(), df); |
195 setToDate(list.get(list.size() - 1).getDate(), df); | 177 setToDate(list.get(list.size() - 1).getDate(), df); |
196 return true; | 178 return true; |
197 } | 179 } |
198 catch(IllegalArgumentException ex) { | 180 catch (final IllegalArgumentException ex) { |
199 GWT.log("FixPeriodPanel::setFromAndToDate(): " + ex.toString()); | 181 GWT.log("FixPeriodPanel::setFromAndToDate(): " + ex.toString()); |
200 return false; | 182 return false; |
201 } | 183 } |
202 } | 184 } |
203 | 185 |
204 protected void setFromDate(String date, DateTimeFormat df) | 186 protected void setFromDate(final String date, final DateTimeFormat df) throws IllegalArgumentException { |
205 throws IllegalArgumentException | 187 final Date from = df.parse(date); |
206 { | |
207 Date from = df.parse(date); | |
208 this.inputPanel.setFromDate(from); | 188 this.inputPanel.setFromDate(from); |
209 } | 189 } |
210 | 190 |
211 protected void setToDate(String date, DateTimeFormat df) | 191 protected void setToDate(final String date, final DateTimeFormat df) throws IllegalArgumentException { |
212 throws IllegalArgumentException | 192 final Date to = df.parse(date); |
213 { | |
214 Date to = df.parse(date); | |
215 this.inputPanel.setToDate(to); | 193 this.inputPanel.setToDate(to); |
216 } | 194 } |
217 | 195 |
218 protected boolean saveDateValues() { | 196 protected boolean saveDateValues() { |
219 Date st = inputPanel.getValue().getStartDate(); | 197 final Date st = this.inputPanel.getValue().getStartDate(); |
220 Date en = inputPanel.getValue().getEndDate(); | 198 final Date en = this.inputPanel.getValue().getEndDate(); |
221 if (st == null || en == null) { | 199 if (st == null || en == null) { |
222 SC.warn(MESSAGES.error_wrong_date()); | 200 SC.warn(this.MESSAGES.error_wrong_date()); |
223 return false; | 201 return false; |
224 } | 202 } |
225 | 203 |
226 long start = st.getTime(); | 204 final long start = st.getTime(); |
227 long end = en.getTime(); | 205 final long end = en.getTime(); |
228 | 206 |
229 if (start <= end) { | 207 if (start <= end) { |
230 this.start = start; | 208 this.start = start; |
231 this.end = end; | 209 this.end = end; |
232 return true; | 210 return true; |