annotate flys-client/src/main/java/de/intevation/flys/client/client/ui/map/GetFeatureInfo.java @ 5813:e0ab5a566688

Rework FeatureInfo Window fopr issue 775 Looks much better now :)
author Andre Heinecke <aheinecke@intevation.de>
date Wed, 24 Apr 2013 14:58:14 +0200
parents af2aa716152f
children a4ff4167be1e
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;
5794
af2aa716152f Fix issue1254, make GetFeatureInfo work reliably
Andre Heinecke <aheinecke@intevation.de>
parents: 2439
diff changeset
9 import com.smartgwt.client.widgets.grid.ListGridRecord;
1400
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
10
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.Map;
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.LonLat;
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.Pixel;
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
14 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
15
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
16 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
17
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.FLYSConstants;
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.GFIService;
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
20 import de.intevation.flys.client.client.services.GFIServiceAsync;
5794
af2aa716152f Fix issue1254, make GetFeatureInfo work reliably
Andre Heinecke <aheinecke@intevation.de>
parents: 2439
diff changeset
21 import de.intevation.flys.client.shared.model.FacetRecord;
af2aa716152f Fix issue1254, make GetFeatureInfo work reliably
Andre Heinecke <aheinecke@intevation.de>
parents: 2439
diff changeset
22 import de.intevation.flys.client.shared.model.Theme;
5813
e0ab5a566688 Rework FeatureInfo Window fopr issue 775
Andre Heinecke <aheinecke@intevation.de>
parents: 5794
diff changeset
23 import de.intevation.flys.client.shared.model.AttributedTheme;
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
24 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
25
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 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
28
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
29 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
30
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
31 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
32
2439
46fc11ad697f #555 Close existing GetFeatureInfoWindows before creating new ones.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2438
diff changeset
33 protected GetFeatureInfoWindow gfiWindow;
46fc11ad697f #555 Close existing GetFeatureInfoWindows before creating new ones.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2438
diff changeset
34
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
35 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
36 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
37 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
38
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
39
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
40 /**
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
41 * @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
42 * @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
43 * @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
44 * @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
45 */
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
46 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
47 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
48 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
49 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
50 }
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
51
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 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
54 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
55 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
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 else {
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
58 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
59 }
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
60 }
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
61
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
62
5813
e0ab5a566688 Rework FeatureInfo Window fopr issue 775
Andre Heinecke <aheinecke@intevation.de>
parents: 5794
diff changeset
63 protected void newGetFeatureInfoWindow(List<FeatureInfo> features, String title) {
2439
46fc11ad697f #555 Close existing GetFeatureInfoWindows before creating new ones.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2438
diff changeset
64 if (gfiWindow != null) {
46fc11ad697f #555 Close existing GetFeatureInfoWindows before creating new ones.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2438
diff changeset
65 gfiWindow.destroy();
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
5813
e0ab5a566688 Rework FeatureInfo Window fopr issue 775
Andre Heinecke <aheinecke@intevation.de>
parents: 5794
diff changeset
68 gfiWindow = new GetFeatureInfoWindow(features, title);
2439
46fc11ad697f #555 Close existing GetFeatureInfoWindows before creating new ones.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2438
diff changeset
69 gfiWindow.show();
46fc11ad697f #555 Close existing GetFeatureInfoWindows before creating new ones.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2438
diff changeset
70 }
46fc11ad697f #555 Close existing GetFeatureInfoWindows before creating new ones.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2438
diff changeset
71
46fc11ad697f #555 Close existing GetFeatureInfoWindows before creating new ones.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2438
diff changeset
72
1400
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
73 @Override
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
74 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
75 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
76 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
77
5794
af2aa716152f Fix issue1254, make GetFeatureInfo work reliably
Andre Heinecke <aheinecke@intevation.de>
parents: 2439
diff changeset
78 if (themePanel.getSelectedRecords().length == 0) {
af2aa716152f Fix issue1254, make GetFeatureInfo work reliably
Andre Heinecke <aheinecke@intevation.de>
parents: 2439
diff changeset
79 SC.say(MSG.requireTheme());
af2aa716152f Fix issue1254, make GetFeatureInfo work reliably
Andre Heinecke <aheinecke@intevation.de>
parents: 2439
diff changeset
80 }
1400
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
81
5794
af2aa716152f Fix issue1254, make GetFeatureInfo work reliably
Andre Heinecke <aheinecke@intevation.de>
parents: 2439
diff changeset
82 for (ListGridRecord rec : themePanel.getSelectedRecords()) {
af2aa716152f Fix issue1254, make GetFeatureInfo work reliably
Andre Heinecke <aheinecke@intevation.de>
parents: 2439
diff changeset
83 Theme act_theme = ((FacetRecord)rec).getTheme();
5813
e0ab5a566688 Rework FeatureInfo Window fopr issue 775
Andre Heinecke <aheinecke@intevation.de>
parents: 5794
diff changeset
84 final AttributedTheme at = (AttributedTheme)act_theme;
5794
af2aa716152f Fix issue1254, make GetFeatureInfo work reliably
Andre Heinecke <aheinecke@intevation.de>
parents: 2439
diff changeset
85 gfiService.query(
af2aa716152f Fix issue1254, make GetFeatureInfo work reliably
Andre Heinecke <aheinecke@intevation.de>
parents: 2439
diff changeset
86 act_theme,
af2aa716152f Fix issue1254, make GetFeatureInfo work reliably
Andre Heinecke <aheinecke@intevation.de>
parents: 2439
diff changeset
87 infoFormat,
af2aa716152f Fix issue1254, make GetFeatureInfo work reliably
Andre Heinecke <aheinecke@intevation.de>
parents: 2439
diff changeset
88 map.getExtent().toString(),
af2aa716152f Fix issue1254, make GetFeatureInfo work reliably
Andre Heinecke <aheinecke@intevation.de>
parents: 2439
diff changeset
89 map.getProjection(),
af2aa716152f Fix issue1254, make GetFeatureInfo work reliably
Andre Heinecke <aheinecke@intevation.de>
parents: 2439
diff changeset
90 (int) map.getSize().getHeight(),
af2aa716152f Fix issue1254, make GetFeatureInfo work reliably
Andre Heinecke <aheinecke@intevation.de>
parents: 2439
diff changeset
91 (int) map.getSize().getWidth(),
af2aa716152f Fix issue1254, make GetFeatureInfo work reliably
Andre Heinecke <aheinecke@intevation.de>
parents: 2439
diff changeset
92 pixel.x(), pixel.y(),
af2aa716152f Fix issue1254, make GetFeatureInfo work reliably
Andre Heinecke <aheinecke@intevation.de>
parents: 2439
diff changeset
93 new AsyncCallback<List<FeatureInfo>>() {
af2aa716152f Fix issue1254, make GetFeatureInfo work reliably
Andre Heinecke <aheinecke@intevation.de>
parents: 2439
diff changeset
94 @Override
af2aa716152f Fix issue1254, make GetFeatureInfo work reliably
Andre Heinecke <aheinecke@intevation.de>
parents: 2439
diff changeset
95 public void onFailure(Throwable e) {
af2aa716152f Fix issue1254, make GetFeatureInfo work reliably
Andre Heinecke <aheinecke@intevation.de>
parents: 2439
diff changeset
96 SC.warn(MSG.getString(e.getMessage()));
af2aa716152f Fix issue1254, make GetFeatureInfo work reliably
Andre Heinecke <aheinecke@intevation.de>
parents: 2439
diff changeset
97 }
af2aa716152f Fix issue1254, make GetFeatureInfo work reliably
Andre Heinecke <aheinecke@intevation.de>
parents: 2439
diff changeset
98
af2aa716152f Fix issue1254, make GetFeatureInfo work reliably
Andre Heinecke <aheinecke@intevation.de>
parents: 2439
diff changeset
99 @Override
af2aa716152f Fix issue1254, make GetFeatureInfo work reliably
Andre Heinecke <aheinecke@intevation.de>
parents: 2439
diff changeset
100 public void onSuccess(List<FeatureInfo> features) {
af2aa716152f Fix issue1254, make GetFeatureInfo work reliably
Andre Heinecke <aheinecke@intevation.de>
parents: 2439
diff changeset
101 if (features != null && !features.isEmpty())
5813
e0ab5a566688 Rework FeatureInfo Window fopr issue 775
Andre Heinecke <aheinecke@intevation.de>
parents: 5794
diff changeset
102 newGetFeatureInfoWindow(features, at.getAttr("description"));
5794
af2aa716152f Fix issue1254, make GetFeatureInfo work reliably
Andre Heinecke <aheinecke@intevation.de>
parents: 2439
diff changeset
103 }
af2aa716152f Fix issue1254, make GetFeatureInfo work reliably
Andre Heinecke <aheinecke@intevation.de>
parents: 2439
diff changeset
104 }
af2aa716152f Fix issue1254, make GetFeatureInfo work reliably
Andre Heinecke <aheinecke@intevation.de>
parents: 2439
diff changeset
105 );
af2aa716152f Fix issue1254, make GetFeatureInfo work reliably
Andre Heinecke <aheinecke@intevation.de>
parents: 2439
diff changeset
106 break; // More intelligent handling when more then one is selected
af2aa716152f Fix issue1254, make GetFeatureInfo work reliably
Andre Heinecke <aheinecke@intevation.de>
parents: 2439
diff changeset
107 }
1400
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
108 }
96708d81eaf6 Added an initial GetFeatureInfo tool to get information about points in the map.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
109 }

http://dive4elements.wald.intevation.org