comparison flys-client/src/main/java/de/intevation/flys/client/client/ui/PeriodPanel.java @ 2898:242b5c230707

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

http://dive4elements.wald.intevation.org