annotate flys-client/src/main/java/org/dive4elements/river/client/client/ui/map/MeasureControl.java @ 5834:f507086aa94b

Repaired internal references.
author Sascha L. Teichmann <teichmann@intevation.de>
date Thu, 25 Apr 2013 12:31:32 +0200
parents flys-client/src/main/java/de/intevation/flys/client/client/ui/map/MeasureControl.java@a1ff911e8365
children 821a02bbfb4e
rev   line source
802
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
1 package de.intevation.flys.client.client.ui.map;
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
2
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
3 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
4 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
5
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
6 import com.smartgwt.client.types.SelectionType;
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
7 import com.smartgwt.client.widgets.ImgButton;
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
8 import com.smartgwt.client.widgets.Label;
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
9 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
10 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
11 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
12
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
13 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
14 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
15 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
16 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
17 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
18 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
19
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
20 import de.intevation.flys.client.client.FLYSConstants;
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
21 import de.intevation.flys.client.client.utils.EnableDisableCmd;
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
22
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
23
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
24 public class MeasureControl extends HLayout {
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
25
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
26 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
27
1300
6890e1041eac Bugfix: #289 Display measured areas in 'ha'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1297
diff changeset
28 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
29 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
30 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
31
802
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
32 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
33
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
34 protected FloodMap floodMap;
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
35
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
36 protected Measure measureLine;
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
37 protected Measure measurePolygon;
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
38
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
39 protected ImgButton measureLineButton;
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
40 protected ImgButton measurePolyButton;
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
41 protected Label label;
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
42
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
43 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
44
802
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
45
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
46 public MeasureControl(FloodMap floodMap, EnableDisableCmd cmd) {
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
47 this.floodMap = floodMap;
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
48
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
49 measureLineButton = createMeasureLineControl(cmd);
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
50 measurePolyButton = createMeasurePolyControl(cmd);
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
51
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
52 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
53
802
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
54 label = new Label();
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
55
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
56 initLayout();
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
57 }
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
58
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
59
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
60 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
61 setWidth(100);
802
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
62 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
63
d73f503f2465 Added a label that displays the current map projection to the MapToolbar.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1300
diff changeset
64 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
65
802
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
66 addMember(measureLineButton);
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
67 addMember(measurePolyButton);
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
68 addMember(label);
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
69 }
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
70
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
71
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
72 protected ImgButton createMeasureLineControl(final EnableDisableCmd cmd) {
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
73 measureLine = new Measure(new PathHandler());
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
74 measureLine.setPersist(true);
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
75 measureLine.addMeasureListener(new MeasureListener() {
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
76 public void onMeasure(MeasureEvent e) {
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
77 updateMeasure(e.getMeasure(), e.getUnits());
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 measureLine.addMeasurePartialListener(new MeasurePartialListener() {
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
81 public void onMeasurePartial(MeasureEvent e) {
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
82 updateMeasure(e.getMeasure(), e.getUnits());
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
83 }
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
84 });
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
85
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
86 floodMap.getMap().addControl(measureLine);
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 final ImgButton btn = new ImgButton();
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
89 String baseUrl = GWT.getHostPageBaseURL();
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
90 btn.setSrc(baseUrl + MSG.measureLine());
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
91 btn.setActionType(SelectionType.CHECKBOX);
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
92 btn.setSize(20);
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
93 btn.setShowRollOver(false);
2471
a1ff911e8365 Replaced FLYS specific icon set.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1433
diff changeset
94 btn.setShowRollOverIcon(false);
802
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
95 btn.setSelected(false);
880
22dc88b17253 Added tooltips for the maptoolbar.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 802
diff changeset
96 btn.setTooltip(MSG.measureDistance());
802
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
97 btn.addClickHandler(new ClickHandler() {
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
98 public void onClick(ClickEvent e) {
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
99 if (btn.isSelected()) {
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
100 cmd.enable();
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
101 activateMeasurePolygon(false);
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
102 activateMeasureLine(true);
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
103 }
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
104 else {
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
105 cmd.disable();
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
106 activateMeasureLine(false);
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
107 }
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
108 }
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
109 });
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
110
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
111 return btn;
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
112 }
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
113
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
114
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
115 protected ImgButton createMeasurePolyControl(final EnableDisableCmd cmd) {
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
116 measurePolygon = new Measure(new PolygonHandler());
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
117 measurePolygon.setPersist(true);
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
118 measurePolygon.addMeasureListener(new MeasureListener() {
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
119 public void onMeasure(MeasureEvent e) {
1300
6890e1041eac Bugfix: #289 Display measured areas in 'ha'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1297
diff changeset
120 updateMeasureArea(e.getMeasure(), e.getUnits());
802
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 measurePolygon.addMeasurePartialListener(new MeasurePartialListener() {
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
124 public void onMeasurePartial(MeasureEvent e) {
1300
6890e1041eac Bugfix: #289 Display measured areas in 'ha'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1297
diff changeset
125 updateMeasureArea(e.getMeasure(), e.getUnits());
802
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
126 }
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
127 });
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
128
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
129 floodMap.getMap().addControl(measurePolygon);
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 final ImgButton btn = new ImgButton();
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
132 String baseUrl = GWT.getHostPageBaseURL();
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
133 btn.setSrc(baseUrl + MSG.measurePolygon());
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
134 btn.setActionType(SelectionType.CHECKBOX);
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
135 btn.setSize(20);
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
136 btn.setShowRollOver(false);
2471
a1ff911e8365 Replaced FLYS specific icon set.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1433
diff changeset
137 btn.setShowRollOverIcon(false);
802
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
138 btn.setSelected(false);
880
22dc88b17253 Added tooltips for the maptoolbar.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 802
diff changeset
139 btn.setTooltip(MSG.measureArea());
802
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
140 btn.addClickHandler(new ClickHandler() {
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
141 public void onClick(ClickEvent e) {
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
142 if (btn.isSelected()) {
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
143 cmd.enable();
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
144 activateMeasureLine(false);
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
145 activateMeasurePolygon(true);
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
146 }
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
147 else {
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
148 cmd.disable();
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
149 activateMeasurePolygon(false);
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
150 }
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
151 }
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
152 });
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
153
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
154 return btn;
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
155 }
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
156
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
157
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
158 protected void clearMeasure() {
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
159 label.setContents("");
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
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
163 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
164 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
165 }
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
166
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
167
1300
6890e1041eac Bugfix: #289 Display measured areas in 'ha'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1297
diff changeset
168 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
169 float ha = value;
6890e1041eac Bugfix: #289 Display measured areas in 'ha'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1297
diff changeset
170 String ha_unit = unit;
6890e1041eac Bugfix: #289 Display measured areas in 'ha'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1297
diff changeset
171
6890e1041eac Bugfix: #289 Display measured areas in 'ha'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1297
diff changeset
172 if (unit.equals("m")) {
6890e1041eac Bugfix: #289 Display measured areas in 'ha'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1297
diff changeset
173 ha = (float) value / AREA_FACTOR_M;
6890e1041eac Bugfix: #289 Display measured areas in 'ha'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1297
diff changeset
174 ha_unit = AREA_UNIT;
6890e1041eac Bugfix: #289 Display measured areas in 'ha'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1297
diff changeset
175 }
6890e1041eac Bugfix: #289 Display measured areas in 'ha'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1297
diff changeset
176 else if (unit.equals("km")) {
6890e1041eac Bugfix: #289 Display measured areas in 'ha'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1297
diff changeset
177 ha = (float) value * AREA_FACTOR_KM;
6890e1041eac Bugfix: #289 Display measured areas in 'ha'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1297
diff changeset
178 ha_unit = AREA_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
6890e1041eac Bugfix: #289 Display measured areas in 'ha'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1297
diff changeset
181 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
182 }
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
802
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
185 public void activate(boolean activate) {
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
186 if (!activate) {
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
187 clearMeasure();
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
188 activateMeasureLine(activate);
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
189 activateMeasurePolygon(activate);
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
190 }
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
191 }
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
192
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
193
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
194 protected void activateMeasureLine(boolean activate) {
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
195 if (activate) {
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
196 clearMeasure();
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
197 measureLineButton.select();
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
198 measureLine.activate();
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 else {
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
201 measureLineButton.deselect();
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
202 measureLine.deactivate();
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
203 }
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
204 }
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
205
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
206
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
207 protected void activateMeasurePolygon(boolean activate) {
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
208 if (activate) {
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
209 clearMeasure();
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
210 measurePolyButton.select();
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
211 measurePolygon.activate();
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 else {
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
214 measurePolyButton.deselect();
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
215 measurePolygon.deactivate();
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
216 }
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
217 }
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
218 }
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
219 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org