Statistics
| Revision:

svn-gvsig-desktop / trunk / libraries / libFMap / src / com / iver / cit / gvsig / fmap / layers / FLayers.java @ 242

History | View | Annotate | Download (8.79 KB)

1
/* Generated by Together */
2
package com.iver.cit.gvsig.fmap.layers;
3

    
4
import com.iver.cit.gvsig.fmap.ViewPort;
5
import com.iver.cit.gvsig.fmap.XMLEntity;
6
import com.iver.cit.gvsig.fmap.core.FGeometry;
7
import com.iver.cit.gvsig.fmap.drivers.DriverIOException;
8
import com.iver.cit.gvsig.fmap.operations.QueriedPoint;
9
import com.iver.cit.gvsig.fmap.operations.strategies.FeatureVisitor;
10

    
11
import java.awt.Graphics2D;
12
import java.awt.geom.Rectangle2D;
13
import java.awt.image.BufferedImage;
14

    
15
import java.util.ArrayList;
16
import java.util.BitSet;
17
import java.util.Iterator;
18

    
19

    
20
/**
21
 * Representa un nodo interno en el ?rbol de capas
22
 */
23
public class FLayers extends FLyrDefault implements FLayer {
24
    LayerCollectionListener[] lnkLayerCollectionListener;
25
    private ArrayList layers = new ArrayList(4);
26

    
27
    /**
28
     * A?ade un listener de los eventos de la colecci?n de capas
29
     *
30
     * @param listener DOCUMENT ME!
31
     */
32
    public void addLayerCollectionListener(LayerCollectionListener listener) {
33
    }
34

    
35
    /**
36
     * ELimina un listener de los eventos de la colecci?n de capas
37
     *
38
     * @param listener DOCUMENT ME!
39
     */
40
    public void removeLayerCollectionListener(LayerCollectionListener listener) {
41
    }
42

    
43
    /**
44
     * A?ade una capa en el arbol en la posici?n indicada por el path que se
45
     * pasa como par?metro
46
     *
47
     * @param parent DOCUMENT ME!
48
     * @param layer DOCUMENT ME!
49
     *
50
     * @throws ChildrenNotAllowedException
51
     */
52
    public void addLayer(LayerPath parent, FLayer layer)
53
        throws ChildrenNotAllowedException {
54
        if (parent.isEmpty()) {
55
            LayerPath nuevo = new LayerPath(getLayerPath(), layers.size());
56
            layer.setLayerPath(nuevo);
57
            layers.add(layer);
58
        } else {
59
            int index = parent.popIndex();
60

    
61
            if (layers.get(index) instanceof FLayers) {
62
                ((FLayers) layers.get(index)).addLayer(parent, layer);
63
            } else {
64
                throw new ChildrenNotAllowedException();
65
            }
66
        }
67
    }
68

    
69
    /**
70
     * Mueve una capa de la posici?n from a la posici?n to.
71
     *
72
     * @param from DOCUMENT ME!
73
     * @param to DOCUMENT ME!
74
     *
75
     * @throws ChildrenNotAllowedException DOCUMENT ME!
76
     */
77
    public void moveTo(LayerPath from, LayerPath to)
78
        throws ChildrenNotAllowedException {
79
        FLayer layer = getLayer(from);
80
        removeLayer(from);
81
        addLayer(to, layer);
82
    }
83

    
84
    /**
85
     * Elimina una capa por su path relativo a ?ste nodo
86
     *
87
     * @param path DOCUMENT ME!
88
     *
89
     * @throws ChildrenNotAllowedException DOCUMENT ME!
90
     */
91
    public void removeLayer(LayerPath path) throws ChildrenNotAllowedException {
92
        int i = path.popIndex();
93
        FLayer lyr = (FLayer) layers.get(i);
94

    
95
        if (path.isEmpty()) {
96
            layers.remove(i);
97
        } else if (layers.get(i) instanceof FLayers) {
98
            ((FLayers) lyr).removeLayer(path);
99
        } else {
100
            throw new ChildrenNotAllowedException();
101
        }
102
    }
103

    
104
    /**
105
     * Obtiene el array de capas visibles que penden del arbol cuya ra?z es
106
     * este nodo
107
     *
108
     * @return DOCUMENT ME!
109
     */
110
    public FLayer[] getVisibles() {
111
        ArrayList array = new ArrayList();
112
        for (Iterator iter = layers.iterator(); iter.hasNext();) {
113
            if (((FLayer) iter.next()).isVisible()) {
114
                array.add((FLayer) iter.next());
115
            }
116
        }
117

    
118
        return (FLayer[]) array.toArray();
119
    }
120

    
121
    /**
122
     * Obtiene el array de capas activas en el sub?rbol que pende de este nodo
123
     *
124
     * @return DOCUMENT ME!
125
     */
126
    public FLayer[] getActives() {
127
        ArrayList array = new ArrayList();
128
        for (Iterator iter = layers.iterator(); iter.hasNext();) {
129
            if (((FLayer) iter.next()).isActive()) {
130
                array.add((FLayer) iter.next());
131
            }
132
        }
133

    
134
        return (FLayer[]) array.toArray();
135
    }
136

    
137
    /**
138
     * Obtiene el descendiente de esta colecci?n que se encuentra en el camino
139
     * indicado en el par?metro. En caso de que el path no contenga ning?n
140
     * elemento se devuelve this
141
     *
142
     * @param path DOCUMENT ME!
143
     *
144
     * @return DOCUMENT ME!
145
     */
146
    public FLayer getLayer(LayerPath path) {
147
        int i = path.popIndex();
148
        FLayer lyr = (FLayer) layers.get(i);
149

    
150
        if (path.isEmpty()) {
151
            return (FLayer) layers.get(i);
152
        } else if (layers.get(i) instanceof FLayers) {
153
            ((FLayers) lyr).getLayer(path);
154
        }
155

    
156
        return this;
157
    }
158

    
159
    /**
160
     * Obtiene el hijo i-?simo directo de esta colecci?n
161
     *
162
     * @param index DOCUMENT ME!
163
     *
164
     * @return DOCUMENT ME!
165
     */
166
    public FLayer getChildLayer(int index) {
167
        return (FLayer) layers.get(index);
168
    }
169

    
170
    /**
171
     * Obtiene el n?mero de capas que hay en el sub?rbol pendiente de ?ste nodo
172
     *
173
     * @return DOCUMENT ME!
174
     */
175
    public int getLayerCount() {
176
        int all = 0;
177

    
178
        for (int i = 0; i < layers.size(); i++) {
179
            all++;
180

    
181
            if (layers.get(i) instanceof FLayers) {
182
                all += ((FLayers) layers.get(i)).getLayerCount();
183
            }
184
        }
185

    
186
        return all;
187
    }
188

    
189
    /**
190
     * Obtiene el n?mero de hijos que penden de este nodo del ?rbol de capas
191
     *
192
     * @return DOCUMENT ME!
193
     */
194
    public int getChildLayerCount() {
195
        return layers.size();
196
    }
197

    
198
    /**
199
     * Obtiene una representaci?n de la colecci?n de capas de forma recursiva
200
     *
201
     * @return DOCUMENT ME!
202
     */
203
    public XMLEntity getProperties() {
204
        //TODO implementar bien
205
        return null;
206
    }
207

    
208
    /**
209
     * DOCUMENT ME!
210
     *
211
     * @param xe DOCUMENT ME!
212
     *
213
     * @return DOCUMENT ME!
214
     */
215
    public static FLayers createFLayers(XMLEntity xe) {
216
        //TODO implementar bien
217
        return null;
218
    }
219

    
220
    /**
221
     * Crea una replica del objeto Layers
222
     *
223
     * @return DOCUMENT ME!
224
     */
225
    public FLayers cloneFLayers() {
226
        return createFLayers(getProperties());
227
    }
228

    
229
    /**
230
     * @see com.iver.cit.gvsig.fmap.operations.strategies.Strategy#process(com.iver.cit.gvsig.fmap.FeatureSelectorVisitor,
231
     *      VectorialSubSet)
232
     */
233
    public void process(FeatureVisitor visitor, BitSet subset) {
234
    }
235

    
236
    /**
237
     * @see com.iver.cit.gvsig.fmap.operations.strategies.Strategy#queryByPoint(java.awt.geom.Point2D,
238
     *      double)
239
     */
240
    public BitSet queryByPoint(QueriedPoint p, double tolerance) {
241
        return null;
242
    }
243

    
244
    /**
245
     * @see com.iver.cit.gvsig.fmap.operations.strategies.Strategy#queryByRect(java.awt.geom.Rectangle2D)
246
     */
247
    public BitSet queryByRect(Rectangle2D rect) {
248
        return null;
249
    }
250

    
251
    /**
252
     * @see com.iver.cit.gvsig.fmap.operations.strategies.Strategy#queryByShape(com.iver.cit.gvsig.fmap.fshape.FGeometry,
253
     *      int)
254
     */
255
    public BitSet queryByShape(FGeometry g, int relationship) {
256
        return null;
257
    }
258

    
259
    /**
260
     * DOCUMENT ME!
261
     *
262
     * @param image DOCUMENT ME!
263
     * @param g DOCUMENT ME!
264
     * @param viewPort DOCUMENT ME!
265
     *
266
     * @throws DriverIOException
267
     *
268
     * @see com.iver.cit.gvsig.fmap.operations.strategies.Strategy#draw(java.awt.image.BufferedImage,
269
     *      java.awt.Graphics2D, com.iver.cit.gvsig.fmap.ViewPort)
270
     */
271
    public void draw(BufferedImage image, Graphics2D g, ViewPort viewPort)
272
        throws DriverIOException {
273
        for (Iterator iter = layers.iterator(); iter.hasNext();) {
274
            LayerOperations capa = (LayerOperations) iter.next();
275

    
276
            //TODO comprobar si la capa es visible
277
            //                        if (capa.isVisible()){
278
            capa.draw(image, g, viewPort);
279

    
280
            //                }
281
        }
282
    }
283

    
284
    /**
285
     * @see com.iver.cit.gvsig.fmap.operations.strategies.Strategy#getSelectionBounds()
286
     */
287
    public Rectangle2D getSelectionBounds() {
288
        return null;
289
    }
290

    
291
    /**
292
     * @see com.iver.cit.gvsig.fmap.operations.strategies.Strategy#createIndex()
293
     */
294
    public void createIndex() {
295
    }
296

    
297
    /**
298
     * @see com.iver.cit.gvsig.fmap.layers.FLayer#getFullExtent()
299
     */
300
    public Rectangle2D getFullExtent() throws DriverIOException {
301
        //TODO implementar bien
302
        return null;
303
    }
304

    
305
    /**
306
     * @see com.iver.cit.gvsig.fmap.layers.FLayer#getRecordset()
307
     */
308
    public FRecordset getRecordset() {
309
        return null;
310
    }
311

    
312
    /**
313
     * @see com.iver.cit.gvsig.fmap.layers.FLayer#selectByPoint(java.awt.geom.Point2D,
314
     *      double)
315
     */
316
    public void selectByPoint(QueriedPoint p, double tolerance) {
317
    }
318

    
319
    /**
320
     * @see com.iver.cit.gvsig.fmap.layers.FLayer#selectByRect(java.awt.geom.Rectangle2D)
321
     */
322
    public void selectByRect(Rectangle2D rect) {
323
    }
324

    
325
    /**
326
     * @see com.iver.cit.gvsig.fmap.layers.FLayer#selectByShape(com.iver.cit.gvsig.fmap.core.FGeometry,
327
     *      int)
328
     */
329
    public void selectByShape(FGeometry g, int relationship) {
330
    }
331
}