Ejemplo n.º 1
0
  /**
   * 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;
      }
    }
  }
Ejemplo n.º 2
0
 /*
  * (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));
 }
Ejemplo n.º 3
0
    @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();
    }
Ejemplo n.º 4
0
  /**
   * 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);
    }
  }
Ejemplo n.º 5
0
 @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);
         }
       }
     }
   }
 }
Ejemplo n.º 6
0
 /*
  * (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));
 }