annotate flys-client/src/main/java/de/intevation/flys/client/client/ui/map/GetFeatureInfo.java @ 2439:46fc11ad697f

#555 Close existing GetFeatureInfoWindows before creating new ones. flys-client/trunk@4107 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Thu, 01 Mar 2012 15:18:33 +0000
parents e0f4ea518d59
children af2aa716152f
rev   line source
1400
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
1 package de.intevation.flys.client.client.ui.map;
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
2
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
3 import java.util.List;
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
4
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
5 import com.google.gwt.core.client.GWT;
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
6 import com.google.gwt.user.client.rpc.AsyncCallback;
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
7
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
8 import com.smartgwt.client.util.SC;
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
9
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
10 import org.gwtopenmaps.openlayers.client.Map;
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
11 import org.gwtopenmaps.openlayers.client.LonLat;
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
12 import org.gwtopenmaps.openlayers.client.Pixel;
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
13 import org.gwtopenmaps.openlayers.client.event.MapClickListener;
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
14
1402
15ef3d3081b7 Parse GetFeatureInfo response on our own and display resulting FeatureInfo objects in the GetFeatureInfoWindow.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1400
diff changeset
15 import de.intevation.flys.client.shared.model.FeatureInfo;
1400
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
16
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
17 import de.intevation.flys.client.client.FLYSConstants;
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
18 import de.intevation.flys.client.client.services.GFIService;
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
19 import de.intevation.flys.client.client.services.GFIServiceAsync;
1404
09566522e899 Query GetFeatureInfo with layers defined in MapThemePanel - which are the real layers in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1402
diff changeset
20 import de.intevation.flys.client.client.ui.ThemePanel;
1400
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
21
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
22
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
23 public class GetFeatureInfo implements MapClickListener {
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
24
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
25 protected GFIServiceAsync gfiService = GWT.create(GFIService.class);
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
26
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
27 protected FLYSConstants MSG = GWT.create(FLYSConstants.class);
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
28
2439
46fc11ad697f #555 Close existing GetFeatureInfoWindows before creating new ones.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2438
diff changeset
29 protected GetFeatureInfoWindow gfiWindow;
46fc11ad697f #555 Close existing GetFeatureInfoWindows before creating new ones.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2438
diff changeset
30
1404
09566522e899 Query GetFeatureInfo with layers defined in MapThemePanel - which are the real layers in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1402
diff changeset
31 protected Map map;
09566522e899 Query GetFeatureInfo with layers defined in MapThemePanel - which are the real layers in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1402
diff changeset
32 protected ThemePanel themePanel;
09566522e899 Query GetFeatureInfo with layers defined in MapThemePanel - which are the real layers in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1402
diff changeset
33 protected String infoFormat;
1400
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
34
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
35
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
36 /**
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
37 * @param map
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
38 * @param themes
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
39 * @param url
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
40 * @param infoFormat
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
41 */
1404
09566522e899 Query GetFeatureInfo with layers defined in MapThemePanel - which are the real layers in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1402
diff changeset
42 public GetFeatureInfo(Map map, ThemePanel themePanel, String infoFormat) {
1400
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
43 this.map = map;
1404
09566522e899 Query GetFeatureInfo with layers defined in MapThemePanel - which are the real layers in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1402
diff changeset
44 this.themePanel = themePanel;
1400
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
45 this.infoFormat = infoFormat;
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
46 }
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
47
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
48
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
49 public void activate(boolean activate) {
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
50 if (activate) {
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
51 map.addMapClickListener(this);
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
52 }
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
53 else {
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
54 map.removeListener(this);
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
55 }
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
56 }
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
57
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
58
2439
46fc11ad697f #555 Close existing GetFeatureInfoWindows before creating new ones.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2438
diff changeset
59 protected void newGetFeatureInfoWindow(List<FeatureInfo> features) {
46fc11ad697f #555 Close existing GetFeatureInfoWindows before creating new ones.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2438
diff changeset
60 if (gfiWindow != null) {
46fc11ad697f #555 Close existing GetFeatureInfoWindows before creating new ones.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2438
diff changeset
61 gfiWindow.destroy();
46fc11ad697f #555 Close existing GetFeatureInfoWindows before creating new ones.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2438
diff changeset
62 }
46fc11ad697f #555 Close existing GetFeatureInfoWindows before creating new ones.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2438
diff changeset
63
46fc11ad697f #555 Close existing GetFeatureInfoWindows before creating new ones.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2438
diff changeset
64 gfiWindow = new GetFeatureInfoWindow(features);
46fc11ad697f #555 Close existing GetFeatureInfoWindows before creating new ones.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2438
diff changeset
65 gfiWindow.show();
46fc11ad697f #555 Close existing GetFeatureInfoWindows before creating new ones.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2438
diff changeset
66 }
46fc11ad697f #555 Close existing GetFeatureInfoWindows before creating new ones.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2438
diff changeset
67
46fc11ad697f #555 Close existing GetFeatureInfoWindows before creating new ones.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2438
diff changeset
68
1400
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
69 @Override
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
70 public void onClick(MapClickListener.MapClickEvent e) {
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
71 LonLat lonlat = e.getLonLat();
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
72 Pixel pixel = map.getPixelFromLonLat(lonlat);
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
73
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
74 gfiService.query(
2438
e0f4ea518d59 Query GetFeatureInfo for active layers only.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1404
diff changeset
75 themePanel.getThemeList().getActiveThemes(),
1400
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
76 infoFormat,
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
77 map.getExtent().toString(),
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
78 map.getProjection(),
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
79 (int) map.getSize().getHeight(),
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
80 (int) map.getSize().getWidth(),
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
81 pixel.x(), pixel.y(),
1402
15ef3d3081b7 Parse GetFeatureInfo response on our own and display resulting FeatureInfo objects in the GetFeatureInfoWindow.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1400
diff changeset
82 new AsyncCallback<List<FeatureInfo>>() {
1400
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
83 public void onFailure(Throwable e) {
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
84 SC.warn(MSG.getString(e.getMessage()));
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
85 }
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
86
1402
15ef3d3081b7 Parse GetFeatureInfo response on our own and display resulting FeatureInfo objects in the GetFeatureInfoWindow.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1400
diff changeset
87 public void onSuccess(List<FeatureInfo> features) {
2439
46fc11ad697f #555 Close existing GetFeatureInfoWindows before creating new ones.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2438
diff changeset
88 newGetFeatureInfoWindow(features);
1400
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
89 }
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
90 });
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
91 }
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
92 }

http://dive4elements.wald.intevation.org