view flys-client/src/main/java/de/intevation/flys/client/client/ui/map/WMSLayersTree.java @ 1411:63be3137abac

Parse and display WMS layers supported by a user specified WMS service. flys-client/trunk@3298 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Mon, 21 Nov 2011 21:00:03 +0000
parents
children 659a488243da
line wrap: on
line source
package de.intevation.flys.client.client.ui.map;

import java.util.ArrayList;
import java.util.List;

import com.smartgwt.client.types.TreeModelType;
import com.smartgwt.client.widgets.tree.Tree;
import com.smartgwt.client.widgets.tree.TreeGrid;
import com.smartgwt.client.widgets.tree.TreeNode;

import de.intevation.flys.client.shared.model.Capabilities;
import de.intevation.flys.client.shared.model.WMSLayer;


public class WMSLayersTree extends TreeGrid {

    protected Capabilities capabilites;

    public WMSLayersTree(Capabilities capabilites) {
        super();
        this.capabilites = capabilites;

        initTree();
    }


    protected void initTree() {
        setLoadDataOnDemand(false);
        setWidth100();
        setHeight100();
        setShowRoot(false);
        setShowConnectors(true);
        setNodeIcon("[SKIN]/images/blank.gif");

        Tree tree = new Tree();
        tree.setChildrenProperty("children-nodes");
        tree.setNameProperty("title");
        tree.setIdField("title");
        tree.setModelType(TreeModelType.CHILDREN);
        tree.setShowRoot(false);

        TreeNode     root = new TreeNode("Root");
        TreeNode[] layers = buildTree(capabilites.getLayers());

        root.setAttribute("children-nodes", layers);
        tree.setRoot(root);

        setData(tree);

        if (layers != null && layers.length == 1) {
            tree.openFolder(layers[0]);
        }
    }


    protected TreeNode[] buildTree(List<WMSLayer> layers) {
        List<TreeNode> layerNodes = new ArrayList<TreeNode>();

        for (WMSLayer layer: layers) {
            TreeNode tn  = new TreeNode();
            tn.setAttribute("name", layer.getName());
            tn.setAttribute("title", layer.getTitle());

            TreeNode[] tns = buildTree(layer.getLayers());

            if (tns != null && tns.length > 0) {
                tn.setAttribute("children-nodes", tns);
            }

            layerNodes.add(tn);
        }

        return (TreeNode[]) layerNodes.toArray(new TreeNode[layerNodes.size()]);
    }
}

http://dive4elements.wald.intevation.org