/** * 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.layerOperations.LayerCollection#removeLayer(int) */ public void removeLayer(int idLayer) { FLayer lyr = (FLayer) layers.get(idLayer); callLayerRemoving(LayerCollectionEvent.createLayerRemovingEvent(lyr)); layers.remove(idLayer); this.updateDrawVersion(); callLayerRemoved(LayerCollectionEvent.createLayerRemovedEvent(lyr)); }
@Override public void layerRemoved(LayerCollectionEvent e) { HashSet<ILayer> newSelection = new HashSet<ILayer>(); newSelection.addAll(Arrays.asList(selectedLayers)); ILayer[] affected = e.getAffected(); for (final ILayer layer : affected) { // Check active if (activeLayer == layer) { setActiveLayer(null); } // Check selection newSelection.remove(layer); layer.removeLayerListenerRecursively(openerListener); if (isOpen()) { try { layer.close(); } catch (LayerException e1) { LOGGER.warn(I18N.tr("Cannot close layer {0}", layer.getName()), e1); } } } setSelectedLayers(newSelection.toArray(new ILayer[newSelection.size()])); // checkIfHasToResetSRID(); }
/** * 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); } }
@Override public void layerAdded(LayerCollectionEvent e) { if (isOpen()) { for (final ILayer layer : e.getAffected()) { try { layer.open(); layer.addLayerListenerRecursively(openerListener); // checking & possibly setting SRID // checkSRID(layer); } catch (LayerException ex) { LOGGER.error(I18N.tr("Cannot open layer : {0} ", layer.getName()), ex); try { layer.getParent().remove(layer); } catch (LayerException e1) { LOGGER.error(I18N.tr("Cannot remove the layer {0}", layer.getName()), ex); } } } } }
/* * (non-Javadoc) * @see com.iver.cit.gvsig.fmap.layers.layerOperations.LayerCollection#removeLayer(com.iver.cit.gvsig.fmap.layers.FLayer) */ public void removeLayer(FLayer lyr) throws CancelationException { callLayerRemoving(LayerCollectionEvent.createLayerRemovingEvent(lyr)); doRemoveLayer(lyr); callLayerRemoved(LayerCollectionEvent.createLayerRemovedEvent(lyr)); }