Mercurial > dive4elements > river
view 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 |
line wrap: on
line source
package de.intevation.flys.client.client.ui.map; import com.google.gwt.core.client.GWT; import com.google.gwt.i18n.client.NumberFormat; import com.smartgwt.client.types.SelectionType; import com.smartgwt.client.widgets.ImgButton; import com.smartgwt.client.widgets.Label; import com.smartgwt.client.widgets.events.ClickEvent; import com.smartgwt.client.widgets.events.ClickHandler; import com.smartgwt.client.widgets.layout.HLayout; import org.gwtopenmaps.openlayers.client.control.Measure; import org.gwtopenmaps.openlayers.client.event.MeasureEvent; import org.gwtopenmaps.openlayers.client.event.MeasureListener; import org.gwtopenmaps.openlayers.client.event.MeasurePartialListener; import org.gwtopenmaps.openlayers.client.handler.PathHandler; import org.gwtopenmaps.openlayers.client.handler.PolygonHandler; import de.intevation.flys.client.client.FLYSConstants; import de.intevation.flys.client.client.utils.EnableDisableCmd; public class MeasureControl extends HLayout { public static final String NUMBER_FORMAT_PATTERN = "#.##"; protected FLYSConstants MSG = GWT.create(FLYSConstants.class); protected FloodMap floodMap; protected Measure measureLine; protected Measure measurePolygon; protected ImgButton measureLineButton; protected ImgButton measurePolyButton; protected Label label; protected NumberFormat formatter; public MeasureControl(FloodMap floodMap, EnableDisableCmd cmd) { this.floodMap = floodMap; measureLineButton = createMeasureLineControl(cmd); measurePolyButton = createMeasurePolyControl(cmd); formatter = NumberFormat.getFormat(NUMBER_FORMAT_PATTERN); label = new Label(); initLayout(); } protected void initLayout() { setMembersMargin(2); addMember(measureLineButton); addMember(measurePolyButton); addMember(label); } protected ImgButton createMeasureLineControl(final EnableDisableCmd cmd) { measureLine = new Measure(new PathHandler()); measureLine.setPersist(true); measureLine.addMeasureListener(new MeasureListener() { public void onMeasure(MeasureEvent e) { updateMeasure(e.getMeasure(), e.getUnits()); } }); measureLine.addMeasurePartialListener(new MeasurePartialListener() { public void onMeasurePartial(MeasureEvent e) { updateMeasure(e.getMeasure(), e.getUnits()); } }); floodMap.getMap().addControl(measureLine); final ImgButton btn = new ImgButton(); String baseUrl = GWT.getHostPageBaseURL(); btn.setSrc(baseUrl + MSG.measureLine()); btn.setActionType(SelectionType.CHECKBOX); btn.setSize(20); btn.setShowRollOver(false); btn.setSelected(false); btn.setTooltip(MSG.measureDistance()); btn.addClickHandler(new ClickHandler() { public void onClick(ClickEvent e) { if (btn.isSelected()) { cmd.enable(); activateMeasurePolygon(false); activateMeasureLine(true); } else { cmd.disable(); activateMeasureLine(false); } } }); return btn; } protected ImgButton createMeasurePolyControl(final EnableDisableCmd cmd) { measurePolygon = new Measure(new PolygonHandler()); measurePolygon.setPersist(true); measurePolygon.addMeasureListener(new MeasureListener() { public void onMeasure(MeasureEvent e) { updateMeasure(e.getMeasure(), e.getUnits()); } }); measurePolygon.addMeasurePartialListener(new MeasurePartialListener() { public void onMeasurePartial(MeasureEvent e) { updateMeasure(e.getMeasure(), e.getUnits()); } }); floodMap.getMap().addControl(measurePolygon); final ImgButton btn = new ImgButton(); String baseUrl = GWT.getHostPageBaseURL(); btn.setSrc(baseUrl + MSG.measurePolygon()); btn.setActionType(SelectionType.CHECKBOX); btn.setSize(20); btn.setShowRollOver(false); btn.setSelected(false); btn.setTooltip(MSG.measureArea()); btn.addClickHandler(new ClickHandler() { public void onClick(ClickEvent e) { if (btn.isSelected()) { cmd.enable(); activateMeasureLine(false); activateMeasurePolygon(true); } else { cmd.disable(); activateMeasurePolygon(false); } } }); return btn; } protected void clearMeasure() { label.setContents(""); } protected void updateMeasure(float value, String unit) { label.setContents(formatter.format(value) + " " + unit); } public void activate(boolean activate) { if (!activate) { clearMeasure(); activateMeasureLine(activate); activateMeasurePolygon(activate); } } protected void activateMeasureLine(boolean activate) { if (activate) { clearMeasure(); measureLineButton.select(); measureLine.activate(); } else { measureLineButton.deselect(); measureLine.deactivate(); } } protected void activateMeasurePolygon(boolean activate) { if (activate) { clearMeasure(); measurePolyButton.select(); measurePolygon.activate(); } else { measurePolyButton.deselect(); measurePolygon.deactivate(); } } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :