annotate flys-client/src/main/java/de/intevation/flys/client/client/ui/map/MeasureControl.java @ 1297:887eb0cd7dfc

Bugfix: #375 Limit the number of fractions in the result of the measure controls (in the map). flys-client/trunk@2918 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Mon, 10 Oct 2011 09:31:08 +0000
parents 22dc88b17253
children 6890e1041eac
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
802
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
28 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
29
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
30 protected FloodMap floodMap;
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 protected Measure measureLine;
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
33 protected Measure measurePolygon;
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
34
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
35 protected ImgButton measureLineButton;
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
36 protected ImgButton measurePolyButton;
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
37 protected Label label;
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
38
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
39 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
40
802
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 public MeasureControl(FloodMap floodMap, EnableDisableCmd cmd) {
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
43 this.floodMap = floodMap;
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
44
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
45 measureLineButton = createMeasureLineControl(cmd);
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
46 measurePolyButton = createMeasurePolyControl(cmd);
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
47
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
48 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
49
802
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
50 label = new Label();
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
51
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
52 initLayout();
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
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 protected void initLayout() {
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
57 setMembersMargin(2);
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
58 addMember(measureLineButton);
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
59 addMember(measurePolyButton);
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
60 addMember(label);
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
61 }
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
62
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 protected ImgButton createMeasureLineControl(final EnableDisableCmd cmd) {
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
65 measureLine = new Measure(new PathHandler());
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
66 measureLine.setPersist(true);
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
67 measureLine.addMeasureListener(new MeasureListener() {
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
68 public void onMeasure(MeasureEvent e) {
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
69 updateMeasure(e.getMeasure(), e.getUnits());
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 measureLine.addMeasurePartialListener(new MeasurePartialListener() {
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
73 public void onMeasurePartial(MeasureEvent e) {
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
74 updateMeasure(e.getMeasure(), e.getUnits());
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
75 }
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
76 });
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 floodMap.getMap().addControl(measureLine);
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 final ImgButton btn = new ImgButton();
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
81 String baseUrl = GWT.getHostPageBaseURL();
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
82 btn.setSrc(baseUrl + MSG.measureLine());
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
83 btn.setActionType(SelectionType.CHECKBOX);
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
84 btn.setSize(20);
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
85 btn.setShowRollOver(false);
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
86 btn.setSelected(false);
880
22dc88b17253 Added tooltips for the maptoolbar.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 802
diff changeset
87 btn.setTooltip(MSG.measureDistance());
802
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
88 btn.addClickHandler(new ClickHandler() {
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
89 public void onClick(ClickEvent e) {
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
90 if (btn.isSelected()) {
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
91 cmd.enable();
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
92 activateMeasurePolygon(false);
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
93 activateMeasureLine(true);
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
94 }
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
95 else {
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
96 cmd.disable();
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
97 activateMeasureLine(false);
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
98 }
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
99 }
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
100 });
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
101
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
102 return btn;
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
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
105
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
106 protected ImgButton createMeasurePolyControl(final EnableDisableCmd cmd) {
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
107 measurePolygon = new Measure(new PolygonHandler());
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
108 measurePolygon.setPersist(true);
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
109 measurePolygon.addMeasureListener(new MeasureListener() {
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
110 public void onMeasure(MeasureEvent e) {
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
111 updateMeasure(e.getMeasure(), e.getUnits());
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 measurePolygon.addMeasurePartialListener(new MeasurePartialListener() {
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
115 public void onMeasurePartial(MeasureEvent e) {
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
116 updateMeasure(e.getMeasure(), e.getUnits());
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
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
120 floodMap.getMap().addControl(measurePolygon);
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 final ImgButton btn = new ImgButton();
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
123 String baseUrl = GWT.getHostPageBaseURL();
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
124 btn.setSrc(baseUrl + MSG.measurePolygon());
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
125 btn.setActionType(SelectionType.CHECKBOX);
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
126 btn.setSize(20);
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
127 btn.setShowRollOver(false);
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
128 btn.setSelected(false);
880
22dc88b17253 Added tooltips for the maptoolbar.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 802
diff changeset
129 btn.setTooltip(MSG.measureArea());
802
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
130 btn.addClickHandler(new ClickHandler() {
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
131 public void onClick(ClickEvent e) {
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
132 if (btn.isSelected()) {
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
133 cmd.enable();
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
134 activateMeasureLine(false);
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
135 activateMeasurePolygon(true);
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 else {
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
138 cmd.disable();
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
139 activateMeasurePolygon(false);
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
140 }
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
141 }
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
142 });
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
143
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
144 return btn;
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
145 }
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
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
148 protected void clearMeasure() {
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
149 label.setContents("");
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 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
154 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
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 public void activate(boolean activate) {
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
159 if (!activate) {
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
160 clearMeasure();
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
161 activateMeasureLine(activate);
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
162 activateMeasurePolygon(activate);
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
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
167 protected void activateMeasureLine(boolean activate) {
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
168 if (activate) {
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
169 clearMeasure();
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
170 measureLineButton.select();
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
171 measureLine.activate();
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
172 }
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
173 else {
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
174 measureLineButton.deselect();
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
175 measureLine.deactivate();
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
176 }
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
177 }
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
178
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
179
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
180 protected void activateMeasurePolygon(boolean activate) {
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
181 if (activate) {
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
182 clearMeasure();
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
183 measurePolyButton.select();
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
184 measurePolygon.activate();
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
185 }
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
186 else {
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
187 measurePolyButton.deselect();
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
188 measurePolygon.deactivate();
d45ad7fd3027 Added map tools to measure lines and polygons.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
189 }
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 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org