Mercurial > dive4elements > river
diff 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 diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/ui/map/WMSLayersTree.java Mon Nov 21 21:00:03 2011 +0000 @@ -0,0 +1,75 @@ +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()]); + } +}