Statistics
| Revision:

root / trunk / libraries / libFMap / src / com / iver / cit / gvsig / fmap / layers / FLyrDefault.java @ 1034

History | View | Annotate | Download (6.45 KB)

1
package com.iver.cit.gvsig.fmap.layers;
2

    
3
import com.iver.cit.gvsig.fmap.DriverException;
4
import com.iver.cit.gvsig.fmap.FMap;
5
import com.iver.cit.gvsig.fmap.drivers.DriverIOException;
6

    
7
import com.iver.utiles.XMLEntity;
8

    
9
import org.cresques.cts.ICoordTrans;
10
import org.cresques.cts.IProjection;
11

    
12
import java.beans.PropertyChangeSupport;
13

    
14
import java.util.ArrayList;
15
import java.util.Iterator;
16

    
17

    
18
/**
19
 * Implementaci?n de las caracter?sticas de alto nivel de las capas:
20
 * visibilidad, activaci?n, nombre, ...
21
 */
22
public abstract class FLyrDefault implements FLayer {
23
        private PropertyChangeSupport lnkPropertyChangeSupport;
24

    
25
        /** Path de la capa en el arbol de capas */
26
        private FLayers parentLayer = null;
27
        private FLayers virtualLayers = null;
28
        private FLyrText layerText = null;
29
        private String name;
30
        private IProjection projection;
31
        private boolean visible = true;
32
        private boolean active;
33
        private int transparency = 0;
34
        private ICoordTrans ct;
35
        private ArrayList layerListeners = new ArrayList();
36

    
37
        /**
38
         * @see com.iver.cit.gvsig.fmap.layers.FLayer#setActive(boolean)
39
         */
40
        public void setActive(boolean selected) {
41
                active = selected;
42
                callActivationChanged(new LayerEvent(this, "active"));
43
        }
44

    
45
        /**
46
         * @see com.iver.cit.gvsig.fmap.layers.FLayer#isActive()
47
         */
48
        public boolean isActive() {
49
                return active;
50
        }
51

    
52
        /**
53
         * @see com.iver.cit.gvsig.fmap.layers.FLayer#setName(java.lang.String)
54
         */
55
        public void setName(String name) {
56
                this.name = name;
57
                callNameChanged(new LayerEvent(this, "name"));
58
        }
59

    
60
        /**
61
         * @see com.iver.cit.gvsig.fmap.layers.FLayer#getName()
62
         */
63
        public String getName() {
64
                return name;
65
        }
66

    
67
        /*
68
         * @see com.iver.cit.gvsig.fmap.layers.FLayer#load()
69
         */
70
        public void load() throws DriverIOException {
71
        }
72

    
73
        /**
74
         * @see com.iver.cit.gvsig.fmap.layers.FLayer#setVisible(boolean)
75
         */
76
        public void setVisible(boolean visibility) {
77
                visible = visibility;
78
                callVisibilityChanged(new LayerEvent(this, "visible"));
79
        }
80

    
81
        /**
82
         * @see com.iver.cit.gvsig.fmap.layers.FLayer#isVisible()
83
         */
84
        public boolean isVisible() {
85
                return visible;
86
        }
87

    
88
        /**
89
         * Devuelve la capa padre de la actual.
90
         *
91
         * @return FLayers padre.
92
         */
93
        public FLayers getParentLayer() {
94
                return parentLayer;
95
        }
96

    
97
        /**
98
         * Inserta la capa padre.
99
         *
100
         * @param root capa padre.
101
         */
102
        public void setParentLayer(FLayers root) {
103
                this.parentLayer = root;
104
        }
105

    
106
        /**
107
         * Inserta una proyecci?n.
108
         *
109
         * @param proj Proyecci?n.
110
         */
111
        public void setProjection(IProjection proj) {
112
                projection = proj;
113
        }
114

    
115
        /**
116
         * @see org.cresques.geo.Projected#getProjection()
117
         */
118
        public IProjection getProjection() {
119
                return projection;
120
        }
121

    
122
        /**
123
         * @see org.cresques.geo.Projected#reProject(org.cresques.cts.ICoordTrans)
124
         */
125
        public void reProject(ICoordTrans arg0) {
126
        }
127

    
128
        /**
129
         * Devuelve el nivel de transparencia de la capa.
130
         *
131
         * @return Entero que representa el nivel de transparencia.
132
         */
133
        public int getTransparency() {
134
                return transparency;
135
        }
136

    
137
        /**
138
         * Inserta el nivel de transparencia de la capa.
139
         *
140
         * @param trans Nivel de transparencia.
141
         */
142
        public void setTransparency(int trans) {
143
                transparency = trans;
144
        }
145

    
146
        /**
147
         * Devuelve el XMLEntity a partir del objeto.
148
         *
149
         * @return XMLEntity.
150
         */
151
        public XMLEntity getXMLEntity() {
152
                XMLEntity xml = new XMLEntity();
153
                xml.putProperty("className", this.getClass().getName());
154

    
155
                if (this instanceof FLayers) {
156
                }
157

    
158
                xml.putProperty("active", active);
159
                xml.putProperty("name", name);
160

    
161
                //TODO xml.addChild(parentLayer.getXMLEntity());
162
                //TODO xml.addChild(projection.getXMLEntity());
163
                xml.putProperty("visible", visible);
164

    
165
                return xml;
166
        }
167

    
168
        /**
169
         * Inserta los valores de los atributos del XMLEntity al objeto.
170
         *
171
         * @param xml XMLEntity.
172
         *
173
         * @throws XMLException
174
         * @throws DriverException
175
         * @throws DriverIOException
176
         */
177
        public void setXMLEntity(XMLEntity xml)
178
                throws XMLException, DriverException, DriverIOException {
179
                active = xml.getBooleanProperty("active");
180
                name = xml.getStringProperty("name");
181
                visible = xml.getBooleanProperty("visible");
182
        }
183

    
184
        /**
185
         * @see com.iver.cit.gvsig.fmap.layers.FLayer#getFMap()
186
         */
187
        public FMap getFMap() {
188
                if (getParentLayer() != null) {
189
                        return getParentLayer().getFMap();
190
                } else {
191
                        return null;
192
                }
193
        }
194

    
195
        /**
196
         * A?ade a la lista de listener un nuevo LayerListener.
197
         *
198
         * @param o LayerListener.
199
         *
200
         * @return boolean.
201
         */
202
        public boolean addLayerListener(LayerListener o) {
203
                return layerListeners.add(o);
204
        }
205

    
206
        /**
207
         * Borra de la lista de listeners el que se pasa como par?metro.
208
         *
209
         * @param o LayerListener a borrar.
210
         *
211
         * @return True si ha sido correcto el borrado del Listener.
212
         */
213
        public boolean removeLayerListener(LayerListener o) {
214
                return layerListeners.remove(o);
215
        }
216

    
217
        /**
218
         * Llamada al metodo nameChanged de los Listeners dados de alta.
219
         *
220
         * @param e LayerEvent.
221
         */
222
        private void callNameChanged(LayerEvent e) {
223
                for (Iterator iter = layerListeners.iterator(); iter.hasNext();) {
224
                        LayerListener listener = (LayerListener) iter.next();
225

    
226
                        listener.nameChanged(e);
227
                }
228
        }
229

    
230
        /**
231
         * Llamada al m?todo visibilityChanged de los Listeners.
232
         *
233
         * @param e LayerEvent.
234
         */
235
        private void callVisibilityChanged(LayerEvent e) {
236
                for (Iterator iter = layerListeners.iterator(); iter.hasNext();) {
237
                        LayerListener listener = (LayerListener) iter.next();
238

    
239
                        listener.visibilityChanged(e);
240
                }
241
        }
242

    
243
        /**
244
         * Llamada al m?todo activationChanged de los Listener.
245
         *
246
         * @param e LayerEvent.
247
         */
248
        private void callActivationChanged(LayerEvent e) {
249
                for (Iterator iter = layerListeners.iterator(); iter.hasNext();) {
250
                        LayerListener listener = (LayerListener) iter.next();
251

    
252
                        listener.activationChanged(e);
253
                }
254
        }
255

    
256
        /**
257
         * Devuelve las capas virtuales.
258
         *
259
         * @return FLayers.
260
         */
261
        public FLayers getVirtualLayers() {
262
                return virtualLayers;
263
        }
264

    
265
        /**
266
         * Inserta las capas virtuales.
267
         *
268
         * @param virtualLayers FLayers.
269
         */
270
        public void setVirtualLayers(FLayers virtualLayers) {
271
                this.virtualLayers = virtualLayers;
272
        }
273

    
274
        /**
275
         * Devuelve la capa de texto.
276
         *
277
         * @return capa de texto.
278
         */
279
        public FLyrText getLayerText() {
280
                return layerText;
281
        }
282

    
283
        /**
284
         * Inserta la capa de texto.
285
         *
286
         * @param layerText Capa de texto.
287
         */
288
        public void setLayerText(FLyrText layerText) {
289
                this.layerText = layerText;
290
        }
291

    
292
        /**
293
         * Inserta las coordenadas de transformaci?n.
294
         *
295
         * @param ct Cooredenadas de transformaci?n.
296
         */
297
        public void setCoordTrans(ICoordTrans ct) {
298
                this.ct = ct;
299
        }
300

    
301
        /**
302
         * Devuelve las coordenadas de transformaci?n.
303
         *
304
         * @return Coordenadas de transformaci?n.
305
         */
306
        public ICoordTrans getCoordTrans() {
307
                return ct;
308
        }
309
}