ingo@799: package de.intevation.flys.client.client.ui.map; ingo@799: ingo@799: import com.google.gwt.core.client.GWT; ingo@799: ingo@799: import com.smartgwt.client.types.SelectionType; ingo@799: import com.smartgwt.client.widgets.ImgButton; ingo@799: import com.smartgwt.client.widgets.events.ClickEvent; ingo@799: import com.smartgwt.client.widgets.events.ClickHandler; ingo@799: import com.smartgwt.client.widgets.layout.HLayout; ingo@799: ingo@799: import org.gwtopenmaps.openlayers.client.Map; ingo@799: import org.gwtopenmaps.openlayers.client.control.DragPan; ingo@799: import org.gwtopenmaps.openlayers.client.control.ZoomBox; ingo@799: ingo@799: import de.intevation.flys.client.client.FLYSConstants; ingo@799: ingo@799: ingo@799: /** ingo@799: * @author Ingo Weinzierl ingo@799: */ ingo@799: public class MapToolbar extends HLayout { ingo@799: ingo@799: /** The message class that provides i18n strings.*/ ingo@799: protected FLYSConstants MSG = GWT.create(FLYSConstants.class); ingo@799: ingo@799: protected FloodMap floodMap; ingo@799: protected DragPan pan; ingo@799: protected ZoomBox zoomBox; ingo@799: ingo@799: protected ImgButton zoomToMaxButton; ingo@799: protected ImgButton zoomBoxButton; ingo@799: protected ImgButton zoomOutButton; ingo@799: protected ImgButton panButton; ingo@799: ingo@799: ingo@799: public MapToolbar(FloodMap floodMap) { ingo@799: super(); ingo@799: ingo@799: setWidth100(); ingo@799: setHeight(30); ingo@799: setMembersMargin(10); ingo@799: setPadding(5); ingo@799: setBorder("1px solid black"); ingo@799: ingo@799: this.floodMap = floodMap; ingo@799: ingo@799: zoomToMaxButton = createMaxExtentControl(); ingo@799: zoomBoxButton = createZoomBoxControl(); ingo@799: zoomOutButton = createZoomOutControl(); ingo@799: panButton = createPanControl(); ingo@799: ingo@799: addMember(zoomToMaxButton); ingo@799: addMember(zoomBoxButton); ingo@799: addMember(zoomOutButton); ingo@799: addMember(panButton); ingo@799: } ingo@799: ingo@799: ingo@799: protected Map getMap() { ingo@799: return floodMap.getMap(); ingo@799: } ingo@799: ingo@799: ingo@799: protected void activatePan(boolean activate) { ingo@799: if (activate) { ingo@799: panButton.select(); ingo@799: pan.activate(); ingo@799: } ingo@799: else { ingo@799: panButton.deselect(); ingo@799: pan.deactivate(); ingo@799: } ingo@799: } ingo@799: ingo@799: ingo@799: protected void activateZoomBox(boolean activate) { ingo@799: if (activate) { ingo@799: zoomBoxButton.select(); ingo@799: zoomBox.activate(); ingo@799: } ingo@799: else { ingo@799: zoomBoxButton.deselect(); ingo@799: zoomBox.deactivate(); ingo@799: } ingo@799: } ingo@799: ingo@799: ingo@799: protected ImgButton createMaxExtentControl() { ingo@799: ImgButton zoomToMax = new ImgButton(); ingo@799: ingo@799: String baseUrl = GWT.getHostPageBaseURL(); ingo@799: zoomToMax.setSrc(baseUrl + MSG.zoom_all()); ingo@799: zoomToMax.setWidth(20); ingo@799: zoomToMax.setHeight(20); ingo@799: zoomToMax.setShowDown(false); ingo@799: zoomToMax.setShowRollOver(false); ingo@799: zoomToMax.setShowDisabled(false); ingo@799: zoomToMax.setShowDisabledIcon(true); ingo@799: zoomToMax.setShowDownIcon(false); ingo@799: zoomToMax.setShowFocusedIcon(false); ingo@799: ingo@799: zoomToMax.addClickHandler(new ClickHandler() { ingo@799: public void onClick(ClickEvent event) { ingo@799: floodMap.getMap().zoomToMaxExtent(); ingo@799: } ingo@799: }); ingo@799: ingo@799: return zoomToMax; ingo@799: } ingo@799: ingo@799: ingo@799: protected ImgButton createZoomBoxControl() { ingo@799: zoomBox = new ZoomBox(); ingo@799: ingo@799: final ImgButton button = new ImgButton(); ingo@799: ingo@799: String baseUrl = GWT.getHostPageBaseURL(); ingo@799: button.setSrc(baseUrl + MSG.zoom_in()); ingo@799: button.setActionType(SelectionType.CHECKBOX); ingo@799: button.setSize(20); ingo@799: button.setShowRollOver(false); ingo@799: button.setSelected(false); ingo@799: ingo@799: button.addClickHandler(new ClickHandler() { ingo@799: public void onClick(ClickEvent e) { ingo@799: if (button.isSelected()) { ingo@799: activatePan(false); ingo@799: activateZoomBox(true); ingo@799: } ingo@799: else { ingo@799: activateZoomBox(false); ingo@799: } ingo@799: } ingo@799: }); ingo@799: ingo@799: Map map = getMap(); ingo@799: map.addControl(zoomBox); ingo@799: ingo@799: return button; ingo@799: } ingo@799: ingo@799: ingo@799: protected ImgButton createZoomOutControl() { ingo@799: ImgButton zoomOut = new ImgButton(); ingo@799: ingo@799: String baseUrl = GWT.getHostPageBaseURL(); ingo@799: zoomOut.setSrc(baseUrl + MSG.zoom_out()); ingo@799: zoomOut.setWidth(20); ingo@799: zoomOut.setHeight(20); ingo@799: zoomOut.setShowDown(false); ingo@799: zoomOut.setShowRollOver(false); ingo@799: zoomOut.setShowDisabled(false); ingo@799: zoomOut.setShowDisabledIcon(true); ingo@799: zoomOut.setShowDownIcon(false); ingo@799: zoomOut.setShowFocusedIcon(false); ingo@799: ingo@799: zoomOut.addClickHandler(new ClickHandler() { ingo@799: public void onClick(ClickEvent event) { ingo@799: Map map = floodMap.getMap(); ingo@799: int level = map.getZoom(); ingo@799: ingo@799: if (level > 1) { ingo@799: map.zoomTo(level-1); ingo@799: } ingo@799: } ingo@799: }); ingo@799: ingo@799: return zoomOut; ingo@799: } ingo@799: ingo@799: ingo@799: protected ImgButton createPanControl() { ingo@799: pan = new DragPan(); ingo@799: ingo@799: final ImgButton button = new ImgButton(); ingo@799: ingo@799: String baseUrl = GWT.getHostPageBaseURL(); ingo@799: button.setSrc(baseUrl + MSG.pan()); ingo@799: button.setActionType(SelectionType.CHECKBOX); ingo@799: button.setSize(20); ingo@799: button.setShowRollOver(false); ingo@799: button.setSelected(false); ingo@799: ingo@799: button.addClickHandler(new ClickHandler() { ingo@799: public void onClick(ClickEvent e) { ingo@799: if (button.isSelected()) { ingo@799: activateZoomBox(false); ingo@799: activatePan(true); ingo@799: } ingo@799: else { ingo@799: activatePan(false); ingo@799: } ingo@799: } ingo@799: }); ingo@799: ingo@799: Map map = getMap(); ingo@799: map.addControl(pan); ingo@799: ingo@799: return button; ingo@799: } ingo@799: } ingo@799: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :