Mercurial > dive4elements > river
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 } |