Mercurial > dive4elements > river
diff flys-client/src/main/java/de/intevation/flys/client/client/ui/map/MapToolbar.java @ 799:f4299b90c996
Added controls to navigate in the map.
flys-client/trunk@2318 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Mon, 11 Jul 2011 13:29:57 +0000 |
parents | |
children | 95cc560ce7c4 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/ui/map/MapToolbar.java Mon Jul 11 13:29:57 2011 +0000 @@ -0,0 +1,202 @@ +package de.intevation.flys.client.client.ui.map; + +import com.google.gwt.core.client.GWT; + +import com.smartgwt.client.types.SelectionType; +import com.smartgwt.client.widgets.ImgButton; +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.Map; +import org.gwtopenmaps.openlayers.client.control.DragPan; +import org.gwtopenmaps.openlayers.client.control.ZoomBox; + +import de.intevation.flys.client.client.FLYSConstants; + + +/** + * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> + */ +public class MapToolbar extends HLayout { + + /** The message class that provides i18n strings.*/ + protected FLYSConstants MSG = GWT.create(FLYSConstants.class); + + protected FloodMap floodMap; + protected DragPan pan; + protected ZoomBox zoomBox; + + protected ImgButton zoomToMaxButton; + protected ImgButton zoomBoxButton; + protected ImgButton zoomOutButton; + protected ImgButton panButton; + + + public MapToolbar(FloodMap floodMap) { + super(); + + setWidth100(); + setHeight(30); + setMembersMargin(10); + setPadding(5); + setBorder("1px solid black"); + + this.floodMap = floodMap; + + zoomToMaxButton = createMaxExtentControl(); + zoomBoxButton = createZoomBoxControl(); + zoomOutButton = createZoomOutControl(); + panButton = createPanControl(); + + addMember(zoomToMaxButton); + addMember(zoomBoxButton); + addMember(zoomOutButton); + addMember(panButton); + } + + + protected Map getMap() { + return floodMap.getMap(); + } + + + protected void activatePan(boolean activate) { + if (activate) { + panButton.select(); + pan.activate(); + } + else { + panButton.deselect(); + pan.deactivate(); + } + } + + + protected void activateZoomBox(boolean activate) { + if (activate) { + zoomBoxButton.select(); + zoomBox.activate(); + } + else { + zoomBoxButton.deselect(); + zoomBox.deactivate(); + } + } + + + protected ImgButton createMaxExtentControl() { + ImgButton zoomToMax = new ImgButton(); + + String baseUrl = GWT.getHostPageBaseURL(); + zoomToMax.setSrc(baseUrl + MSG.zoom_all()); + zoomToMax.setWidth(20); + zoomToMax.setHeight(20); + zoomToMax.setShowDown(false); + zoomToMax.setShowRollOver(false); + zoomToMax.setShowDisabled(false); + zoomToMax.setShowDisabledIcon(true); + zoomToMax.setShowDownIcon(false); + zoomToMax.setShowFocusedIcon(false); + + zoomToMax.addClickHandler(new ClickHandler() { + public void onClick(ClickEvent event) { + floodMap.getMap().zoomToMaxExtent(); + } + }); + + return zoomToMax; + } + + + protected ImgButton createZoomBoxControl() { + zoomBox = new ZoomBox(); + + final ImgButton button = new ImgButton(); + + String baseUrl = GWT.getHostPageBaseURL(); + button.setSrc(baseUrl + MSG.zoom_in()); + button.setActionType(SelectionType.CHECKBOX); + button.setSize(20); + button.setShowRollOver(false); + button.setSelected(false); + + button.addClickHandler(new ClickHandler() { + public void onClick(ClickEvent e) { + if (button.isSelected()) { + activatePan(false); + activateZoomBox(true); + } + else { + activateZoomBox(false); + } + } + }); + + Map map = getMap(); + map.addControl(zoomBox); + + return button; + } + + + protected ImgButton createZoomOutControl() { + ImgButton zoomOut = new ImgButton(); + + String baseUrl = GWT.getHostPageBaseURL(); + zoomOut.setSrc(baseUrl + MSG.zoom_out()); + zoomOut.setWidth(20); + zoomOut.setHeight(20); + zoomOut.setShowDown(false); + zoomOut.setShowRollOver(false); + zoomOut.setShowDisabled(false); + zoomOut.setShowDisabledIcon(true); + zoomOut.setShowDownIcon(false); + zoomOut.setShowFocusedIcon(false); + + zoomOut.addClickHandler(new ClickHandler() { + public void onClick(ClickEvent event) { + Map map = floodMap.getMap(); + int level = map.getZoom(); + + if (level > 1) { + map.zoomTo(level-1); + } + } + }); + + return zoomOut; + } + + + protected ImgButton createPanControl() { + pan = new DragPan(); + + final ImgButton button = new ImgButton(); + + String baseUrl = GWT.getHostPageBaseURL(); + button.setSrc(baseUrl + MSG.pan()); + button.setActionType(SelectionType.CHECKBOX); + button.setSize(20); + button.setShowRollOver(false); + button.setSelected(false); + + button.addClickHandler(new ClickHandler() { + public void onClick(ClickEvent e) { + if (button.isSelected()) { + activateZoomBox(false); + activatePan(true); + } + else { + activatePan(false); + } + } + }); + + Map map = getMap(); + map.addControl(pan); + + return button; + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :