comparison gwt-client/src/main/java/org/dive4elements/river/client/client/ui/fixation/FixPeriodPanel.java @ 5838:5aa05a7a34b7

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

http://dive4elements.wald.intevation.org