ingo@1411: package de.intevation.flys.client.client.ui.map; ingo@1411: ingo@1411: import java.util.ArrayList; ingo@1411: import java.util.List; ingo@1411: ingo@1411: import com.smartgwt.client.types.TreeModelType; ingo@1411: import com.smartgwt.client.widgets.tree.Tree; ingo@1411: import com.smartgwt.client.widgets.tree.TreeGrid; ingo@1411: import com.smartgwt.client.widgets.tree.TreeNode; ingo@1411: ingo@1411: import de.intevation.flys.client.shared.model.Capabilities; ingo@1411: import de.intevation.flys.client.shared.model.WMSLayer; ingo@1411: ingo@1411: ingo@1411: public class WMSLayersTree extends TreeGrid { ingo@1411: ingo@1411: protected Capabilities capabilites; ingo@1411: ingo@1411: public WMSLayersTree(Capabilities capabilites) { ingo@1411: super(); ingo@1411: this.capabilites = capabilites; ingo@1411: ingo@1411: initTree(); ingo@1411: } ingo@1411: ingo@1411: ingo@1411: protected void initTree() { ingo@1411: setLoadDataOnDemand(false); ingo@1411: setWidth100(); ingo@1411: setHeight100(); ingo@1411: setShowRoot(false); ingo@1411: setShowConnectors(true); ingo@1411: setNodeIcon("[SKIN]/images/blank.gif"); ingo@1411: ingo@1411: Tree tree = new Tree(); ingo@1411: tree.setChildrenProperty("children-nodes"); ingo@1411: tree.setNameProperty("title"); ingo@1411: tree.setIdField("title"); ingo@1411: tree.setModelType(TreeModelType.CHILDREN); ingo@1411: tree.setShowRoot(false); ingo@1411: ingo@1411: TreeNode root = new TreeNode("Root"); ingo@1411: TreeNode[] layers = buildTree(capabilites.getLayers()); ingo@1411: ingo@1411: root.setAttribute("children-nodes", layers); ingo@1411: tree.setRoot(root); ingo@1411: ingo@1411: setData(tree); ingo@1411: ingo@1411: if (layers != null && layers.length == 1) { ingo@1411: tree.openFolder(layers[0]); ingo@1411: } ingo@1411: } ingo@1411: ingo@1411: ingo@1411: protected TreeNode[] buildTree(List layers) { ingo@1411: List layerNodes = new ArrayList(); ingo@1411: ingo@1411: for (WMSLayer layer: layers) { ingo@1411: TreeNode tn = new TreeNode(); ingo@1411: tn.setAttribute("name", layer.getName()); ingo@1411: tn.setAttribute("title", layer.getTitle()); ingo@1411: ingo@1411: TreeNode[] tns = buildTree(layer.getLayers()); ingo@1411: ingo@1411: if (tns != null && tns.length > 0) { ingo@1411: tn.setAttribute("children-nodes", tns); ingo@1411: } ingo@1411: ingo@1411: layerNodes.add(tn); ingo@1411: } ingo@1411: ingo@1411: return (TreeNode[]) layerNodes.toArray(new TreeNode[layerNodes.size()]); ingo@1411: } ingo@1411: }