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

http://dive4elements.wald.intevation.org