Statistics
| Revision:

gvsig-raster / org.gvsig.raster / branches / org.gvsig.raster.2.4 / org.gvsig.raster.wms2 / org.gvsig.raster.wms2.provider / src / main / java / org / gvsig / raster / wms / provider / LayerNode.java @ 8686

History | View | Annotate | Download (5.99 KB)

1
/* gvSIG. Desktop Geographic Information System.
2
 *
3
 * Copyright ? 2007-2018 gvSIG Association
4
 *
5
 * This program is free software; you can redistribute it and/or
6
 * modify it under the terms of the GNU General Public License
7
 * as published by the Free Software Foundation; either version 2
8
 * of the License, or (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
18
 * MA  02110-1301, USA.
19
 *
20
 * For any additional information, do not hesitate to contact us
21
 * at info AT gvsig.com, or visit our website www.gvsig.com.
22
 */
23
package org.gvsig.raster.wms.provider;
24

    
25
import java.awt.Component;
26
import java.util.ArrayList;
27
import java.util.Collections;
28
import java.util.Enumeration;
29
import java.util.Iterator;
30
import java.util.List;
31

    
32
import javax.swing.tree.TreeNode;
33

    
34
import org.apache.commons.lang3.StringUtils;
35

    
36
import org.gvsig.remoteclient.wms.WMSLayer;
37
import org.gvsig.remoteclient.wms.WMSStyle;
38
import org.gvsig.tools.ToolsLocator;
39
import org.gvsig.tools.i18n.I18nManager;
40

    
41

    
42
/**
43
 * @author fdiaz
44
 *
45
 */
46
public class LayerNode implements TreeNode {
47

    
48
    private TreeNode parent;
49
    private List<LayerNode> children;
50
    private List<Style> styles;
51
    private int selectedStyleIndex = -1;
52
    private String name;
53
    private String title;
54

    
55
    /**
56
     * @param layer
57
     * @param parent
58
     *
59
     */
60
    public LayerNode(WMSLayer layer, TreeNode parent) {
61
        this.name = layer.getName();
62
        this.title = layer.getTitle();
63
        this.parent = parent;
64
        setSelectedStyleIndex(-1);
65
        ArrayList<WMSStyle> layerStyles = layer.getStyles();
66
        styles = new ArrayList<>(layerStyles.size());
67
        for (Iterator<WMSStyle> iterator = layerStyles.iterator(); iterator.hasNext();) {
68
            WMSStyle wmsStyle = iterator.next();
69
            styles.add(new Style(wmsStyle));
70
        }
71
        if(layerStyles.size()>0){
72
            setSelectedStyleIndex(0);
73
        }
74

    
75
        ArrayList<WMSLayer> layerChildren = layer.getChildren();
76
        children = new ArrayList<>(layerChildren.size());
77
        for (Iterator<WMSLayer> iterator = layerChildren.iterator(); iterator.hasNext();) {
78
            WMSLayer wmsLayer = iterator.next();
79
            children.add(new LayerNode(wmsLayer, this));
80
        }
81
    }
82

    
83
    /* (non-Javadoc)
84
     * @see javax.swing.tree.TreeNode#getChildAt(int)
85
     */
86
    @Override
87
    public TreeNode getChildAt(int childIndex) {
88
        return children.get(childIndex);
89
    }
90

    
91
    /* (non-Javadoc)
92
     * @see javax.swing.tree.TreeNode#getChildCount()
93
     */
94
    @Override
95
    public int getChildCount() {
96
        return children.size();
97
    }
98

    
99
    /* (non-Javadoc)
100
     * @see javax.swing.tree.TreeNode#getParent()
101
     */
102
    @Override
103
    public TreeNode getParent() {
104
        return parent;
105
    }
106

    
107
    /* (non-Javadoc)
108
     * @see javax.swing.tree.TreeNode#getIndex(javax.swing.tree.TreeNode)
109
     */
110
    @Override
111
    public int getIndex(TreeNode node) {
112
        for(int i =0; i<children.size(); i++){
113
            if(children.get(i).equals(node)){
114
                return i;
115
            }
116
        }
117
        return -1;
118
    }
119

    
120
    /* (non-Javadoc)
121
     * @see javax.swing.tree.TreeNode#getAllowsChildren()
122
     */
123
    @Override
124
    public boolean getAllowsChildren() {
125
        return (children.size() > 0);
126
    }
127

    
128
    /* (non-Javadoc)
129
     * @see javax.swing.tree.TreeNode#isLeaf()
130
     */
131
    @Override
132
    public boolean isLeaf() {
133
        return (children.size() == 0);
134
    }
135

    
136
    /* (non-Javadoc)
137
     * @see javax.swing.tree.TreeNode#children()
138
     */
139
    @Override
140
    public Enumeration children() {
141
        return Collections.enumeration(children);
142
    }
143

    
144

    
145
    /**
146
     * @return the selectedStyle
147
     */
148
    public int getSelectedStyleIndex() {
149
        return selectedStyleIndex;
150
    }
151

    
152
    /**
153
     * @param selectedStyle the selectedStyle to set
154
     */
155
    public void setSelectedStyleIndex(int selectedStyle) {
156
        this.selectedStyleIndex = selectedStyle;
157
    }
158

    
159
    /**
160
     * @return
161
     */
162
    public Style getSelectedStyle() {
163
        if(selectedStyleIndex>=0 && selectedStyleIndex<styles.size()){
164
            return styles.get(selectedStyleIndex);
165
        }
166
        return null;
167
    }
168

    
169
    /**
170
     * @param selectedStyleIndex the selectedStyle to set
171
     */
172
    public void setSelectedStyle(Style style) {
173
        this.selectedStyleIndex = styles.indexOf(style);
174
    }
175

    
176
    public List<Style> getStyles() {
177
        return styles;
178
    }
179

    
180
    public String toString() {
181
        String str;
182
            if (StringUtils.isEmpty(name)) {
183
                str = title;
184
            } else {
185
                str = "[" + name + "] " + title;
186
            }
187
        return str;
188
    }
189

    
190
    /**
191
     * @return
192
     */
193
    public String getName() {
194
        return name;
195
    }
196

    
197
    /**
198
     * @return
199
     */
200
    public String getTitle() {
201
        return title;
202
    }
203

    
204
    /**
205
     * @author fdiaz
206
     *
207
     */
208
    public class Style {
209

    
210
        private String name;
211
        private String title;
212

    
213
        /**
214
         * @param source
215
         */
216
        public Style(WMSStyle source){
217
            setName(source.getName());
218
            setTitle(source.getTitle());
219
        }
220

    
221
        /**
222
         * @return the name
223
         */
224
        public String getName() {
225
            return name;
226
        }
227

    
228
        /**
229
         * @param name the name to set
230
         */
231
        public void setName(String name) {
232
            this.name = name;
233
        }
234

    
235
        /**
236
         * @return the title
237
         */
238
        public String getTitle() {
239
            return title;
240
        }
241

    
242
        /**
243
         * @param title the title to set
244
         */
245
        public void setTitle(String title) {
246
            this.title = title;
247
        }
248

    
249
    }
250

    
251

    
252
}