view flys-client/src/main/java/de/intevation/flys/client/client/ui/map/GetFeatureInfoWindow.java @ 2470:656df7c0bdda

#556 Made GetFeatureInfoWindow modal. flys-client/trunk@4187 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Mon, 02 Apr 2012 08:41:09 +0000
parents 15ef3d3081b7
children 75d11997921c
line wrap: on
line source
package de.intevation.flys.client.client.ui.map;

import java.util.List;
import java.util.Map;
import java.util.Set;

import com.google.gwt.core.client.GWT;

import com.smartgwt.client.widgets.Label;
import com.smartgwt.client.widgets.Window;
import com.smartgwt.client.widgets.layout.HLayout;
import com.smartgwt.client.widgets.layout.VLayout;

import org.gwtopenmaps.openlayers.client.feature.VectorFeature;
import org.gwtopenmaps.openlayers.client.util.Attributes;
import org.gwtopenmaps.openlayers.client.util.JSObject;

import de.intevation.flys.client.shared.model.FeatureInfo;

import de.intevation.flys.client.client.FLYSConstants;


public class GetFeatureInfoWindow extends Window {

    protected FLYSConstants MSG = GWT.create(FLYSConstants.class);

    protected List<FeatureInfo> features;


    public static final int ROW_HEIGHT = 25;


    public GetFeatureInfoWindow(List<FeatureInfo> features) {
        super();
        this.features = features;

        initLayout();
    }


    protected void initLayout() {
        VLayout root = new VLayout();

        int rows = 0;

        for (FeatureInfo feature: features) {
            root.addMember(createFeatureRow(feature));
            rows++;
        }

        addItem(root);

        setWidth(400);
        setHeight(50 + rows * ROW_HEIGHT);
        setTitle(MSG.getFeatureInfoWindowTitle());

        setIsModal(true);
        setShowModalMask(true);

        centerInPage();
    }


    protected HLayout createFeatureRow(FeatureInfo feature) {
        HLayout r = new HLayout();
        r.setHeight(ROW_HEIGHT);
        r.setStyleName("featureinfo-row");

        Label l = new Label("Layer: " + feature.getLayername());
        l.setHeight(ROW_HEIGHT);

        r.addMember(l);

        Map<String, String> attrs = feature.getAttrs();
        Set<Map.Entry<String, String>> entries = attrs.entrySet();

        for (Map.Entry entry: entries) {
            Label attr = new Label(entry.getKey() + ": " + entry.getValue());
            attr.setHeight(ROW_HEIGHT);

            r.addMember(attr);
        }

        return r;
    }


    protected String[][] extractProperties(VectorFeature feature) {
        Attributes tmp   = feature.getAttributes();
        JSObject   jsobj = tmp.getJSObject();

        String   tmpNames = jsobj.getPropertyNames();
        String[] allNames = tmpNames.split(",");

        String[][] attr = new String[allNames.length][];

        for (int i = 0, n = attr.length; i < n; i++) {
            attr[i] = new String[] {
                allNames[i],
                jsobj.getPropertyAsString(allNames[i]) };
        }

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

http://dive4elements.wald.intevation.org