comparison gwt-client/src/main/java/org/dive4elements/river/client/client/ui/PeriodPanel.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/PeriodPanel.java@821a02bbfb4e
children 172338b1407f
comparison
equal deleted inserted replaced
5837:d9901a08d0a6 5838:5aa05a7a34b7
1 package org.dive4elements.river.client.client.ui;
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
21 import java.util.ArrayList;
22 import java.util.Date;
23 import java.util.List;
24
25 /**
26 * This UIProvider creates a panel for location or distance input.
27 *
28 * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a>
29 */
30 public class PeriodPanel
31 extends AbstractUIProvider
32 {
33 private static final long serialVersionUID = -5249560815807538821L;
34
35 /** The message class that provides i18n strings. */
36 protected FLYSConstants MSG = GWT.create(FLYSConstants.class);
37
38 DateRangeItem inputPanel;
39
40 long start;
41 long end;
42
43 protected String startName;
44 protected String endName;
45
46 public PeriodPanel() {
47 this("start", "end");
48 }
49
50 public PeriodPanel(String startName, String endName) {
51 this.startName = startName;
52 this.endName = endName;
53 }
54
55
56 @Override
57 public Canvas create(DataList list) {
58 VLayout layout = new VLayout();
59
60 Canvas helper = createHelper();
61 this.helperContainer.addMember(helper);
62
63 Canvas submit = getNextButton();
64 Canvas widget = createWidget(list);
65
66 layout.addMember(widget);
67 layout.addMember(submit);
68 return layout;
69 }
70
71
72 public Canvas createWidget(DataList data) {
73 VLayout layout = new VLayout();
74
75 Label title = new Label(data.get(0).getDescription());
76 title.setHeight("25px");
77
78 DynamicForm form = new DynamicForm();
79 inputPanel = new DateRangeItem();
80 inputPanel.setToTitle(MSG.to());
81 inputPanel.setFromTitle(MSG.from());
82 inputPanel.setShowTitle(false);
83 form.setFields(inputPanel);
84
85 layout.addMember(title);
86 layout.addMember(form);
87
88 return layout;
89 }
90
91 protected Canvas createHelper() {
92 return new VLayout();
93 }
94
95 @Override
96 public Canvas createOld(DataList dataList) {
97 List<Data> items = dataList.getAll();
98
99 Data start = getData(items, startName);
100 Data end = getData(items, endName);
101 DataItem[] startItem = start.getItems();
102 DataItem[] endItem = end.getItems();
103
104 String v1 = startItem[0].getStringValue();
105 String v2 = endItem[0].getStringValue();
106
107 long v1l = 0;
108 long v2l = 0;
109 try {
110 v1l = Long.parseLong(v1);
111 v2l = Long.parseLong(v2);
112 }
113 catch(NumberFormatException nfe) {
114 GWT.log(nfe.toString());
115 }
116 Date d1 = new Date(v1l);
117 Date d2 = new Date(v2l);
118
119 DateTimeFormat f =
120 DateTimeFormat.getFormat(
121 DateTimeFormat.PredefinedFormat.DATE_MEDIUM);
122 StringBuilder sb = new StringBuilder();
123 sb.append(f.format(d1) + " - ");
124 sb.append(f.format(d2));
125
126 Label old = new Label(sb.toString());
127 old.setWidth(130);
128
129 HLayout layout = new HLayout();
130 layout.setWidth("400px");
131
132 Label label = new Label(dataList.getLabel());
133 label.setWidth("200px");
134
135 Canvas back = getBackButton(dataList.getState());
136
137 layout.addMember(label);
138 layout.addMember(old);
139 layout.addMember(back);
140
141 return layout;
142 }
143
144
145 /**
146 * This method returns the selected data.
147 *
148 * @return the selected/inserted data.
149 */
150 @Override
151 public Data[] getData() {
152 List<Data> data = new ArrayList<Data>();
153
154 boolean valid = saveDateValues();
155 if(valid) {
156 String start = Long.valueOf(this.start).toString();
157 String end = Long.valueOf(this.end).toString();
158 DataItem startItem = new DefaultDataItem(startName, startName, start);
159 DataItem endItem = new DefaultDataItem(endName, endName, end);
160 data.add(new DefaultData(
161 startName,
162 null,
163 null,
164 new DataItem[] { startItem }));
165 data.add(new DefaultData(
166 endName,
167 null,
168 null,
169 new DataItem[] { endItem }));
170 }
171
172 return data.toArray(new Data[data.size()]);
173 }
174
175
176 protected boolean saveDateValues() {
177 Date st = inputPanel.getFromDate();
178 Date en = inputPanel.getToDate();
179 if (st == null || en == null) {
180 SC.warn(MSG.error_wrong_date());
181 return false;
182 }
183
184 long start = st.getTime();
185 long end = en.getTime();
186
187 if (start <= end) {
188 this.start = start;
189 this.end = end;
190 return true;
191 }
192 return false;
193 }
194 }

http://dive4elements.wald.intevation.org