view flys-client/src/main/java/de/intevation/flys/client/client/ui/map/MapOutputTab.java @ 798:7061c2e66039

Finished layouting the map components. flys-client/trunk@2317 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Mon, 11 Jul 2011 10:21:16 +0000
parents cc3f481e9484
children f4299b90c996
line wrap: on
line source
package de.intevation.flys.client.client.ui.map;

import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Widget;

import com.smartgwt.client.widgets.Button;
import com.smartgwt.client.widgets.Canvas;
import com.smartgwt.client.widgets.events.ClickEvent;
import com.smartgwt.client.widgets.events.ClickHandler;
import com.smartgwt.client.widgets.events.ResizedEvent;
import com.smartgwt.client.widgets.events.ResizedHandler;
import com.smartgwt.client.widgets.layout.HLayout;
import com.smartgwt.client.widgets.layout.VLayout;

import org.gwtopenmaps.openlayers.client.Bounds;
import org.gwtopenmaps.openlayers.client.LonLat;
import org.gwtopenmaps.openlayers.client.layer.WMS;
import org.gwtopenmaps.openlayers.client.layer.WMSParams;


import de.intevation.flys.client.shared.model.Collection;
import de.intevation.flys.client.shared.model.OutputMode;

import de.intevation.flys.client.client.ui.CollectionView;
import de.intevation.flys.client.client.ui.OutputTab;
import de.intevation.flys.client.client.ui.chart.ChartThemePanel;


public class MapOutputTab extends OutputTab {

    protected CollectionView parent;

    protected Canvas controlPanel;
    protected Canvas themePanel;
    protected Widget mapPanel;

    protected FloodMap floodMap;


    public MapOutputTab(
        String         title,
        Collection     collection,
        OutputMode     mode,
        CollectionView collectionView
    ){
        super(title, collection, mode);
        this.parent = collectionView;

        floodMap = new FloodMap();

        initLayout();
        initLayers();
    }


    protected void initLayout() {
        VLayout rootLayout = new VLayout();
        rootLayout.setHeight100();
        rootLayout.setWidth100();
        rootLayout.setMembersMargin(2);

        controlPanel = createControlPanel();
        themePanel   = createThemePanel();
        mapPanel     = floodMap.getMapWidget();

        final Canvas  wrapper = new Canvas();
        wrapper.setWidth100();
        wrapper.setHeight100();

        final HorizontalPanel layout = new HorizontalPanel();
        layout.setWidth("99%");
        layout.setHeight("99%");
        layout.add(mapPanel);

        wrapper.addChild(layout);

        HLayout hlayout = new HLayout();
        hlayout.setHeight("*");
        hlayout.setWidth100();
        hlayout.setMembersMargin(2);

        hlayout.addMember(themePanel);
        hlayout.addMember(wrapper);

        rootLayout.addMember(controlPanel);
        rootLayout.addMember(hlayout);

        wrapper.addResizedHandler(new ResizedHandler() {
            public void onResized(ResizedEvent e) {
                Integer height = wrapper.getHeight();
                Integer width  = wrapper.getWidth();

                height = height * 99 / 100;
                width  = width  * 99 / 100;

                String w = String.valueOf(width) + "px";
                String h = String.valueOf(height) + "px";

                floodMap.setSize(w, h);
            }
        });

        setPane(rootLayout);
    }


    protected void initLayers() {
        // TODO Initialize correct layers here

        String url    = "http://vmap0.tiles.osgeo.org/wms/vmap0";
        String layers = "basic";

        WMSParams params = new WMSParams();
        params.setLayers(layers);
        params.setFormat("image/png");
        params.setIsTransparent(false);
        params.setMaxExtent(new Bounds(90, 180, -90, -180));

        WMS wms = new WMS("vmap0", url, params);
        wms.setIsBaseLayer(true);
        wms.setIsVisible(true);

        floodMap.getMap().addLayer(wms);
        floodMap.getMap().setCenter(new LonLat(0, 0));
    }


    protected Canvas createControlPanel() {
        HLayout layout = new HLayout();
        layout.setWidth100();
        layout.setHeight(30);
        layout.setMembersMargin(10);
        layout.setPadding(5);
        layout.setBorder("1px solid black");

        Button zoomToMax = new Button("Max Extent");
        zoomToMax.addClickHandler(new ClickHandler() {
            public void onClick(ClickEvent event) {
                floodMap.getMap().zoomToMaxExtent();
            }
        });

        layout.addMember(zoomToMax);

        return layout;
    }


    protected Canvas createThemePanel() {
        Canvas c = new Canvas();
        c.setWidth(200);
        c.setHeight100();
        c.setBorder("1px solid black");

        ChartThemePanel ctp = new ChartThemePanel(collection, mode);
        c.addChild(ctp);

        return c;
    }
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org