view 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 source
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 :

http://dive4elements.wald.intevation.org