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;

http://dive4elements.wald.intevation.org