Mercurial > dive4elements > river
annotate gwt-client/src/main/java/org/dive4elements/river/client/client/ui/map/MeasureControl.java @ 5861:172338b1407f
GWT client: Added copyright header.
author | Sascha L. Teichmann <teichmann@intevation.de> |
---|---|
date | Sun, 28 Apr 2013 14:30:15 +0200 |
parents | 5aa05a7a34b7 |
children | ea9eef426962 |
rev | line source |
---|---|
5861
172338b1407f
GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde |
172338b1407f
GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
2 * Software engineering by Intevation GmbH |
172338b1407f
GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
3 * |
172338b1407f
GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
4 * This file is Free Software under the GNU AGPL (>=v3) |
172338b1407f
GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the |
172338b1407f
GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
6 * documentation coming with Dive4Elements River for details. |
172338b1407f
GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
7 */ |
172338b1407f
GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
8 |
5835
821a02bbfb4e
Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5834
diff
changeset
|
9 package org.dive4elements.river.client.client.ui.map; |
802
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
10 |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
11 import com.google.gwt.core.client.GWT; |
1297
887eb0cd7dfc
Bugfix: #375 Limit the number of fractions in the result of the measure controls (in the map).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
880
diff
changeset
|
12 import com.google.gwt.i18n.client.NumberFormat; |
802
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
13 |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
14 import com.smartgwt.client.types.SelectionType; |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
15 import com.smartgwt.client.widgets.ImgButton; |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
16 import com.smartgwt.client.widgets.Label; |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
17 import com.smartgwt.client.widgets.events.ClickEvent; |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
18 import com.smartgwt.client.widgets.events.ClickHandler; |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
19 import com.smartgwt.client.widgets.layout.HLayout; |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
20 |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
21 import org.gwtopenmaps.openlayers.client.control.Measure; |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
22 import org.gwtopenmaps.openlayers.client.event.MeasureEvent; |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
23 import org.gwtopenmaps.openlayers.client.event.MeasureListener; |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
24 import org.gwtopenmaps.openlayers.client.event.MeasurePartialListener; |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
25 import org.gwtopenmaps.openlayers.client.handler.PathHandler; |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
26 import org.gwtopenmaps.openlayers.client.handler.PolygonHandler; |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
27 |
5835
821a02bbfb4e
Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5834
diff
changeset
|
28 import org.dive4elements.river.client.client.FLYSConstants; |
821a02bbfb4e
Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5834
diff
changeset
|
29 import org.dive4elements.river.client.client.utils.EnableDisableCmd; |
802
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
30 |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
31 |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
32 public class MeasureControl extends HLayout { |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
33 |
1297
887eb0cd7dfc
Bugfix: #375 Limit the number of fractions in the result of the measure controls (in the map).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
880
diff
changeset
|
34 public static final String NUMBER_FORMAT_PATTERN = "#.##"; |
887eb0cd7dfc
Bugfix: #375 Limit the number of fractions in the result of the measure controls (in the map).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
880
diff
changeset
|
35 |
1300
6890e1041eac
Bugfix: #289 Display measured areas in 'ha'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1297
diff
changeset
|
36 public static final String AREA_UNIT = "ha"; |
6890e1041eac
Bugfix: #289 Display measured areas in 'ha'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1297
diff
changeset
|
37 public static final int AREA_FACTOR_M = 10000; |
6890e1041eac
Bugfix: #289 Display measured areas in 'ha'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1297
diff
changeset
|
38 public static final int AREA_FACTOR_KM = 100; |
6890e1041eac
Bugfix: #289 Display measured areas in 'ha'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1297
diff
changeset
|
39 |
802
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
40 protected FLYSConstants MSG = GWT.create(FLYSConstants.class); |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
41 |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
42 protected FloodMap floodMap; |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
43 |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
44 protected Measure measureLine; |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
45 protected Measure measurePolygon; |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
46 |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
47 protected ImgButton measureLineButton; |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
48 protected ImgButton measurePolyButton; |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
49 protected Label label; |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
50 |
1297
887eb0cd7dfc
Bugfix: #375 Limit the number of fractions in the result of the measure controls (in the map).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
880
diff
changeset
|
51 protected NumberFormat formatter; |
887eb0cd7dfc
Bugfix: #375 Limit the number of fractions in the result of the measure controls (in the map).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
880
diff
changeset
|
52 |
802
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
53 |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
54 public MeasureControl(FloodMap floodMap, EnableDisableCmd cmd) { |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
55 this.floodMap = floodMap; |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
56 |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
57 measureLineButton = createMeasureLineControl(cmd); |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
58 measurePolyButton = createMeasurePolyControl(cmd); |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
59 |
1297
887eb0cd7dfc
Bugfix: #375 Limit the number of fractions in the result of the measure controls (in the map).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
880
diff
changeset
|
60 formatter = NumberFormat.getFormat(NUMBER_FORMAT_PATTERN); |
887eb0cd7dfc
Bugfix: #375 Limit the number of fractions in the result of the measure controls (in the map).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
880
diff
changeset
|
61 |
802
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
62 label = new Label(); |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
63 |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
64 initLayout(); |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
65 } |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
66 |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
67 |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
68 protected void initLayout() { |
1433
d73f503f2465
Added a label that displays the current map projection to the MapToolbar.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1300
diff
changeset
|
69 setWidth(100); |
802
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
70 setMembersMargin(2); |
1433
d73f503f2465
Added a label that displays the current map projection to the MapToolbar.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1300
diff
changeset
|
71 |
d73f503f2465
Added a label that displays the current map projection to the MapToolbar.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1300
diff
changeset
|
72 label.setWidth(75); |
d73f503f2465
Added a label that displays the current map projection to the MapToolbar.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1300
diff
changeset
|
73 |
802
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
74 addMember(measureLineButton); |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
75 addMember(measurePolyButton); |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
76 addMember(label); |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
77 } |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
78 |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
79 |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
80 protected ImgButton createMeasureLineControl(final EnableDisableCmd cmd) { |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
81 measureLine = new Measure(new PathHandler()); |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
82 measureLine.setPersist(true); |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
83 measureLine.addMeasureListener(new MeasureListener() { |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
84 public void onMeasure(MeasureEvent e) { |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
85 updateMeasure(e.getMeasure(), e.getUnits()); |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
86 } |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
87 }); |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
88 measureLine.addMeasurePartialListener(new MeasurePartialListener() { |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
89 public void onMeasurePartial(MeasureEvent e) { |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
90 updateMeasure(e.getMeasure(), e.getUnits()); |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
91 } |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
92 }); |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
93 |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
94 floodMap.getMap().addControl(measureLine); |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
95 |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
96 final ImgButton btn = new ImgButton(); |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
97 String baseUrl = GWT.getHostPageBaseURL(); |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
98 btn.setSrc(baseUrl + MSG.measureLine()); |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
99 btn.setActionType(SelectionType.CHECKBOX); |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
100 btn.setSize(20); |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
101 btn.setShowRollOver(false); |
2471
a1ff911e8365
Replaced FLYS specific icon set.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1433
diff
changeset
|
102 btn.setShowRollOverIcon(false); |
802
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
103 btn.setSelected(false); |
880
22dc88b17253
Added tooltips for the maptoolbar.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
802
diff
changeset
|
104 btn.setTooltip(MSG.measureDistance()); |
802
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
105 btn.addClickHandler(new ClickHandler() { |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
106 public void onClick(ClickEvent e) { |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
107 if (btn.isSelected()) { |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
108 cmd.enable(); |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
109 activateMeasurePolygon(false); |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
110 activateMeasureLine(true); |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
111 } |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
112 else { |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
113 cmd.disable(); |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
114 activateMeasureLine(false); |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
115 } |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
116 } |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
117 }); |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
118 |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
119 return btn; |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
120 } |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
121 |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
122 |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
123 protected ImgButton createMeasurePolyControl(final EnableDisableCmd cmd) { |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
124 measurePolygon = new Measure(new PolygonHandler()); |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
125 measurePolygon.setPersist(true); |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
126 measurePolygon.addMeasureListener(new MeasureListener() { |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
127 public void onMeasure(MeasureEvent e) { |
1300
6890e1041eac
Bugfix: #289 Display measured areas in 'ha'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1297
diff
changeset
|
128 updateMeasureArea(e.getMeasure(), e.getUnits()); |
802
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
129 } |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
130 }); |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
131 measurePolygon.addMeasurePartialListener(new MeasurePartialListener() { |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
132 public void onMeasurePartial(MeasureEvent e) { |
1300
6890e1041eac
Bugfix: #289 Display measured areas in 'ha'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1297
diff
changeset
|
133 updateMeasureArea(e.getMeasure(), e.getUnits()); |
802
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
134 } |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
135 }); |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
136 |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
137 floodMap.getMap().addControl(measurePolygon); |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
138 |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
139 final ImgButton btn = new ImgButton(); |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
140 String baseUrl = GWT.getHostPageBaseURL(); |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
141 btn.setSrc(baseUrl + MSG.measurePolygon()); |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
142 btn.setActionType(SelectionType.CHECKBOX); |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
143 btn.setSize(20); |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
144 btn.setShowRollOver(false); |
2471
a1ff911e8365
Replaced FLYS specific icon set.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1433
diff
changeset
|
145 btn.setShowRollOverIcon(false); |
802
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
146 btn.setSelected(false); |
880
22dc88b17253
Added tooltips for the maptoolbar.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
802
diff
changeset
|
147 btn.setTooltip(MSG.measureArea()); |
802
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
148 btn.addClickHandler(new ClickHandler() { |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
149 public void onClick(ClickEvent e) { |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
150 if (btn.isSelected()) { |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
151 cmd.enable(); |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
152 activateMeasureLine(false); |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
153 activateMeasurePolygon(true); |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
154 } |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
155 else { |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
156 cmd.disable(); |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
157 activateMeasurePolygon(false); |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
158 } |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
159 } |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
160 }); |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
161 |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
162 return btn; |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
163 } |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
164 |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
165 |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
166 protected void clearMeasure() { |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
167 label.setContents(""); |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
168 } |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
169 |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
170 |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
171 protected void updateMeasure(float value, String unit) { |
1297
887eb0cd7dfc
Bugfix: #375 Limit the number of fractions in the result of the measure controls (in the map).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
880
diff
changeset
|
172 label.setContents(formatter.format(value) + " " + unit); |
802
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
173 } |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
174 |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
175 |
1300
6890e1041eac
Bugfix: #289 Display measured areas in 'ha'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1297
diff
changeset
|
176 protected void updateMeasureArea(float value, String unit) { |
6890e1041eac
Bugfix: #289 Display measured areas in 'ha'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1297
diff
changeset
|
177 float ha = value; |
6890e1041eac
Bugfix: #289 Display measured areas in 'ha'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1297
diff
changeset
|
178 String ha_unit = unit; |
6890e1041eac
Bugfix: #289 Display measured areas in 'ha'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1297
diff
changeset
|
179 |
6890e1041eac
Bugfix: #289 Display measured areas in 'ha'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1297
diff
changeset
|
180 if (unit.equals("m")) { |
6890e1041eac
Bugfix: #289 Display measured areas in 'ha'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1297
diff
changeset
|
181 ha = (float) value / AREA_FACTOR_M; |
6890e1041eac
Bugfix: #289 Display measured areas in 'ha'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1297
diff
changeset
|
182 ha_unit = AREA_UNIT; |
6890e1041eac
Bugfix: #289 Display measured areas in 'ha'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1297
diff
changeset
|
183 } |
6890e1041eac
Bugfix: #289 Display measured areas in 'ha'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1297
diff
changeset
|
184 else if (unit.equals("km")) { |
6890e1041eac
Bugfix: #289 Display measured areas in 'ha'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1297
diff
changeset
|
185 ha = (float) value * AREA_FACTOR_KM; |
6890e1041eac
Bugfix: #289 Display measured areas in 'ha'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1297
diff
changeset
|
186 ha_unit = AREA_UNIT; |
6890e1041eac
Bugfix: #289 Display measured areas in 'ha'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1297
diff
changeset
|
187 } |
6890e1041eac
Bugfix: #289 Display measured areas in 'ha'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1297
diff
changeset
|
188 |
6890e1041eac
Bugfix: #289 Display measured areas in 'ha'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1297
diff
changeset
|
189 label.setContents(formatter.format(ha) + " " + ha_unit); |
6890e1041eac
Bugfix: #289 Display measured areas in 'ha'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1297
diff
changeset
|
190 } |
6890e1041eac
Bugfix: #289 Display measured areas in 'ha'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1297
diff
changeset
|
191 |
6890e1041eac
Bugfix: #289 Display measured areas in 'ha'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1297
diff
changeset
|
192 |
802
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
193 public void activate(boolean activate) { |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
194 if (!activate) { |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
195 clearMeasure(); |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
196 activateMeasureLine(activate); |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
197 activateMeasurePolygon(activate); |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
198 } |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
199 } |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
200 |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
201 |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
202 protected void activateMeasureLine(boolean activate) { |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
203 if (activate) { |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
204 clearMeasure(); |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
205 measureLineButton.select(); |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
206 measureLine.activate(); |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
207 } |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
208 else { |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
209 measureLineButton.deselect(); |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
210 measureLine.deactivate(); |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
211 } |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
212 } |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
213 |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
214 |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
215 protected void activateMeasurePolygon(boolean activate) { |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
216 if (activate) { |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
217 clearMeasure(); |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
218 measurePolyButton.select(); |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
219 measurePolygon.activate(); |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
220 } |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
221 else { |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
222 measurePolyButton.deselect(); |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
223 measurePolygon.deactivate(); |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
224 } |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
225 } |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
226 } |
d45ad7fd3027
Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
227 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |