Mercurial > dive4elements > river
comparison gwt-client/src/main/java/org/dive4elements/river/client/client/ui/map/WMSLayersTree.java @ 5838:5aa05a7a34b7
Rename modules to more fitting names.
author | Sascha L. Teichmann <teichmann@intevation.de> |
---|---|
date | Thu, 25 Apr 2013 15:23:37 +0200 |
parents | flys-client/src/main/java/org/dive4elements/river/client/client/ui/map/WMSLayersTree.java@821a02bbfb4e |
children | 172338b1407f |
comparison
equal
deleted
inserted
replaced
5837:d9901a08d0a6 | 5838:5aa05a7a34b7 |
---|---|
1 package org.dive4elements.river.client.client.ui.map; | |
2 | |
3 import java.util.ArrayList; | |
4 import java.util.List; | |
5 | |
6 import com.google.gwt.core.client.GWT; | |
7 | |
8 import com.smartgwt.client.types.TreeModelType; | |
9 import com.smartgwt.client.widgets.tree.Tree; | |
10 import com.smartgwt.client.widgets.tree.TreeGrid; | |
11 import com.smartgwt.client.widgets.tree.TreeNode; | |
12 | |
13 import org.dive4elements.river.client.shared.model.Capabilities; | |
14 import org.dive4elements.river.client.shared.model.WMSLayer; | |
15 | |
16 | |
17 public class WMSLayersTree extends TreeGrid { | |
18 | |
19 /** | |
20 * An internal TreeNode that stores besides some string attribute a WMSLayer | |
21 * object. | |
22 */ | |
23 public static class WMSLayerNode extends TreeNode { | |
24 | |
25 protected WMSLayer wms; | |
26 | |
27 public WMSLayerNode(WMSLayer wms) { | |
28 super(); | |
29 this.wms = wms; | |
30 | |
31 setAttribute("name", wms.getName()); | |
32 setAttribute("title", wms.getTitle()); | |
33 } | |
34 | |
35 public WMSLayer getWMSLayer() { | |
36 return wms; | |
37 } | |
38 } // end of class WMSLayerNode | |
39 | |
40 | |
41 protected Capabilities capabilites; | |
42 protected String srs; | |
43 | |
44 | |
45 public WMSLayersTree(Capabilities capabilites) { | |
46 super(); | |
47 this.capabilites = capabilites; | |
48 | |
49 initTree(); | |
50 } | |
51 | |
52 | |
53 public WMSLayersTree(Capabilities capabilites, String srs) { | |
54 super(); | |
55 | |
56 this.capabilites = capabilites; | |
57 this.srs = srs; | |
58 | |
59 initTree(); | |
60 } | |
61 | |
62 | |
63 protected void initTree() { | |
64 setLoadDataOnDemand(false); | |
65 setWidth100(); | |
66 setHeight100(); | |
67 setShowRoot(false); | |
68 setShowConnectors(true); | |
69 setNodeIcon("[SKIN]/images/blank.gif"); | |
70 | |
71 Tree tree = new Tree(); | |
72 tree.setChildrenProperty("children-nodes"); | |
73 tree.setNameProperty("title"); | |
74 tree.setIdField("title"); | |
75 tree.setModelType(TreeModelType.CHILDREN); | |
76 tree.setShowRoot(false); | |
77 | |
78 TreeNode root = new TreeNode("Root"); | |
79 TreeNode[] layers = buildTree(capabilites.getLayers()); | |
80 | |
81 root.setAttribute("children-nodes", layers); | |
82 tree.setRoot(root); | |
83 | |
84 setData(tree); | |
85 | |
86 if (layers != null && layers.length == 1) { | |
87 tree.openFolder(layers[0]); | |
88 } | |
89 } | |
90 | |
91 | |
92 protected TreeNode[] buildTree(List<WMSLayer> layers) { | |
93 List<TreeNode> layerNodes = new ArrayList<TreeNode>(); | |
94 | |
95 for (WMSLayer layer: layers) { | |
96 WMSLayerNode tn = buildTreeNode(layer); | |
97 | |
98 if (tn != null) { | |
99 TreeNode[] tns = buildTree(layer.getLayers()); | |
100 | |
101 if (tns != null && tns.length > 0) { | |
102 tn.setAttribute("children-nodes", tns); | |
103 } | |
104 | |
105 layerNodes.add(tn); | |
106 } | |
107 } | |
108 | |
109 return layerNodes.toArray(new TreeNode[layerNodes.size()]); | |
110 } | |
111 | |
112 | |
113 protected WMSLayerNode buildTreeNode(WMSLayer wms) { | |
114 if (srs != null && srs.length() > 0) { | |
115 return wms.supportsSrs(srs) ? new WMSLayerNode(wms) : null; | |
116 } | |
117 else { | |
118 GWT.log("No target SRS specified."); | |
119 return new WMSLayerNode(wms); | |
120 } | |
121 } | |
122 } |