Mercurial > dive4elements > river
comparison gwt-client/src/main/java/org/dive4elements/river/client/client/ui/fixation/FixMultiPeriodPanel.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/FixMultiPeriodPanel.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.types.ListGridFieldType; | |
7 import com.smartgwt.client.widgets.Button; | |
8 import com.smartgwt.client.widgets.Canvas; | |
9 import com.smartgwt.client.widgets.Label; | |
10 import com.smartgwt.client.widgets.events.ClickEvent; | |
11 import com.smartgwt.client.widgets.events.ClickHandler; | |
12 import com.smartgwt.client.widgets.grid.ListGrid; | |
13 import com.smartgwt.client.widgets.grid.ListGridField; | |
14 import com.smartgwt.client.widgets.grid.ListGridRecord; | |
15 import com.smartgwt.client.widgets.grid.events.RecordClickEvent; | |
16 import com.smartgwt.client.widgets.grid.events.RecordClickHandler; | |
17 import com.smartgwt.client.widgets.layout.HLayout; | |
18 import com.smartgwt.client.widgets.layout.VLayout; | |
19 | |
20 import org.dive4elements.river.client.client.FLYSConstants; | |
21 import org.dive4elements.river.client.shared.model.Data; | |
22 import org.dive4elements.river.client.shared.model.DataItem; | |
23 import org.dive4elements.river.client.shared.model.DataList; | |
24 import org.dive4elements.river.client.shared.model.DefaultData; | |
25 import org.dive4elements.river.client.shared.model.DefaultDataItem; | |
26 | |
27 import java.util.ArrayList; | |
28 import java.util.Date; | |
29 import java.util.List; | |
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 FixMultiPeriodPanel | |
37 extends FixPeriodPanel | |
38 { | |
39 /** The message class that provides i18n strings. */ | |
40 protected FLYSConstants MESSAGES = GWT.create(FLYSConstants.class); | |
41 | |
42 protected ListGrid elements; | |
43 | |
44 protected String values; | |
45 | |
46 public FixMultiPeriodPanel() { | |
47 this("", ""); | |
48 } | |
49 | |
50 public FixMultiPeriodPanel(String startName, String endName) { | |
51 super(startName, endName); | |
52 } | |
53 | |
54 @Override | |
55 public Canvas createWidget(DataList data) { | |
56 HLayout input = new HLayout(); | |
57 VLayout root = new VLayout(); | |
58 VLayout grid = new VLayout(); | |
59 VLayout layout = (VLayout) super.createWidget(data); | |
60 Button add = new Button(MESSAGES.add()); | |
61 elements = new ListGrid(); | |
62 | |
63 add.addClickHandler(new ClickHandler() { | |
64 public void onClick(ClickEvent ce) { | |
65 Date f = inputPanel.getFromDate(); | |
66 Date t = inputPanel.getToDate(); | |
67 if (f == null || t == null) { | |
68 return; | |
69 } | |
70 DateRangeRecord drr = new DateRangeRecord(f, t); | |
71 elements.addData(drr); | |
72 } | |
73 }); | |
74 layout.addMember(add); | |
75 | |
76 Label sel = new Label("Selected"); | |
77 sel.setHeight(25); | |
78 elements.setWidth(185); | |
79 elements.setHeight(120); | |
80 elements.setShowHeaderContextMenu(false); | |
81 elements.setCanReorderFields(false); | |
82 elements.setCanSort(false); | |
83 elements.setCanEdit(false); | |
84 ListGridField from = new ListGridField("from", "From"); | |
85 ListGridField to = new ListGridField("to", "To"); | |
86 from.setWidth(70); | |
87 to.setWidth(70); | |
88 | |
89 final ListGridField removeField = | |
90 new ListGridField("_removeRecord", "Remove Record"){{ | |
91 setType(ListGridFieldType.ICON); | |
92 setIcon(GWT.getHostPageBaseURL() + MSG.removeFeature()); | |
93 setCanEdit(false); | |
94 setCanFilter(false); | |
95 setCanSort(false); | |
96 setCanGroupBy(false); | |
97 setCanFreeze(false); | |
98 setWidth(25); | |
99 }}; | |
100 | |
101 elements.addRecordClickHandler(new RecordClickHandler() { | |
102 public void onRecordClick(final RecordClickEvent event) { | |
103 // Just handle remove-clicks | |
104 if(!event.getField().getName().equals(removeField.getName())) { | |
105 return; | |
106 } | |
107 event.getViewer().removeData(event.getRecord()); | |
108 } | |
109 }); | |
110 | |
111 elements.setFields(from, to, removeField); | |
112 | |
113 grid.addMember(sel); | |
114 grid.addMember(elements); | |
115 input.addMember(layout); | |
116 input.addMember(grid); | |
117 root.addMember(input); | |
118 | |
119 return root; | |
120 } | |
121 | |
122 @Override | |
123 public Canvas createOld(DataList dataList) { | |
124 HLayout layout = new HLayout(); | |
125 layout.setWidth("400px"); | |
126 VLayout vLayout = new VLayout(); | |
127 vLayout.setWidth(130); | |
128 Label label = new Label(dataList.getLabel()); | |
129 label.setWidth("200px"); | |
130 label.setHeight(25); | |
131 | |
132 List<Data> items = dataList.getAll(); | |
133 Data str = getData(items, "ana_data"); | |
134 DataItem[] strItems = str.getItems(); | |
135 | |
136 String[] pairs = strItems[0].getLabel().split(";"); | |
137 for (int i = 0; i < pairs.length; i++) { | |
138 String[] vals = pairs[i].split(","); | |
139 try { | |
140 long f = Long.valueOf(vals[0]).longValue(); | |
141 long t = Long.valueOf(vals[1]).longValue(); | |
142 Date from = new Date(f); | |
143 Date to = new Date(t); | |
144 String fromString = | |
145 DateTimeFormat.getMediumDateFormat().format(from); | |
146 String toString = | |
147 DateTimeFormat.getMediumDateFormat().format(to); | |
148 | |
149 Label dateLabel = new Label(fromString + " - " + toString); | |
150 dateLabel.setHeight(20); | |
151 vLayout.addMember(dateLabel); | |
152 } | |
153 catch(NumberFormatException nfe) { | |
154 } | |
155 } | |
156 Canvas back = getBackButton(dataList.getState()); | |
157 layout.addMember(label); | |
158 layout.addMember(vLayout); | |
159 layout.addMember(back); | |
160 | |
161 return layout; | |
162 } | |
163 | |
164 | |
165 /** | |
166 * This method returns the selected data. | |
167 * | |
168 * @return the selected/inserted data. | |
169 */ | |
170 @Override | |
171 public Data[] getData() { | |
172 List<Data> data = new ArrayList<Data>(); | |
173 | |
174 boolean valid = saveDateValues(); | |
175 if(valid) { | |
176 DataItem item = new DefaultDataItem("ana_data", null, this.values); | |
177 data.add(new DefaultData( | |
178 "ana_data", | |
179 null, | |
180 null, | |
181 new DataItem[] { item })); | |
182 } | |
183 return data.toArray(new Data[data.size()]); | |
184 } | |
185 | |
186 | |
187 @Override | |
188 protected boolean saveDateValues() { | |
189 ListGridRecord[] lgr = elements.getRecords(); | |
190 if (lgr.length == 0) { | |
191 return false; | |
192 } | |
193 String data = ""; | |
194 for (int i = 0; i < lgr.length; i++) { | |
195 DateRangeRecord drr = (DateRangeRecord) lgr[i]; | |
196 data += drr.getFrom() + "," + drr.getTo(); | |
197 data += ";"; | |
198 } | |
199 values = data; | |
200 return true; | |
201 } | |
202 | |
203 | |
204 protected static class DateRangeRecord extends ListGridRecord { | |
205 protected Date from; | |
206 protected Date to; | |
207 | |
208 protected final static String FROM_FIELD = "from"; | |
209 protected final static String TO_FIELD = "to"; | |
210 | |
211 public DateRangeRecord (Date from, Date to) { | |
212 setFrom(from); | |
213 setTo(to); | |
214 } | |
215 | |
216 public void setFrom(Date from) { | |
217 this.from = from; | |
218 setAttribute( | |
219 FROM_FIELD, | |
220 DateTimeFormat.getMediumDateFormat().format(from)); | |
221 } | |
222 | |
223 | |
224 public void setTo(Date to) { | |
225 this.to = to; | |
226 setAttribute( | |
227 TO_FIELD, | |
228 DateTimeFormat.getMediumDateFormat().format(to)); | |
229 } | |
230 | |
231 | |
232 public long getFrom() { | |
233 return this.from.getTime(); | |
234 } | |
235 | |
236 | |
237 public long getTo() { | |
238 return this.to.getTime(); | |
239 } | |
240 } | |
241 } |