comparison gwt-client/src/main/java/org/dive4elements/river/client/client/ui/minfo/SedLoadPeriodPanel.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/minfo/SedLoadPeriodPanel.java@821a02bbfb4e
children 172338b1407f
comparison
equal deleted inserted replaced
5837:d9901a08d0a6 5838:5aa05a7a34b7
1 package org.dive4elements.river.client.client.ui.minfo;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 import com.google.gwt.core.client.GWT;
7 import com.google.gwt.user.client.rpc.AsyncCallback;
8 import com.smartgwt.client.types.ListGridFieldType;
9 import com.smartgwt.client.util.SC;
10 import com.smartgwt.client.widgets.Canvas;
11 import com.smartgwt.client.widgets.Label;
12 import com.smartgwt.client.widgets.form.DynamicForm;
13 import com.smartgwt.client.widgets.form.fields.TextItem;
14 import com.smartgwt.client.widgets.form.validator.IsIntegerValidator;
15 import com.smartgwt.client.widgets.grid.ListGrid;
16 import com.smartgwt.client.widgets.grid.ListGridField;
17 import com.smartgwt.client.widgets.layout.HLayout;
18 import com.smartgwt.client.widgets.layout.VLayout;
19
20 import org.dive4elements.river.client.client.Config;
21 import org.dive4elements.river.client.client.services.SedimentLoadInfoService;
22 import org.dive4elements.river.client.client.services.SedimentLoadInfoServiceAsync;
23 import org.dive4elements.river.client.client.ui.AbstractUIProvider;
24 import org.dive4elements.river.client.shared.model.ArtifactDescription;
25 import org.dive4elements.river.client.shared.model.Data;
26 import org.dive4elements.river.client.shared.model.DataItem;
27 import org.dive4elements.river.client.shared.model.DataList;
28 import org.dive4elements.river.client.shared.model.DefaultData;
29 import org.dive4elements.river.client.shared.model.DefaultDataItem;
30 import org.dive4elements.river.client.shared.model.SedimentLoadInfoObject;
31 import org.dive4elements.river.client.shared.model.SedimentLoadInfoRecord;
32
33
34 public class SedLoadPeriodPanel
35 extends AbstractUIProvider
36 {
37 protected SedimentLoadInfoServiceAsync sedLoadInfoService =
38 GWT.create(SedimentLoadInfoService.class);
39
40 private TextItem start;
41 private TextItem end;
42
43 private ListGrid sedLoadTable;
44
45 public SedLoadPeriodPanel () {
46 }
47
48 @Override
49 public Canvas createOld(DataList dataList) {
50 List<Data> items = dataList.getAll();
51 Data start = getData(items, "start");
52 Data end = getData(items, "end");
53 DataItem[] startItem = start.getItems();
54 DataItem[] endItem = end.getItems();
55
56 String v1 = startItem[0].getStringValue();
57 String v2 = endItem[0].getStringValue();
58
59 int v1i = 0;
60 int v2i = 0;
61 try {
62 v1i = Integer.parseInt(v1);
63 v2i = Integer.parseInt(v2);
64 }
65 catch (NumberFormatException nfe) {
66 GWT.log(nfe.toString());
67 }
68 Label old = new Label(v1i + " - " + v2i);
69 HLayout layout = new HLayout();
70 layout.setWidth("400px");
71
72 Label label = new Label(dataList.getLabel());
73 label.setWidth("200px");
74
75 Canvas back = getBackButton(dataList.getState());
76
77 layout.addMember(label);
78 layout.addMember(old);
79 layout.addMember(back);
80
81 return layout;
82 }
83
84 @Override
85 public Canvas create(DataList data) {
86 VLayout layout = new VLayout();
87
88 Canvas helper = createHelper();
89 this.helperContainer.addMember(helper);
90
91 Canvas submit = getNextButton();
92 Canvas widget = createWidget(data);
93
94 layout.addMember(widget);
95 layout.addMember(submit);
96
97 fetchSedimentLoadData();
98
99 return layout;
100 }
101
102 private Canvas createHelper() {
103 sedLoadTable = new ListGrid();
104 sedLoadTable.setShowHeaderContextMenu(false);
105 sedLoadTable.setWidth100();
106 sedLoadTable.setShowRecordComponents(true);
107 sedLoadTable.setShowRecordComponentsByCell(true);
108 sedLoadTable.setHeight100();
109 sedLoadTable.setEmptyMessage(MSG.empty_table());
110 sedLoadTable.setCanReorderFields(false);
111
112 ListGridField date = new ListGridField("date", MSG.year());
113 date.setType(ListGridFieldType.TEXT);
114 date.setWidth(100);
115
116 ListGridField descr =
117 new ListGridField("description", MSG.description());
118 descr.setType(ListGridFieldType.TEXT);
119 descr.setWidth("*");
120
121 sedLoadTable.setFields(date, descr);
122 return sedLoadTable;
123 }
124
125 public Canvas createWidget(DataList data) {
126 VLayout layout = new VLayout();
127
128 Label title = new Label(data.get(0).getDescription());
129 title.setHeight("25px");
130
131 DynamicForm form = new DynamicForm();
132 form.setNumCols(4);
133 start = new TextItem(MSG.from());
134 start.setValidators(new IsIntegerValidator());
135 end = new TextItem(MSG.to());
136 end.setValidators(new IsIntegerValidator());
137 form.setFields(start, end);
138 // inputPanel.setToTitle(MSG.to());
139 // inputPanel.setFromTitle(MSG.from());
140 // inputPanel.setShowTitle(false);
141
142 layout.addMember(title);
143 layout.addMember(form);
144
145 return layout;
146 }
147
148 @Override
149 protected Data[] getData() {
150 int v1;
151 int v2;
152 try {
153 v1 = Integer.parseInt(start.getValueAsString());
154 v2 = Integer.parseInt(end.getValueAsString());
155 }
156 catch(NumberFormatException nfe) {
157 // warn the user...
158 return new Data[0];
159 }
160 if (validateRange(v1, v2)) {
161 List<Data> data = new ArrayList<Data>();
162
163 DataItem startItem = new DefaultDataItem("start", "start", start.getValueAsString());
164 DataItem endItem = new DefaultDataItem("end", "end", end.getValueAsString());
165 data.add(new DefaultData(
166 "start",
167 null,
168 null,
169 new DataItem[] { startItem }));
170 data.add(new DefaultData(
171 "end",
172 null,
173 null,
174 new DataItem[] { endItem }));
175
176 return data.toArray(new Data[data.size()]);
177 }
178 return new Data[0];
179 }
180
181 protected boolean validateRange(int v1, int v2) {
182 // TODO: Set useful years for validation. Current range is between start
183 // of gregorian calendar and a year in the future...
184 if ((v1 > 1582 && v1 < 2100)
185 && (v2 > 1582 && v2 < 2100)) {
186 return true;
187 }
188 return false;
189 }
190
191 protected void fetchSedimentLoadData() {
192 Config config = Config.getInstance();
193 String locale = config.getLocale ();
194
195 ArtifactDescription adescr = artifact.getArtifactDescription();
196 DataList[] data = adescr.getOldData();
197
198 double[] km = artifact.getArtifactDescription().getKMRange();
199 String river = artifact.getArtifactDescription().getRiver();
200
201 sedLoadInfoService.getSedimentLoadInfo(locale, river, "single", km[0], km[1],
202 new AsyncCallback<SedimentLoadInfoObject[]>() {
203 public void onFailure(Throwable caught) {
204 GWT.log("Could not recieve sediment load informations.");
205 SC.warn(caught.getMessage());
206 }
207
208 public void onSuccess(SedimentLoadInfoObject[] sedLoad) {
209 int num = sedLoad != null ? sedLoad.length :0;
210 GWT.log("Recieved " + num + " sediment load informations.");
211
212 if (num == 0) {
213 return;
214 }
215
216 addSedimentLoadInfo(sedLoad);
217 }
218 }
219 );
220 }
221
222
223 protected void addSedimentLoadInfo (SedimentLoadInfoObject[] sedLoad) {
224 for(SedimentLoadInfoObject sl: sedLoad) {
225 SedimentLoadInfoRecord rec = new SedimentLoadInfoRecord(sl);
226 sedLoadTable.addData(rec);
227 }
228 }
229
230 }

http://dive4elements.wald.intevation.org