comparison flys-client/src/main/java/de/intevation/flys/client/client/ui/DigitizePanel.java @ 4062:145980c21700

Handle error conditions more robust.
author Christian Lins <christian.lins@intevation.de>
date Mon, 08 Oct 2012 12:10:50 +0200
parents 88b51e6e0334
children 360e22afb98b
comparison
equal deleted inserted replaced
4057:c3b959de4d83 4062:145980c21700
1 package de.intevation.flys.client.client.ui; 1 package de.intevation.flys.client.client.ui;
2
3 import java.util.List;
4 import java.util.LinkedHashMap;
5 2
6 import com.google.gwt.core.client.GWT; 3 import com.google.gwt.core.client.GWT;
7 import com.google.gwt.user.client.rpc.AsyncCallback; 4 import com.google.gwt.user.client.rpc.AsyncCallback;
8 5
6 import com.smartgwt.client.types.Encoding;
7 import com.smartgwt.client.types.VerticalAlignment;
9 import com.smartgwt.client.util.SC; 8 import com.smartgwt.client.util.SC;
9 import com.smartgwt.client.widgets.Button;
10 import com.smartgwt.client.widgets.Canvas; 10 import com.smartgwt.client.widgets.Canvas;
11 import com.smartgwt.client.widgets.Button; 11 import com.smartgwt.client.widgets.HTMLPane;
12 import com.smartgwt.client.widgets.Label; 12 import com.smartgwt.client.widgets.Label;
13 import com.smartgwt.client.widgets.events.ClickEvent;
14 import com.smartgwt.client.widgets.events.ClickHandler;
13 import com.smartgwt.client.widgets.events.ResizedEvent; 15 import com.smartgwt.client.widgets.events.ResizedEvent;
14 import com.smartgwt.client.widgets.events.ResizedHandler; 16 import com.smartgwt.client.widgets.events.ResizedHandler;
15 import com.smartgwt.client.widgets.events.ClickEvent; 17 import com.smartgwt.client.widgets.events.VisibilityChangedEvent;
16 import com.smartgwt.client.widgets.events.ClickHandler; 18 import com.smartgwt.client.widgets.events.VisibilityChangedHandler;
19 import com.smartgwt.client.widgets.form.DynamicForm;
20 import com.smartgwt.client.widgets.form.fields.SelectItem;
21 import com.smartgwt.client.widgets.form.fields.UploadItem;
22 import com.smartgwt.client.widgets.layout.VLayout;
23 import com.smartgwt.client.widgets.tab.events.TabSelectedEvent;
17 import com.smartgwt.client.widgets.tab.events.TabSelectedHandler; 24 import com.smartgwt.client.widgets.tab.events.TabSelectedHandler;
18 import com.smartgwt.client.widgets.tab.events.TabSelectedEvent; 25
19 import com.smartgwt.client.widgets.events.VisibilityChangedHandler; 26 import de.intevation.flys.client.client.Config;
20 import com.smartgwt.client.widgets.events.VisibilityChangedEvent; 27 import de.intevation.flys.client.client.services.MapInfoService;
21 import com.smartgwt.client.widgets.layout.VLayout; 28 import de.intevation.flys.client.client.services.MapInfoServiceAsync;
22 import com.smartgwt.client.widgets.form.DynamicForm; 29 import de.intevation.flys.client.client.ui.map.FloodMap;
23 import com.smartgwt.client.widgets.form.fields.UploadItem; 30 import de.intevation.flys.client.client.ui.map.MapPanel;
24 import com.smartgwt.client.widgets.form.fields.SelectItem;
25 import com.smartgwt.client.types.VerticalAlignment;
26 import com.smartgwt.client.widgets.HTMLPane;
27 import com.smartgwt.client.types.Encoding;
28
29 import org.gwtopenmaps.openlayers.client.Map;
30 import org.gwtopenmaps.openlayers.client.feature.VectorFeature;
31 import org.gwtopenmaps.openlayers.client.format.GeoJSON;
32 import org.gwtopenmaps.openlayers.client.layer.WMS;
33 import org.gwtopenmaps.openlayers.client.layer.WMSParams;
34 import org.gwtopenmaps.openlayers.client.layer.WMSOptions;
35
36 import de.intevation.flys.client.shared.model.Data; 31 import de.intevation.flys.client.shared.model.Data;
37 import de.intevation.flys.client.shared.model.DataItem; 32 import de.intevation.flys.client.shared.model.DataItem;
38 import de.intevation.flys.client.shared.model.DataList; 33 import de.intevation.flys.client.shared.model.DataList;
39 import de.intevation.flys.client.shared.model.DefaultData; 34 import de.intevation.flys.client.shared.model.DefaultData;
40 import de.intevation.flys.client.shared.model.DefaultDataItem; 35 import de.intevation.flys.client.shared.model.DefaultDataItem;
41 import de.intevation.flys.client.shared.model.MapInfo; 36 import de.intevation.flys.client.shared.model.MapInfo;
42 37
43 import de.intevation.flys.client.client.Config; 38 import java.util.LinkedHashMap;
44 import de.intevation.flys.client.client.ui.map.FloodMap; 39 import java.util.List;
45 import de.intevation.flys.client.client.ui.map.MapPanel; 40
46 import de.intevation.flys.client.client.services.MapInfoService; 41 import org.gwtopenmaps.openlayers.client.Map;
47 import de.intevation.flys.client.client.services.MapInfoServiceAsync; 42 import org.gwtopenmaps.openlayers.client.feature.VectorFeature;
43 import org.gwtopenmaps.openlayers.client.format.GeoJSON;
44 import org.gwtopenmaps.openlayers.client.layer.WMS;
45 import org.gwtopenmaps.openlayers.client.layer.WMSOptions;
46 import org.gwtopenmaps.openlayers.client.layer.WMSParams;
48 47
49 48
50 public class DigitizePanel 49 public class DigitizePanel
51 extends SelectProvider 50 extends SelectProvider
52 implements TabSelectedHandler, VisibilityChangedHandler { 51 implements TabSelectedHandler, VisibilityChangedHandler {
98 } 97 }
99 } 98 }
100 99
101 String river = getDataValue("state.winfo.river", "river"); 100 String river = getDataValue("state.winfo.river", "river");
102 mapInfo.getMapInfo(locale, river, new AsyncCallback<MapInfo>() { 101 mapInfo.getMapInfo(locale, river, new AsyncCallback<MapInfo>() {
102 @Override
103 public void onFailure(Throwable caught) { 103 public void onFailure(Throwable caught) {
104 String msg = caught.getMessage(); 104 String msg = caught.getMessage();
105 105
106 GWT.log("Error while fetching MapInfo: " + msg); 106 GWT.log("Error while fetching MapInfo: " + msg);
107 SC.warn(MSG.getString(msg)); 107 SC.warn(MSG.getString(msg));
108 } 108 }
109 109
110 @Override
110 public void onSuccess(MapInfo info) { 111 public void onSuccess(MapInfo info) {
111 createMapWidget(info, geojson[0]); 112 createMapWidget(info, geojson[0]);
112 } 113 }
113 }); 114 });
114 115
121 * 122 *
122 * @param data The {@link DataList} object. 123 * @param data The {@link DataList} object.
123 * 124 *
124 * @return a combobox. 125 * @return a combobox.
125 */ 126 */
127 @Override
126 protected Canvas createWidget(DataList data) { 128 protected Canvas createWidget(DataList data) {
127 GWT.log("DigitizePanel - createWidget()"); 129 GWT.log("DigitizePanel - createWidget()");
128 130
129 VLayout layout = new VLayout(); 131 VLayout layout = new VLayout();
130 layout.setAlign(VerticalAlignment.TOP); 132 layout.setAlign(VerticalAlignment.TOP);
189 UploadItem uploadItem = new UploadItem(); 191 UploadItem uploadItem = new UploadItem();
190 uploadItem.setShowTitle(false); 192 uploadItem.setShowTitle(false);
191 uploadForm.setFields(uploadItem); 193 uploadForm.setFields(uploadItem);
192 Button submit = new Button(MSG.upload_file()); 194 Button submit = new Button(MSG.upload_file());
193 submit.addClickHandler(new ClickHandler() { 195 submit.addClickHandler(new ClickHandler() {
196 @Override
194 public void onClick(ClickEvent e) { 197 public void onClick(ClickEvent e) {
195 uploadForm.submitForm(); 198 uploadForm.submitForm();
196 } 199 }
197 }); 200 });
198 layout.addMember(frame); 201 layout.addMember(frame);
214 @Override 217 @Override
215 protected Data[] getData() { 218 protected Data[] getData() {
216 Data[] data = super.getData(); 219 Data[] data = super.getData();
217 Data[] total = new Data[2]; 220 Data[] total = new Data[2];
218 221
219 DataItem item = new DefaultDataItem( 222 if (floodMap != null) {
220 UESK_BARRIERS, UESK_BARRIERS, floodMap.getFeaturesAsGeoJSON()); 223 DataItem item = new DefaultDataItem(
221 224 UESK_BARRIERS, UESK_BARRIERS, floodMap.getFeaturesAsGeoJSON());
222 total[0] = data[0]; 225 total[0] = data[0];
223 total[1] = new DefaultData( 226 total[1] = new DefaultData(
224 UESK_BARRIERS, null, null, new DataItem[] { item }); 227 UESK_BARRIERS, null, null, new DataItem[] { item });
228 }
229 else {
230 // Happens when OpenLayers is missing
231 GWT.log("floodMap is null -> OpenLayers missing?");
232 }
225 233
226 return total; 234 return total;
227 } 235 }
228 236
229 237
233 floodMap = mapPanel.getFloodMap(); 241 floodMap = mapPanel.getFloodMap();
234 Map map = floodMap.getMap(); 242 Map map = floodMap.getMap();
235 243
236 helperContainer.addMember(mapPanel); 244 helperContainer.addMember(mapPanel);
237 helperContainer.addResizedHandler(new ResizedHandler() { 245 helperContainer.addResizedHandler(new ResizedHandler() {
246 @Override
238 public void onResized(ResizedEvent e) { 247 public void onResized(ResizedEvent e) {
239 Integer height = helperContainer.getHeight(); 248 Integer height = helperContainer.getHeight();
240 Integer width = helperContainer.getWidth(); 249 Integer width = helperContainer.getWidth();
241 250
242 height = height * 99 / 100; 251 height = height * 99 / 100;
289 298
290 return wms; 299 return wms;
291 } 300 }
292 301
293 302
303 @Override
294 public void onTabSelected(TabSelectedEvent tse) { 304 public void onTabSelected(TabSelectedEvent tse) {
295 if (tse.getTabNum () != 0) { 305 if (tse.getTabNum () != 0) {
296 floodMap.hideBarrierLayer(); 306 floodMap.hideBarrierLayer();
297 } 307 }
298 else { 308 else {
299 floodMap.showBarrierLayer(); 309 floodMap.showBarrierLayer();
300 } 310 }
301 } 311 }
302 312
313 @Override
303 public void onVisibilityChanged(VisibilityChangedEvent vce) { 314 public void onVisibilityChanged(VisibilityChangedEvent vce) {
304 if (!vce.getIsVisible()) { 315 if (!vce.getIsVisible()) {
305 floodMap.hideBarrierLayer(); 316 floodMap.hideBarrierLayer();
306 mapPanel.getMapToolbar().activateDrawFeature(false); 317 mapPanel.getMapToolbar().activateDrawFeature(false);
307 } 318 }

http://dive4elements.wald.intevation.org