Statistics
| Revision:

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

History | View | Annotate | Download (18.8 KB)

1 1100 fjp
/* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
2
 *
3
 * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
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., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
18
 *
19
 * For more information, contact:
20
 *
21
 *  Generalitat Valenciana
22
 *   Conselleria d'Infraestructures i Transport
23
 *   Av. Blasco Ib??ez, 50
24
 *   46010 VALENCIA
25
 *   SPAIN
26
 *
27
 *      +34 963862235
28
 *   gvsig@gva.es
29
 *      www.gvsig.gva.es
30
 *
31
 *    or
32
 *
33
 *   IVER T.I. S.A
34
 *   Salamanca 50
35
 *   46005 Valencia
36
 *   Spain
37
 *
38
 *   +34 963163400
39
 *   dac@iver.es
40
 */
41 214 fernando
package com.iver.cit.gvsig.fmap.layers;
42
43 5923 fjp
import java.awt.image.BufferedImage;
44 2531 caballero
import java.util.ArrayList;
45 5200 ldiaz
import java.util.Hashtable;
46 2531 caballero
import java.util.Iterator;
47 7463 azabala
import java.util.List;
48 9224 jjdelcerro
import java.util.Map;
49 7867 sbayarri
import java.util.Set;
50 214 fernando
51 5760 jmvivo
import javax.swing.ImageIcon;
52
53 2659 fjp
import org.apache.log4j.Logger;
54 354 fernando
import org.cresques.cts.ICoordTrans;
55 214 fernando
import org.cresques.cts.IProjection;
56 10627 caballero
import org.gvsig.exceptions.BaseException;
57 214 fernando
58 10627 caballero
import com.hardcode.gdbms.engine.data.driver.DriverException;
59
import com.iver.cit.gvsig.exceptions.layers.LoadLayerException;
60
import com.iver.cit.gvsig.exceptions.layers.ReloadLayerException;
61
import com.iver.cit.gvsig.exceptions.layers.StartEditionLayerException;
62 6878 cesar
import com.iver.cit.gvsig.fmap.MapContext;
63 6164 luisw2
import com.iver.cit.gvsig.fmap.crs.CRSFactory;
64 2531 caballero
import com.iver.cit.gvsig.fmap.drivers.DriverIOException;
65 10932 jmvivo
import com.iver.cit.gvsig.fmap.layers.layerOperations.ComposedLayer;
66 3329 fjp
import com.iver.cit.gvsig.fmap.operations.strategies.Strategy;
67 9224 jjdelcerro
import com.iver.utiles.IPersistance;
68 2531 caballero
import com.iver.utiles.XMLEntity;
69 214 fernando
70
/**
71 435 vcaballero
 * Implementaci?n de las caracter?sticas de alto nivel de las capas:
72
 * visibilidad, activaci?n, nombre, ...
73 214 fernando
 */
74 341 fernando
public abstract class FLyrDefault implements FLayer {
75 5923 fjp
        // private PropertyChangeSupport lnkPropertyChangeSupport;
76
        private static Logger logger = Logger.getLogger(FLyrDefault.class);
77
78 525 vcaballero
        /** Path de la capa en el arbol de capas */
79
        private FLayers parentLayer = null;
80 745 fjp
        private FLayers virtualLayers = null;
81 274 fjp
        private String name;
82 354 fernando
        private IProjection projection;
83 434 fjp
        private int transparency = 0;
84 885 fjp
        private ICoordTrans ct;
85 1176 fjp
        private double minScale = -1; // -1 indica que no se usa
86
        private double maxScale = -1;
87 7463 azabala
//        private boolean isInTOC = true;
88 3256 nacho
        protected ArrayList layerListeners = new ArrayList();
89 5923 fjp
        private Strategy privateStrategy = null;
90 5200 ldiaz
        private Hashtable properties = new Hashtable();
91 5923 fjp
        private BufferedImage cacheImageDrawnLayers = null;
92 7867 sbayarri
93 7463 azabala
        //by default, all is active, visible and avalaible
94
        private FLayerStatus status = new FLayerStatus();
95 5923 fjp
96
        public Object getProperty(Object key) {
97 5200 ldiaz
                return properties.get(key);
98
        }
99 5923 fjp
100
        public void setProperty(Object key, Object val) {
101 5200 ldiaz
                properties.put(key, val);
102
        }
103 5908 caballero
104 9224 jjdelcerro
        public Map getExtendedProperties() {
105
                return properties;
106
        }
107 525 vcaballero
        /**
108
         * @see com.iver.cit.gvsig.fmap.layers.FLayer#setActive(boolean)
109
         */
110
        public void setActive(boolean selected) {
111 7463 azabala
                //active = selected;
112
                status.active = selected;
113 5923 fjp
                callActivationChanged(LayerEvent.createActivationChangedEvent(this,
114
                                "active"));
115 525 vcaballero
        }
116 214 fernando
117 525 vcaballero
        /**
118
         * @see com.iver.cit.gvsig.fmap.layers.FLayer#isActive()
119
         */
120
        public boolean isActive() {
121 7463 azabala
//                return active;
122
                return status.active;
123 525 vcaballero
        }
124 214 fernando
125 525 vcaballero
        /**
126
         * @see com.iver.cit.gvsig.fmap.layers.FLayer#setName(java.lang.String)
127
         */
128
        public void setName(String name) {
129
                this.name = name;
130 1082 fernando
                callNameChanged(LayerEvent.createNameChangedEvent(this, "name"));
131 525 vcaballero
        }
132 214 fernando
133 525 vcaballero
        /**
134
         * @see com.iver.cit.gvsig.fmap.layers.FLayer#getName()
135
         */
136
        public String getName() {
137
                return name;
138
        }
139 214 fernando
140 567 luisw
        /*
141 525 vcaballero
         * @see com.iver.cit.gvsig.fmap.layers.FLayer#load()
142
         */
143 10627 caballero
        public void load() throws LoadLayerException {
144 525 vcaballero
        }
145 214 fernando
146 525 vcaballero
        /**
147
         * @see com.iver.cit.gvsig.fmap.layers.FLayer#setVisible(boolean)
148
         */
149
        public void setVisible(boolean visibility) {
150 7463 azabala
//                visible = visibility;
151 7464 azabala
                boolean changed = status.visible != visibility;
152 7463 azabala
                status.visible = visibility;
153 6002 fjp
                setDirty(true);
154 7380 jmvivo
                if (changed){
155
                        if (this.getMapContext() != null){
156
                                this.getMapContext().clearAllCachingImageDrawnLayers();
157
                        }
158
                }
159 5923 fjp
                callVisibilityChanged(LayerEvent.createVisibilityChangedEvent(this,
160
                                "visible"));
161 525 vcaballero
        }
162 435 vcaballero
163 525 vcaballero
        /**
164
         * @see com.iver.cit.gvsig.fmap.layers.FLayer#isVisible()
165
         */
166
        public boolean isVisible() {
167 7463 azabala
//                return visible && this.available;
168
                return status.visible && status.available;
169 525 vcaballero
        }
170 435 vcaballero
171 525 vcaballero
        /**
172 1034 vcaballero
         * Devuelve la capa padre de la actual.
173 7867 sbayarri
         *
174 1034 vcaballero
         * @return FLayers padre.
175 525 vcaballero
         */
176
        public FLayers getParentLayer() {
177
                return parentLayer;
178
        }
179 435 vcaballero
180 525 vcaballero
        /**
181 1034 vcaballero
         * Inserta la capa padre.
182 7867 sbayarri
         *
183 5923 fjp
         * @param root
184
         *            capa padre.
185 525 vcaballero
         */
186
        public void setParentLayer(FLayers root) {
187
                this.parentLayer = root;
188
        }
189 435 vcaballero
190 525 vcaballero
        /**
191 1034 vcaballero
         * Inserta una proyecci?n.
192 7867 sbayarri
         *
193 5923 fjp
         * @param proj
194
         *            Proyecci?n.
195 525 vcaballero
         */
196
        public void setProjection(IProjection proj) {
197 5908 caballero
                projection = proj;
198 5923 fjp
                // Comprobar que la proyecci?n es la misma que la de FMap
199
                // Si no lo es, es una capa que est? reproyectada al vuelo
200 6881 cesar
                if ((proj != null) && (getMapContext() != null))
201
                        if (proj != getMapContext().getProjection()) {
202
                                ICoordTrans ct = proj.getCT(getMapContext().getProjection());
203 5923 fjp
                                setCoordTrans(ct);
204
                                logger.debug("Cambio proyecci?n: FMap con "
205 6881 cesar
                                                + getMapContext().getProjection().getAbrev() + " y capa "
206 5923 fjp
                                                + getName() + " con " + proj.getAbrev());
207
                        }
208 525 vcaballero
        }
209 435 vcaballero
210 525 vcaballero
        /**
211
         * @see org.cresques.geo.Projected#getProjection()
212
         */
213
        public IProjection getProjection() {
214
                return projection;
215
        }
216 435 vcaballero
217 525 vcaballero
        /**
218
         * @see org.cresques.geo.Projected#reProject(org.cresques.cts.ICoordTrans)
219
         */
220
        public void reProject(ICoordTrans arg0) {
221
        }
222 435 vcaballero
223 525 vcaballero
        /**
224 1034 vcaballero
         * Devuelve el nivel de transparencia de la capa.
225 7867 sbayarri
         *
226 1034 vcaballero
         * @return Entero que representa el nivel de transparencia.
227 525 vcaballero
         */
228
        public int getTransparency() {
229 434 fjp
                return transparency;
230
        }
231 525 vcaballero
232
        /**
233 1034 vcaballero
         * Inserta el nivel de transparencia de la capa.
234 7867 sbayarri
         *
235 5923 fjp
         * @param trans
236
         *            Nivel de transparencia.
237 525 vcaballero
         */
238 434 fjp
        public void setTransparency(int trans) {
239
                transparency = trans;
240 6002 fjp
                setDirty(true);
241 434 fjp
        }
242 435 vcaballero
243 525 vcaballero
        /**
244 1034 vcaballero
         * Devuelve el XMLEntity a partir del objeto.
245 7867 sbayarri
         *
246 1034 vcaballero
         * @return XMLEntity.
247 1828 fernando
         * @throws XMLException
248 525 vcaballero
         */
249 1828 fernando
        public XMLEntity getXMLEntity() throws XMLException {
250 525 vcaballero
                XMLEntity xml = new XMLEntity();
251 5923 fjp
                xml.putProperty("className", this.getClass().getName());
252 435 vcaballero
253 525 vcaballero
                if (this instanceof FLayers) {
254
                }
255
256 7463 azabala
//                xml.putProperty("active", active);
257
                xml.putProperty("active", status.active);
258 525 vcaballero
                xml.putProperty("name", name);
259 5923 fjp
                xml.putProperty("minScale", minScale);
260
                xml.putProperty("maxScale", maxScale);
261 5908 caballero
262 5923 fjp
                // TODO xml.addChild(parentLayer.getXMLEntity());
263 7463 azabala
//                xml.putProperty("visible", visible);
264
                xml.putProperty("visible", status.visible);
265 1417 fjp
                if (projection != null) {
266
                        xml.putProperty("proj", projection.getAbrev());
267
                }
268 1455 luisw
                xml.putProperty("transparency", transparency);
269 7463 azabala
//                xml.putProperty("isInTOC", isInTOC);
270
                xml.putProperty("isInTOC", status.inTOC);
271 7867 sbayarri
272
                // persist Properties hashTable
273
274 10627 caballero
275 7867 sbayarri
                Set keyset = properties.keySet();
276
277 10627 caballero
278
279 7867 sbayarri
                Iterator keyitr = keyset.iterator();
280 9072 jmvivo
                XMLEntity xmlProperties = new XMLEntity();
281
                xmlProperties.putProperty("childName","properties");
282 7867 sbayarri
            while (keyitr.hasNext()) {
283
              String propName = (String)keyitr.next();
284
              Object obj = properties.get(propName);
285
              if (obj instanceof IPersistance)
286
              {
287
                      IPersistance persistObj = (IPersistance)obj;
288
                  XMLEntity xmlPropObj = persistObj.getXMLEntity();
289
              // make sure the node contains the class name
290
                  if (!xmlPropObj.contains("className")) {
291
                          try {
292
                                  String propClassName = persistObj.getClassName();
293
                                  System.out.println("PROP CLASS NAME "+propClassName);
294
                                  xmlPropObj.putProperty("className", propClassName);
295
                          } catch (Exception e) {
296
                                  e.printStackTrace();
297
                          }
298
                  }
299
                  xmlPropObj.putProperty("layerPropertyName", propName);
300 10627 caballero
                  xmlProperties.addChild(xmlPropObj);
301 9072 jmvivo
              } else if (obj instanceof String) {
302
                  XMLEntity xmlPropObj = new XMLEntity();
303
                  xmlPropObj.putProperty("className", String.class.getName());
304
                  xmlPropObj.putProperty("value",(String)obj);
305
                  xmlPropObj.putProperty("layerPropertyName", propName);
306 10627 caballero
                  xmlProperties.addChild(xmlPropObj);
307 9072 jmvivo
308 7867 sbayarri
              }
309
            }
310 9072 jmvivo
            if (xmlProperties.getChildrenCount() > 0) {
311
                    xml.addChild(xmlProperties);
312
            }
313 10627 caballero
314 525 vcaballero
                return xml;
315
        }
316
317 2183 fernando
        /*
318
         * Inserta los valores de los atributos del XMLEntity al objeto.
319 7867 sbayarri
         *
320 2183 fernando
         * @param xml XMLEntity.
321 7867 sbayarri
         *
322 5923 fjp
         * @throws XMLException @throws DriverException @throws DriverIOException
323 7867 sbayarri
         *
324 5923 fjp
         * public void setXMLEntity03(XMLEntity xml) throws XMLException { active =
325
         * xml.getBooleanProperty("active"); name = xml.getStringProperty("name");
326
         * minScale=xml.getDoubleProperty("minScale");
327
         * maxScale=xml.getDoubleProperty("maxScale"); visible =
328
         * xml.getBooleanProperty("visible"); if (xml.contains("proj")) {
329
         * setProjection(ProjectionPool.get(xml.getStringProperty("proj"))); } if
330
         * (xml.contains("transparency")) transparency =
331
         * xml.getIntProperty("transparency"); }
332
         */
333 2183 fernando
334 525 vcaballero
        /**
335 1034 vcaballero
         * Inserta los valores de los atributos del XMLEntity al objeto.
336 7867 sbayarri
         *
337 5923 fjp
         * @param xml
338
         *            XMLEntity.
339 7867 sbayarri
         *
340 1034 vcaballero
         * @throws XMLException
341
         * @throws DriverException
342
         * @throws DriverIOException
343 525 vcaballero
         */
344 5923 fjp
        public void setXMLEntity(XMLEntity xml) throws XMLException {
345 7463 azabala
//                active = xml.getBooleanProperty("active");
346
                status.active = xml.getBooleanProperty("active");
347 525 vcaballero
                name = xml.getStringProperty("name");
348 5923 fjp
                minScale = xml.getDoubleProperty("minScale");
349
                maxScale = xml.getDoubleProperty("maxScale");
350 7463 azabala
//                visible = xml.getBooleanProperty("visible");
351
                status.visible = xml.getBooleanProperty("visible");
352 1417 fjp
                if (xml.contains("proj")) {
353 6164 luisw2
                        setProjection(CRSFactory.getCRS(xml.getStringProperty("proj")));
354 1417 fjp
                }
355 1455 luisw
                if (xml.contains("transparency"))
356
                        transparency = xml.getIntProperty("transparency");
357 5802 jaume
                if (xml.contains("isInTOC"))
358 7463 azabala
//                        isInTOC = xml.getBooleanProperty("isInTOC");
359
                        status.inTOC = xml.getBooleanProperty("isInTOC");
360 7867 sbayarri
361
        // recreate Properties hashTable
362 10627 caballero
363 9072 jmvivo
                int xmlPropertiesPos = xml.firstIndexOfChild("childName","properties");
364
                XMLEntity xmlProperties =null;
365
                if (xmlPropertiesPos > -1)
366
                        xmlProperties = xml.getChild(xmlPropertiesPos);
367 10627 caballero
368 9072 jmvivo
                if (xmlProperties != null) {
369 10627 caballero
370 9072 jmvivo
                        int numProps = xmlProperties.getChildrenCount();
371
                        Object obj;
372
                        String className;
373
                        Class classProp;
374
                        IPersistance objPersist;
375 7867 sbayarri
            for (int iProp=0; iProp<numProps; iProp++) {
376 9072 jmvivo
                    XMLEntity xmlProp = xmlProperties.getChild(iProp);
377 7867 sbayarri
                    try {
378 9072 jmvivo
                            className = xmlProp.getStringProperty("className");
379
                            if (className.equals(String.class.getName())) {
380
                                    obj = xmlProp.getStringProperty("value");
381
                            } else {
382
                                    classProp = Class.forName(className);
383
                                    obj = classProp.newInstance();
384
                                    objPersist = (IPersistance)obj;
385
                                    objPersist.setXMLEntity(xmlProp);
386 10627 caballero
387 9072 jmvivo
                            }
388
                            String propName = xmlProp.getStringProperty("layerPropertyName");
389
                            properties.put(propName, obj);
390 7867 sbayarri
                        } catch (Exception e) {
391 9072 jmvivo
                                //FIXME: OJO !!!!!
392 7867 sbayarri
                                continue;
393
                        }
394 9072 jmvivo
            }
395 7867 sbayarri
                       // remove Properties children to avoid breaking layers' XML reading logic
396 10627 caballero
                xml.removeChild(xmlPropertiesPos);
397 7867 sbayarri
                }
398 10627 caballero
399 525 vcaballero
        }
400 694 fernando
401
        /**
402 2183 fernando
         * Inserta los valores de los atributos del XMLEntity al objeto.
403 7867 sbayarri
         *
404 5923 fjp
         * @param xml
405
         *            XMLEntity.
406 7867 sbayarri
         *
407 2183 fernando
         * @throws XMLException
408
         * @throws DriverException
409
         * @throws DriverIOException
410
         */
411 5923 fjp
        public void setXMLEntity03(XMLEntity xml) throws XMLException {
412 7463 azabala
//                active = xml.getBooleanProperty("active");
413
                status.active = xml.getBooleanProperty("active");
414 2183 fernando
                name = xml.getStringProperty("name");
415 5923 fjp
                minScale = xml.getDoubleProperty("minScale");
416
                maxScale = xml.getDoubleProperty("maxScale");
417 7463 azabala
//                visible = xml.getBooleanProperty("visible");
418
                status.visible = xml.getBooleanProperty("visible");
419 2183 fernando
                if (xml.contains("proj")) {
420 6164 luisw2
                        setProjection(CRSFactory.getCRS(xml.getStringProperty("proj")));
421 2183 fernando
                }
422
                if (xml.contains("transparency"))
423
                        transparency = xml.getIntProperty("transparency");
424
        }
425
426
        /**
427 6881 cesar
         * @see com.iver.cit.gvsig.fmap.layers.FLayer#getMapContext()
428 694 fernando
         */
429 6881 cesar
        public MapContext getMapContext() {
430 884 fernando
                if (getParentLayer() != null) {
431 6881 cesar
                        return getParentLayer().getMapContext();
432 884 fernando
                } else {
433
                        return null;
434
                }
435 694 fernando
        }
436
437 884 fernando
        /**
438 1034 vcaballero
         * A?ade a la lista de listener un nuevo LayerListener.
439 7867 sbayarri
         *
440 5923 fjp
         * @param o
441
         *            LayerListener.
442 7867 sbayarri
         *
443 1034 vcaballero
         * @return boolean.
444 884 fernando
         */
445 727 fernando
        public boolean addLayerListener(LayerListener o) {
446 4370 caballero
                if (layerListeners.contains(o))
447
                        return false;
448 727 fernando
                return layerListeners.add(o);
449
        }
450 5908 caballero
        public LayerListener[] getLayerListeners() {
451
                return (LayerListener[])layerListeners.toArray(new LayerListener[0]);
452
        }
453 884 fernando
        /**
454 1034 vcaballero
         * Borra de la lista de listeners el que se pasa como par?metro.
455 7867 sbayarri
         *
456 5923 fjp
         * @param o
457
         *            LayerListener a borrar.
458 7867 sbayarri
         *
459 1034 vcaballero
         * @return True si ha sido correcto el borrado del Listener.
460 884 fernando
         */
461 727 fernando
        public boolean removeLayerListener(LayerListener o) {
462
                return layerListeners.remove(o);
463
        }
464 884 fernando
465
        /**
466 1034 vcaballero
         * Llamada al metodo nameChanged de los Listeners dados de alta.
467 7867 sbayarri
         *
468 5923 fjp
         * @param e
469
         *            LayerEvent.
470 884 fernando
         */
471
        private void callNameChanged(LayerEvent e) {
472 727 fernando
                for (Iterator iter = layerListeners.iterator(); iter.hasNext();) {
473
                        LayerListener listener = (LayerListener) iter.next();
474 884 fernando
475 727 fernando
                        listener.nameChanged(e);
476
                }
477
        }
478 884 fernando
479
        /**
480 1034 vcaballero
         * Llamada al m?todo visibilityChanged de los Listeners.
481 7867 sbayarri
         *
482 5923 fjp
         * @param e
483
         *            LayerEvent.
484 884 fernando
         */
485
        private void callVisibilityChanged(LayerEvent e) {
486 727 fernando
                for (Iterator iter = layerListeners.iterator(); iter.hasNext();) {
487
                        LayerListener listener = (LayerListener) iter.next();
488 884 fernando
489 727 fernando
                        listener.visibilityChanged(e);
490
                }
491
        }
492 884 fernando
493
        /**
494 1034 vcaballero
         * Llamada al m?todo activationChanged de los Listener.
495 7867 sbayarri
         *
496 5923 fjp
         * @param e
497
         *            LayerEvent.
498 884 fernando
         */
499
        private void callActivationChanged(LayerEvent e) {
500 727 fernando
                for (Iterator iter = layerListeners.iterator(); iter.hasNext();) {
501
                        LayerListener listener = (LayerListener) iter.next();
502 884 fernando
503 727 fernando
                        listener.activationChanged(e);
504
                }
505
        }
506 745 fjp
507 884 fernando
        /**
508 1034 vcaballero
         * Devuelve las capas virtuales.
509 7867 sbayarri
         *
510 1034 vcaballero
         * @return FLayers.
511 884 fernando
         */
512 745 fjp
        public FLayers getVirtualLayers() {
513
                return virtualLayers;
514
        }
515 884 fernando
516
        /**
517 1034 vcaballero
         * Inserta las capas virtuales.
518 7867 sbayarri
         *
519 5923 fjp
         * @param virtualLayers
520
         *            FLayers.
521 884 fernando
         */
522 745 fjp
        public void setVirtualLayers(FLayers virtualLayers) {
523
                this.virtualLayers = virtualLayers;
524
        }
525 884 fernando
526
        /**
527 4479 fjp
         * Inserta la Transformaci?n de coordenadas.
528 7867 sbayarri
         *
529 5923 fjp
         * @param ct
530
         *            Transformaci?n de coordenadas.
531 885 fjp
         */
532
        public void setCoordTrans(ICoordTrans ct) {
533
                this.ct = ct;
534
        }
535
536
        /**
537 4479 fjp
         * Devuelve las transformaci?n de coordenadas.
538 7867 sbayarri
         *
539 4479 fjp
         * @return ct.
540 885 fjp
         */
541
        public ICoordTrans getCoordTrans() {
542
                return ct;
543
        }
544 5908 caballero
545 4376 nacho
        /**
546 5923 fjp
         * M?todo que es llamado por Flayers para notificar a la capa que va a ser
547
         * a?adida. Esta previa notificaci?n es util para las capas que necesitan
548
         * hacer algo antes de ser a?adida. Por ejemplo, el raster necesita volver a
549
         * abrir el fichero que ha podido ser cerrado con anterioridad. Si no se
550
         * redefine este m?todo no se har? nada ya que este es vacio.
551 10627 caballero
         * @throws LoadLayerException
552 4376 nacho
         */
553 10627 caballero
        public void wakeUp() throws LoadLayerException {
554 5923 fjp
        }
555 5908 caballero
556 5923 fjp
        public double getMinScale() {
557
                return minScale;
558
        }
559 1176 fjp
560 5923 fjp
        /*
561
         * (non-Javadoc)
562 7867 sbayarri
         *
563 5923 fjp
         * @see com.iver.cit.gvsig.fmap.layers.FLayer#getMaxScale()
564
         */
565
        public double getMaxScale() {
566
                return maxScale;
567
        }
568 5908 caballero
569 5923 fjp
        public void setMinScale(double minScale) {
570
                this.minScale = minScale;
571
        }
572 5908 caballero
573 5923 fjp
        public void setMaxScale(double maxScale) {
574
                this.maxScale = maxScale;
575
        }
576 5908 caballero
577 5923 fjp
        public boolean isWithinScale(double scale) {
578 5908 caballero
579 5923 fjp
                boolean bVisible = true;
580
                if (getMinScale() != -1) {
581
                        if (scale < getMinScale())
582
                                bVisible = false;
583
                }
584
                if (getMaxScale() != -1) {
585
                        if (scale > getMaxScale())
586
                                bVisible = false;
587
                }
588 5908 caballero
589 5923 fjp
                return bVisible;
590
        }
591 3690 caballero
592 5923 fjp
        public Strategy getStrategy() {
593
                return privateStrategy;
594
        }
595
596
        public void setStrategy(Strategy s) {
597
                privateStrategy = s;
598
        }
599
600 10627 caballero
        public void setEditing(boolean b) throws StartEditionLayerException {
601 7463 azabala
//                isediting = b;
602
                status.editing = b;
603 6002 fjp
                setDirty(true);
604
                setCachingDrawnLayers(b);
605 3690 caballero
        }
606 5923 fjp
607 4147 fjp
        protected void callEditionChanged(LayerEvent e) {
608 4144 fjp
                for (Iterator iter = layerListeners.iterator(); iter.hasNext();) {
609
                        LayerListener listener = (LayerListener) iter.next();
610
611
                        listener.editionChanged(e);
612
                }
613
        }
614
615 5923 fjp
        public boolean isEditing() {
616 7463 azabala
//                return isediting;
617
                return status.editing;
618 3690 caballero
        }
619 5908 caballero
620 5923 fjp
        public ImageIcon getTocImageIcon() {
621
                return null;
622
        }
623 5908 caballero
624 5923 fjp
        public boolean isInTOC() {
625 7463 azabala
//                return isInTOC;
626
                return status.inTOC;
627 5923 fjp
        }
628
629
        /* (non-Javadoc)
630
         * @see com.iver.cit.gvsig.fmap.layers.FLayer#isCachingDrawnLayers()
631
         */
632
        public boolean isCachingDrawnLayers() {
633 7463 azabala
//                return bCacheDrawnLayers;
634
                return status.cacheDrawnLayers;
635 5923 fjp
        }
636
637
        /* (non-Javadoc)
638
         * @see com.iver.cit.gvsig.fmap.layers.FLayer#setCachingDrawnLayers(boolean)
639
         */
640
        public void setCachingDrawnLayers(boolean bCacheDrawnLayers) {
641 7463 azabala
//                this.bCacheDrawnLayers = bCacheDrawnLayers;
642
                status.cacheDrawnLayers = bCacheDrawnLayers;
643
                if (status.cacheDrawnLayers == false)
644 5997 fjp
                        this.cacheImageDrawnLayers = null;
645 5923 fjp
        }
646
647
        public BufferedImage getCacheImageDrawnLayers() {
648
                return cacheImageDrawnLayers;
649
        }
650
651
        public void setCacheImageDrawnLayers(BufferedImage cacheImageDrawnLayers) {
652
                this.cacheImageDrawnLayers = cacheImageDrawnLayers;
653
        }
654
655
        public boolean isDirty() {
656 7463 azabala
                return status.dirty;
657 5923 fjp
        }
658
659
        public void setDirty(boolean dirty) {
660 7463 azabala
                status.dirty = dirty;
661 5923 fjp
        }
662 7867 sbayarri
663 6543 jmvivo
        public boolean isAvailable() {
664 7463 azabala
                return status.available;
665 6400 jmvivo
        }
666 7867 sbayarri
667 6532 jmvivo
        public void setAvailable(boolean available) {
668 7463 azabala
                status.available = available;
669 6400 jmvivo
        }
670 7867 sbayarri
671 10627 caballero
        public void reload() throws ReloadLayerException {
672 6532 jmvivo
                this.setAvailable(true);
673
        }
674 7867 sbayarri
675 7463 azabala
        /**
676
         * Returns the status of the layer
677
         */
678
        public FLayerStatus getFLayerStatus(){
679
                return status;
680
        }
681
        /**
682
         * Sets the status of the layer
683
         * @param status
684
         */
685
        public void setFLayerStatus(FLayerStatus status){
686
                this.status = status;
687
        }
688 7867 sbayarri
689 7463 azabala
        /*
690
         * This stuff is to save error's info that causes
691
         * unavailable status.
692
         * */
693 7867 sbayarri
694 7463 azabala
        public boolean isOk(){
695
                return status.isOk();
696
        }
697 7867 sbayarri
698 7463 azabala
        public int getNumErrors(){
699
                return status.getNumErrors();
700
        }
701 7867 sbayarri
702 10627 caballero
        public BaseException getError(int i){
703 7463 azabala
                return status.getError(i);
704
        }
705 7867 sbayarri
706 7463 azabala
        public List getErrors(){
707
                return status.getErrors();
708
        }
709 7867 sbayarri
710 10627 caballero
        public void addError(BaseException exception){
711
                status.addLayerError(exception);
712 7463 azabala
        }
713 7867 sbayarri
714 6532 jmvivo
        public boolean visibleRequired() {
715 7463 azabala
                return status.visible;
716 6532 jmvivo
        }
717 7867 sbayarri
718 6532 jmvivo
        public String getInfoString() {
719
                return null;
720
        }
721 5923 fjp
722 6856 fjp
        public boolean isWritable() {
723 7463 azabala
                return status.writable;
724 6856 fjp
        }
725 10627 caballero
726 9923 fjp
        /* (non-Javadoc)
727
         * @see com.iver.cit.gvsig.fmap.layers.FLayer#cloneLayer()
728
         */
729
        public FLayer cloneLayer() throws Exception {
730
                return this;
731
        }
732 5923 fjp
733 10932 jmvivo
        /* By default this operation is not suported
734
         *
735
         * @see com.iver.cit.gvsig.fmap.layers.FLayer#newComposedLayer()
736
         */
737
        public ComposedLayer newComposedLayer() {
738
                return null;
739
        }
740 6856 fjp
741 10932 jmvivo
742 214 fernando
}