Package org.locationtech.udig.project.internal

Examples of org.locationtech.udig.project.internal.Layer


      private void replaceLayer(IGeoResource resource,
          Collection<IGeoResource> exported) {
        List<Layer> layers = MapSaveStrategy.this.editor.getMap()
            .getLayersInternal();
        Layer found;
        do {
          found = null;
          for (Layer layer : layers) {
            if (URLUtils.urlEquals(layer.getID(), resource
                .getIdentifier(), false)) {
              found = layer;
              break;
            }
          }

          if (found != null) {
            layers.addAll(layers.indexOf(found), toLayers(found,
                exported));
            layers.remove(found);
          }
        } while (found != null);

      }

      private Collection<Layer> toLayers(Layer found,
          Collection<IGeoResource> exported) {
        LayerFactory layerFactory = MapSaveStrategy.this.editor
            .getMap().getLayerFactory();
        Collection<Layer> newLayers = new ArrayList<Layer>();

        for (IGeoResource exportedResource : exported) {
          try {
            Layer createLayer = layerFactory
                .createLayer(exportedResource);
            StyleBlackboard clone = (StyleBlackboard) found
                .getStyleBlackboard().clone();
            createLayer.setStyleBlackboard(clone);
            newLayers.add(createLayer);
          } catch (IOException e) {
            throw (RuntimeException) new RuntimeException()
                .initCause(e);
          }
View Full Code Here


    }

    public void rollback( IProgressMonitor monitor ) throws Exception {       
        String name=Messages.SetLayerCRSCommand_undoTask;
        monitor.beginTask(name, 1);
        Layer layer=(Layer) provider.get();
        layer.setCRS(old);
        if( oldBounds!=null ){
            ViewportModel viewportModel = layer.getMapInternal().getViewportModelInternal();
            viewportModel.setBounds(oldBounds);
        }
        monitor.done();
    }
View Full Code Here

            if (item instanceof Folder) {
                final Folder folder = (Folder) item;
                for (ILegendItem folderItem : folder.getItems()) {
                    if (folderItem instanceof LayerLegendItem) {
                        final LayerLegendItem layerItem = (LayerLegendItem) folderItem;
                        final Layer layer = layerItem.getLayer();
                        if (isGridLayer(layer)) {
                            layers.add(layer);
                        }
                    }
                }
            } else if (item instanceof LayerLegendItem) {
                final LayerLegendItem layerItem = (LayerLegendItem) item;
                final Layer layer = layerItem.getLayer();
                if (isGridLayer(layer)) {
                    layers.add(layer);
                }
            }
        }
View Full Code Here

            }
   
            Map<Layer, RenderContext> configuration = new HashMap<Layer, RenderContext>();
           
            LAYERS: for( int i = 0; i < layers.size(); i++ ) {
                Layer layer = layers.get(i);
   
                if (configured.contains(layer)) {
                    continue LAYERS;
                }
   
View Full Code Here

        configured.add(renderContext.getLayerInternal());
        configuration.put(renderContext.getLayerInternal(), renderContext);
       
        CONTEXT: for( int j = i+1; j < layers.size(); j++ ) {
            try {
                Layer layer = layers.get(j);
                if (!configured.contains(layer) && metrics.canAddLayer(layer)) {
                    addChildContextToComposite(configured, configuration, renderContext, layer);
                } else {
                    break CONTEXT;
                }
View Full Code Here

    @SuppressWarnings("unchecked")
    private void handleMapCompositionEvent( Notification event ) {
        switch( event.getEventType() ) {
        case Notification.ADD: {
            Layer layer = (Layer) event.getNewValue();
            List<Layer> layers=new ArrayList<Layer>();
            layers.add(layer);
            if (layer.hasResource(FeatureSource.class))
                 layers.add(new SelectionLayer(layer));
            synchronized (this.layers){
                this.layers.addAll(layers);
            }
            break;
        }
        case Notification.ADD_MANY: {
            List<Layer> layers = new ArrayList<Layer>();
            for( Layer layer : (Collection< ? extends Layer>) event.getNewValue() ) {
                layers.add(layer);
                if (layer.hasResource(FeatureSource.class)
                        && findSelectionLayer(layer) == null)
                    layers.add(new SelectionLayer(layer));
            }
            synchronized (this.layers){
                this.layers.addAll(layers);
            }
            break;
        }
       
        /*
         * The collection <code>layers</code> is a sorted TreeMap of <? extends Layer> objects:
         * Layer.compareTo() is used to sort and identify items for equality. Comparing is performed
         * by z-order. But this collection (<code>layers</code>) contains also
         * additional SelectionLayer objects and their z-order is artificial. This leads to
         * errors during removing by TreeMap.remove(..) methods.
         * The <code>layers</code> collection is re-created safely to fix deleting
         * layers from map with synchronization of this cache list of layers and selection layers with
         * map's list.
         */
       
        case Notification.REMOVE: {

            synchronized (layers) {
             
              Layer removedLayer = (Layer) event.getOldValue();

                for ( Iterator iter = layers.iterator(); iter.hasNext(); ) {
                    Layer l = (Layer) iter.next();
                    if(removedLayer==l)
                        iter.remove();
                    else if( l instanceof SelectionLayer ){
                        SelectionLayer sl=(SelectionLayer) l;
                        if( removedLayer==sl.getWrappedLayer() )
                            iter.remove();
                    }
                }
               
            }
            break;
        }
        case Notification.REMOVE_MANY: {
         
            synchronized (layers) {
              Collection<Layer> removedLayers = (Collection<Layer>) event.getOldValue();

                for ( Iterator iter = layers.iterator(); iter.hasNext(); ) {
                    Layer l = (Layer) iter.next();
                    if( removedLayers.contains(l))
                        iter.remove();
                    else if( l instanceof SelectionLayer ){
                        SelectionLayer sl=(SelectionLayer) l;
                        if( removedLayers.contains(sl.getWrappedLayer()) )
                            iter.remove();
                    }
              }
            }
            break;
        }
        case Notification.MOVE: {
            // this should be a layer accordint to the reverse engineered rules...
            // I like type safety better. or at least documentation :(
            Layer newV=(Layer) event.getNewValue();
           
            // remove then add the layers to fix ordering of layers.
            synchronized (layers) {
                SelectionLayer selectionLayer=null;
                for( Iterator iter = layers.iterator(); iter.hasNext(); ) {
                    Layer l = (Layer) iter.next();
                    if(newV==l)
                        iter.remove();
                    else if( l instanceof SelectionLayer ){
                        SelectionLayer sl=(SelectionLayer) l;
                        if( newV==sl.getWrappedLayer() ){
                            iter.remove();
                            selectionLayer=sl;
                        }
                    }
                }
                layers.add(newV);
                if( selectionLayer!=null ){
                    layers.add(selectionLayer);
                }
            }
           
            break;
        }case Notification.SET:{
            Layer oldV=(Layer) event.getOldValue();
           
            Layer newV=(Layer) event.getNewValue();
            SelectionLayer selectionLayer=null;
            if( newV.hasResource(FeatureSource.class) )
                selectionLayer=new SelectionLayer(newV);

            // remove then add the layers to fix ordering of layers.
            synchronized (layers) {
                for( Iterator iter = layers.iterator(); iter.hasNext(); ) {
                    Layer l = (Layer) iter.next();
                    if(oldV==l)
                        iter.remove();
                    else if( l instanceof SelectionLayer ){
                        SelectionLayer sl=(SelectionLayer) l;
                        if( oldV==sl.getWrappedLayer() ){
View Full Code Here

     * @see org.eclipse.jface.viewers.ILightweightLabelDecorator#decorate(java.lang.Object,
     *      org.eclipse.jface.viewers.IDecoration)
     */
    @SuppressWarnings("unchecked")
    public synchronized void decorate( Object element, IDecoration decoration ) {
        Layer layer = (Layer) element; // should be safe, extention point does the instanceof
                      
        // check
        ImageDescriptor ovr = statusIcon(layer);
        if (ovr != null)
            decoration.addOverlay(ovr, IDecoration.BOTTOM_LEFT);

        // decoration.addOverlay( ProjectUIPlugin.getDefault().getImageDescriptor( ISharedImages.SELECT_UDR ),
        // IDecoration.UNDERLAY );

        if (!layer.eAdapters().contains(adapterImpl))
            layer.eAdapters().add(adapterImpl);
    }
View Full Code Here

        }
        labelFont.setFontList(tempFD);
       
        // Need to get all available labels
        //check if this layer has a feature
        Layer currLayer = getLayer();
        List<AttributeDescriptor> attributeList = null;
        AttributeDescriptor defaultGeom = null;
        if (currLayer.hasResource(FeatureSource.class)) {
            SimpleFeatureType ft = currLayer.getSchema();
            attributeList = ft.getAttributeDescriptors();
            defaultGeom=ft.getGeometryDescriptor();
        }
        labelCombo.removeAll();
        if (attributeList != null) {
View Full Code Here

     * Retrieves the style object from the style blackboard.
     *
     * @return Style
     */
    protected Style getStyle(){
        Layer layer = getLayer();
        assert( canStyle( layer ));
        // TODO: Ensure framework does not show me when I can't handle this
        // layer
        // TODO: Stop commenting in the first person, as though I am the
        // class.  It's creepy.
View Full Code Here

                if (composite.isDisposed()) {
                    getSite().getPage().removePostSelectionListener(layerSelectionListener);
                    return; // component.isVisible cannot be called on a disposed component
                } else if (!composite.isVisible())
                    return;
                Layer layer = layers.get(0);
                // Second condition excludes unnecessary UI call
                if (layer.getMap() == getMap()
                        && getMap().getEditManager().getSelectedLayer() != layer) {
                    SelectLayerCommand selectLayerCommand = new SelectLayerCommand(layer);
                    selectLayerCommand.setMap(getMap());
                    try {
                        selectLayerCommand.run(ProgressManager.instance().get());
                    } catch (Exception e) {
                        throw (RuntimeException) new RuntimeException().initCause(e);
                    }
                    getMap().sendCommandSync(new UndoRedoCommand(selectLayerCommand));
                }
            }

        });
        getSite().getPage().addPostSelectionListener(layerSelectionListener);

        for( Layer layer : getMap().getLayersInternal() ) {
            layer.addListener(layerListener);
        }

        dropTarget = UDIGDragDropUtilities.addDropSupport(viewer.getViewport().getControl(), this);
        this.replaceableSelectionProvider = new ReplaceableSelectionProvider();
        getSite().setSelectionProvider(replaceableSelectionProvider);
View Full Code Here

TOP

Related Classes of org.locationtech.udig.project.internal.Layer

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.