/** * Replace a layer identified by its name, by another. * * @param layerName the name of the layer to be replaced * @param layer the new layer */ public void replaceLayer(String layerName, FLayer layer) throws LoadLayerException { FLayer lyr; FLayer parent; for (int i = 0; i < layers.size(); i++) { lyr = ((FLayer) layers.get(i)); if (lyr.getName().compareToIgnoreCase(layerName) == 0) { parent = lyr.getParentLayer(); removeLayer(i); if (parent != null) { // Notificamos a la capa que va a ser añadida if (layer instanceof FLyrDefault) { ((FLyrDefault) layer).wakeUp(); } } if (layer instanceof FLayers) { FLayers layers = (FLayers) layer; fmap.addAsCollectionListener(layers); } callLayerAdding(LayerCollectionEvent.createLayerAddingEvent(layer)); layers.add(i, layer); layer.setParentLayer(this); callLayerAdded(LayerCollectionEvent.createLayerAddedEvent(layer)); break; } } }
/* * (non-Javadoc) * @see com.iver.cit.gvsig.fmap.layers.FLyrDefault#setCoordTrans(org.cresques.cts.ICoordTrans) */ public void setCoordTrans(ICoordTrans ct) { super.setCoordTrans(ct); for (Iterator iter = layers.iterator(); iter.hasNext(); ) { FLayer layer = (FLayer) iter.next(); layer.setCoordTrans(ct); } }
/** * Inserts layers and properties to this collection of layers. * * <p>This root node has the same properties that return <code>FlyrDefault#getXMLEntity()</code> * adding: * * <ul> * <li><i>numLayers</i> : number of first-level layers of this collection * <li><i>LayerNames</i> : an array list with the name of the first-level layers of this * collection <code>FLayer.getXMLEntity()</code> * </ul> * * @see FLyrDefault#setXMLEntity() * @see FLyrDefault#getXMLEntity() * @see CopyOfFLayers#addLayerFromXML(XMLEntity, String) * @param xml an <code>XMLEntity</code> with the information * @throws XMLException if there is an error setting the object. */ public void setXMLEntity(XMLEntity xml) throws XMLException { super.setXMLEntity(xml); // LoadLayerException loadLayerException=new LoadLayerException(); String[] s = xml.getStringArrayProperty("LayerNames"); // try { fmap.clearErrors(); int numLayers = xml.getIntProperty("numLayers"); Iterator iter = xml.findChildren("tagName", "layer"); XMLEntity xmlLayer; while (iter.hasNext()) { xmlLayer = (XMLEntity) iter.next(); try { this.addLayerFromXML(xmlLayer, null); } catch (LoadLayerException e) { throw new XMLLayerException(getName(), e); } } if (numLayers != this.layers.size()) { logger.warn(this.getName() + ": layer count no match"); } }
/** * Adds a layer in an specified position in this node. * * @param layer a layer */ public void addLayer(int pos, FLayer layer) { try { // Notificamos a la capa que va a ser añadida if (layer instanceof FLyrDefault) { ((FLyrDefault) layer).wakeUp(); } if (layer instanceof FLayers) { FLayers layers = (FLayers) layer; fmap.addAsCollectionListener(layers); } callLayerAdding(LayerCollectionEvent.createLayerAddingEvent(layer)); doAddLayer(pos, layer); callLayerAdded(LayerCollectionEvent.createLayerAddedEvent(layer)); } catch (CancelationException e) { logger.warn(e.getMessage()); } catch (LoadLayerException e) { layer.setAvailable(false); layer.addError(e); } }
/* * (non-Javadoc) * @see com.iver.cit.gvsig.fmap.layers.FLyrDefault#setActive(boolean) */ public void setActive(boolean b) { super.setActive(b); for (int i = 0; i < layers.size(); i++) { ((FLayer) layers.get(i)).setActive(b); } }