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 }

http://dive4elements.wald.intevation.org