Examples of SelectionLayer


Examples of org.locationtech.udig.project.internal.render.SelectionLayer

        RendererCreator creator=map.getRenderManagerInternal().getRendererCreator();
       
        SortedSet<Layer> layers = creator.getLayers();
        layers.clear();
        layers.addAll(map.getLayersInternal());
        layers.add(new SelectionLayer(map.getLayersInternal().get(0)));
        layers.add(new SelectionLayer(map.getLayersInternal().get(1)));
       
        creator.reset();
       
        renderer.getContext().addContexts(creator.getConfiguration());
       
        Collection<RenderExecutor> executors = renderer.getRenderExecutors();
       
        Iterator<RenderExecutor> iter = executors.iterator();

        RenderExecutor executor = iter.next();
        assertEquals( map.getLayersInternal().get(0),executor.getContext().getLayer() );
        executor = iter.next();
        assertEquals( map.getLayersInternal().get(1),executor.getContext().getLayer() );
        executor = iter.next();
        SelectionLayer sl = (SelectionLayer) executor.getContext().getLayer();
        assertEquals( map.getLayersInternal().get(0),sl.getWrappedLayer() );
        executor = iter.next();
        sl = (SelectionLayer) executor.getContext().getLayer();
        assertEquals( map.getLayersInternal().get(1),sl.getWrappedLayer() );
       
    }
View Full Code Here

Examples of org.locationtech.udig.project.internal.render.SelectionLayer

        RendererCreator creator=map.getRenderManagerInternal().getRendererCreator();
       
        SortedSet<Layer> layers = creator.getLayers();
        layers.clear();
        layers.addAll(map.getLayersInternal());
        layers.add(new SelectionLayer(map.getLayersInternal().get(0)));
        layers.add(new SelectionLayer(map.getLayersInternal().get(1)));
       
        creator.reset();
       
        CompositeRenderContextImpl comp=new CompositeRenderContextImpl();
        comp.addContexts(creator.getConfiguration());
       
        Iterator iter = comp.getContexts().iterator()
       
        RenderContext executor = (RenderContext) iter.next();
        assertEquals( map.getLayersInternal().get(0),executor.getLayer() );
        executor = (RenderContext) iter.next();
        assertEquals( map.getLayersInternal().get(1),executor.getLayer() );
        executor = (RenderContext) iter.next();
        SelectionLayer sl = (SelectionLayer) executor.getLayer();
        assertEquals( map.getLayersInternal().get(0),sl.getWrappedLayer() );
        executor = (RenderContext) iter.next();
        sl = (SelectionLayer) executor.getLayer();
        assertEquals( map.getLayersInternal().get(1),sl.getWrappedLayer() );
    }
View Full Code Here

Examples of org.locationtech.udig.project.internal.render.SelectionLayer

            //if selectable layer also add a selection layer
            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: {
            //multiple layer has been added need to add to layers list
            //if selectable layer also add a selection layer
            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: {
            //remove layer from layers list (both layer and selection layer)
            synchronized (layers) {
                Layer removedLayer = (Layer) event.getOldValue();
                for ( Iterator iter = layers.iterator(); iter.hasNext(); ) {
                    Layer l = (Layer) iter.next();
                    if(removedLayer==l){
                        //remove layer
                        iter.remove();
                    }
                    else if( l instanceof SelectionLayer ){
                        SelectionLayer sl=(SelectionLayer) l;
                        if( removedLayer==sl.getWrappedLayer() ){
                            iter.remove();
                        }
                    }
                }
            }
            break;
        }
        case Notification.REMOVE_MANY: {
          //remove layers from layers list (both layer and selection layer)
            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: {
            // moving a layer (getNewValue is expected to return a layer)
            // I like type safety better. or at least documentation :(
            Layer newV=(Layer) event.getNewValue();
           
            // remove then add the layers to fix ordering of layers (layers are stored in a sorted set that
            //is sorted by zorder
            synchronized (layers) {
                //remove layer and selection layer
                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;
                        }
                    }
                }
                //add layers and selection layer
                layers.add(newV);
                if( selectionLayer!=null ){
                    layers.add(selectionLayer);
                }
            }
           
            break;
        }case Notification.SET:{
            //what is a SET event?
            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() ){
                            iter.remove();
                        }
                    }
                }
                layers.add(newV);
View Full Code Here

Examples of org.locationtech.udig.project.internal.render.SelectionLayer

        if (getMapDisplay() == null || getMapDisplay().getWidth() < 1 || getMapDisplay().getHeight() < 1) {
            return; // we are not set up to renderer yet!
        }
       
        final SelectionLayer selectionLayer = getRendererCreator().findSelectionLayer(layer);
       
        //get only the tile in the bounds in the area of interest
        ReferencedEnvelope areaOfInterest = null;
        if (bounds == null){
            areaOfInterest = getMap().getViewportModel().getBounds();
View Full Code Here

Examples of org.locationtech.udig.project.internal.render.SelectionLayer

        if (getMapDisplay() == null || getMapDisplay().getWidth() < 1 || getMapDisplay().getHeight() < 1) {
            return; // we are not set up to renderer yet!
        }
       
        //find selection layer
        final SelectionLayer selectionLayer = getRendererCreator().findSelectionLayer(layer);
        if (selectionLayer == null) return;
               
        //redraw the ones we care about for now
        //determine area of interest
        ReferencedEnvelope areaOfInterest = null;
View Full Code Here

Examples of tiled.mapeditor.selection.SelectionLayer

        } else if (command.equals(FIND_ALL_BUTTON)) {
            if (sl != null) {
                map.removeLayerSpecial(sl);
            }

            sl = new SelectionLayer(map.getWidth(), map.getHeight());
            Rectangle bounds = new Rectangle();
            final Iterator itr = map.getLayers();
            while (itr.hasNext()) {
                MapLayer layer = (MapLayer) itr.next();
                if (layer instanceof TileLayer) {
View Full Code Here

Examples of tiled.mapeditor.selection.SelectionLayer

        if (sl != null) {
            map.removeLayerSpecial(sl);
            map.touch();
        }

        sl = new SelectionLayer(map.getWidth(), map.getHeight());
        Rectangle bounds = new Rectangle();

        int startx = currentMatch == null ? 0 : currentMatch.x;
        int starty = currentMatch == null ? 0 : currentMatch.y;
View Full Code Here

Examples of tiled.mapeditor.selection.SelectionLayer

        undoHandler = new UndoHandler(this);
        undoSupport = new UndoableEditSupport();
        undoSupport.addUndoableEditListener(undoHandler);

        cursorHighlight = new SelectionLayer(1, 1);
        cursorHighlight.select(0, 0);
        cursorHighlight.setVisible(prefs.getBoolean("cursorhighlight", true));

        mapEventAdapter = new MapEventAdapter();
View Full Code Here

Examples of tiled.mapeditor.selection.SelectionLayer

                    setCurrentTile(newTile);
                } else if (currentPointerState == PS_PAINT) {
                    // In case we are dragging to create a custom brush, let
                    // the user know where we are creating it from
                    if (marqueeSelection == null) {
                        marqueeSelection = new SelectionLayer(
                                currentMap.getWidth(), currentMap.getHeight());
                        currentMap.addLayerSpecial(marqueeSelection);
                    }

                    Point limp = mouseInitialPressLocation;
                    Rectangle oldArea =
                        marqueeSelection.getSelectedAreaBounds();
                    int minx = Math.min(limp.x, tile.x);
                    int miny = Math.min(limp.y, tile.y);

                    Rectangle selRect = new Rectangle(
                            minx, miny,
                            (Math.max(limp.x, tile.x) - minx)+1,
                            (Math.max(limp.y, tile.y) - miny)+1);

                    marqueeSelection.selectRegion(selRect);
                    if (oldArea != null) {
                        oldArea.add(marqueeSelection.getSelectedAreaBounds());
                        mapView.repaintRegion(oldArea);
                    }
                }
            } else if (layer instanceof UnitGroup && !bMouseIsDragging) {
                // Get the unit on this location and display the relative options dialog
                UnitGroup group = (UnitGroup) layer;
                Point pos = mapView.screenToPixelCoords(
                        event.getX(), event.getY());
                MapUnit unit = group.getUnitAt(pos.x, pos.y);
                if (unit != null) {
                    UnitDialog od = new UnitDialog(appFrame, unit, undoSupport);
                    od.getProps();
                    //TODO change to only updating the unit if that isn't done automatically yet
                    mapChanged(new MapChangedEvent(currentMap));
                }
            } else if (layer instanceof ZoneGroup && !bMouseIsDragging) {
                // Get the zone on this location and display the relative options dialog
                ZoneGroup group = (ZoneGroup) layer;
                Point pos = mapView.screenToPixelCoords(
                        event.getX(), event.getY());
                MapZone zone = group.getZoneAt(pos.x, pos.y);
                if (zone != null) {
                    ZoneDialog od = new ZoneDialog(appFrame, zone, undoSupport);
                    od.updateInfo();
                    od.setVisible(true);
                    //TODO change to only updating the zone, if that isn't done automatically yet
                    mapChanged(new MapChangedEvent(currentMap));
                }
            }
        } else if (mouseButton == MouseEvent.BUTTON2 ||
                (mouseButton == MouseEvent.BUTTON1 &&
                 (event.getModifiersEx() & MouseEvent.ALT_DOWN_MASK ) != 0)) {
            // Scroll with middle mouse button
            int dx = event.getX() - mouseInitialScreenLocation.x;
            int dy = event.getY() - mouseInitialScreenLocation.y;
            JViewport mapViewPort = mapScrollPane.getViewport();
            Point currentPosition = mapViewPort.getViewPosition();
            mouseInitialScreenLocation = new Point(
                    event.getX() - dx,
                    event.getY() - dy);

            Point newPosition = new Point(
                    currentPosition.x - dx,
                    currentPosition.y - dy);

            // Take into account map boundaries in order to prevent
            // scrolling past them
            int maxX = mapView.getWidth() - mapViewPort.getWidth();
            int maxY = mapView.getHeight() - mapViewPort.getHeight();
            newPosition.x = Math.min(maxX, Math.max(0, newPosition.x));
            newPosition.y = Math.min(maxY, Math.max(0, newPosition.y));

            mapViewPort.setViewPosition(newPosition);
        } else if (mouseButton == MouseEvent.BUTTON1) {
            switch (currentPointerState) {
                case PS_PAINT:
                    paintEdit.setPresentationName(TOOL_PAINT);
                    if (layer instanceof TileLayer) {
                        try {
                            mapView.repaintRegion(
                                    currentBrush.doPaint(tile.x, tile.y));
                          if(currentTile instanceof AnimatedTile) {
                            animatedTiles.add(new AnimTile(tile.x, tile.y, (AnimatedTile) currentTile, layer));
                          }
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
                    break;
                case PS_ERASE:
                    paintEdit.setPresentationName(TOOL_ERASE);
                    if (layer instanceof TileLayer) {
                      if(((TileLayer) layer).getTileAt(tile.x, tile.y) instanceof AnimatedTile) {
                        removeAnimTileAt(tile.x, tile.y);
                      }
                        ((TileLayer) layer).setTileAt(tile.x, tile.y, null);
                        mapView.repaintRegion(new Rectangle(
                                tile.x, tile.y, 1, 1));
                    }
                    break;
                case PS_POUR:
                  //TODO add animated tiles here, is a real bitch due to undo/redo
                    paintEdit = null;
                    if (layer instanceof TileLayer) {
                      if(!(currentTile instanceof AnimatedTile)) {
                          TileLayer tileLayer = (TileLayer) layer;
                          Tile oldTile = tileLayer.getTileAt(tile.x, tile.y);
                          pour(tileLayer, tile.x, tile.y, currentTile, oldTile);
                          mapView.repaint();
                      }
                    }
                    break;
                case PS_EYED:
                    if (layer instanceof TileLayer) {
                        TileLayer tileLayer = (TileLayer) layer;
                        Tile newTile = tileLayer.getTileAt(tile.x, tile.y);
                        setCurrentTile(newTile);
                    }
                    break;
                case PS_MOVE:
                    if (layer instanceof TileLayer) {
                        Point translation = new Point(
                                tile.x - mousePressLocation.x,
                                tile.y - mousePressLocation.y);

                        translateAnimTiles(translation, layer);
                        layer.translate(translation.x, translation.y);
                        moveDist.translate(translation.x, translation.y);
                        mapView.repaint();
                    }
                    break;
                case PS_MARQUEE:
                    if (!(layer instanceof TileLayer)) {
                        break;
                    }
                    if (marqueeSelection != null) {
                        Point limp = mouseInitialPressLocation;
                        Rectangle oldArea =
                            marqueeSelection.getSelectedAreaBounds();
                        int minx = Math.min(limp.x, tile.x);
                        int miny = Math.min(limp.y, tile.y);

                        Rectangle selRect = new Rectangle(
                                minx, miny,
                                (Math.max(limp.x, tile.x) - minx)+1,
                                (Math.max(limp.y, tile.y) - miny)+1);

                        if (event.isShiftDown()) {
                            marqueeSelection.add(new Area(selRect));
                        } else if (event.isControlDown()) {
                            marqueeSelection.subtract(new Area(selRect));
                        } else {
                            marqueeSelection.selectRegion(selRect);
                        }
                        if (oldArea != null) {
                            oldArea.add(
                                    marqueeSelection.getSelectedAreaBounds());
                            mapView.repaintRegion(oldArea);
                        }
                    }
                    break;
                case PS_ADDUNIT:
                    if (layer instanceof  UnitGroup) {
                        if (marqueeSelection == null) {
                            marqueeSelection = new SelectionLayer(
                                    currentMap.getWidth(),
                                    currentMap.getHeight());
                            currentMap.addLayerSpecial(marqueeSelection);
                        }

                        Point limp = mouseInitialPressLocation;
                        Rectangle oldArea =
                            marqueeSelection.getSelectedAreaBounds();
                        int minx = Math.min(limp.x, tile.x);
                        int miny = Math.min(limp.y, tile.y);

                        Rectangle selRect = new Rectangle(
                                minx, miny,
                                (Math.max(limp.x, tile.x) - minx) + 1,
                                (Math.max(limp.y, tile.y) - miny) + 1);

                        marqueeSelection.selectRegion(selRect);
                        if (oldArea != null) {
                            oldArea.add(marqueeSelection.getSelectedAreaBounds());
                            mapView.repaintRegion(oldArea);
                        }
                    }
                    break;
                case PS_REMOVEUNIT:
                  if (layer instanceof UnitGroup) {
                        UnitGroup group = (UnitGroup) layer;
                        Point pos = mapView.screenToPixelCoords(
                                event.getX(), event.getY());
                        MapUnit unit = group.getUnitAt(pos.x, pos.y);
                        if (unit != null) {
                            undoSupport.postEdit(new RemoveUnitEdit(group, unit));
                            group.removeUnit(unit);
                            // TODO: repaint only affected area
                            mapView.repaint();
                        }
                    } else if (layer instanceof ZoneGroup) {
                        ZoneGroup group = (ZoneGroup) layer;
                        Point pos = mapView.screenToPixelCoords(
                                event.getX(), event.getY());
                        MapZone zone = group.getZoneAt(pos.x, pos.y);
                        if (zone != null) {
                            undoSupport.postEdit(new RemoveZoneEdit(group, zone));
                            group.removeZone(zone);
                            // TODO: repaint only affected area
                            mapView.repaint();
                        }
                    }
                    break;
                case PS_MOVEUNIT:
                  if (layer instanceof UnitGroup) {
                        Point pos = mapView.screenToPixelCoords(
                                event.getX(), event.getY());
                        if (currentUnit == null) {
                            UnitGroup group = (UnitGroup) layer;
                            currentUnit = group.getUnitAt(pos.x, pos.y);
                            if (currentUnit == null) { // No unit to move
                                break;
                            }
                            mouseLastPixelLocation = pos;
                            moveDist = new Point(0, 0);
                            break;
                        }
                        Point translation = new Point(
                                pos.x - mouseLastPixelLocation.x,
                                pos.y - mouseLastPixelLocation.y);
                        currentUnit.translate(translation.x, translation.y);
                        moveDist.translate(translation.x, translation.y);
                        mouseLastPixelLocation = pos;
                        mapView.repaint();
                    } else if (layer instanceof ZoneGroup) {
                        Point pos = mapView.screenToPixelCoords(
                                event.getX(), event.getY());
                        if (currentZone == null) {
                            ZoneGroup group = (ZoneGroup) layer;
                            currentZone = group.getZoneAt(pos.x, pos.y);
                            if (currentZone == null) { // No unit to move
                                break;
                            }
                            mouseLastPixelLocation = pos;
                            moveDist = new Point(0, 0);
                            break;
                        }
                        Point translation = new Point(
                                pos.x - mouseLastPixelLocation.x,
                                pos.y - mouseLastPixelLocation.y);
                        currentZone.translate(translation.x, translation.y);
                        moveDist.translate(translation.x, translation.y);
                        mouseLastPixelLocation = pos;
                        mapView.repaint();
                    }
                    break;
                case PS_ADDZON:
                    if (layer instanceof  ZoneGroup) {
                        if (marqueeSelection == null) {
                            marqueeSelection = new SelectionLayer(
                                    currentMap.getWidth(),
                                    currentMap.getHeight());
                            currentMap.addLayerSpecial(marqueeSelection);
                        }
View Full Code Here

Examples of tiled.mapeditor.selection.SelectionLayer

            boolean contains = false;
            if (marqueeSelection != null && marqueeSelection.getSelectedArea().contains(tile.x,tile.y)) {
                contains = true;
            }
            if (marqueeSelection == null && !contains) {
                marqueeSelection = new SelectionLayer(
                        currentMap.getWidth(), currentMap.getHeight());
                currentMap.addLayerSpecial(marqueeSelection);
            }
            else if (marqueeSelection != null && e.getModifiers() == InputEvent.BUTTON1_MASK) {
                currentMap.removeLayerSpecial(marqueeSelection);
                if (contains) {
                    marqueeSelection = null;
                }
                else {
                    marqueeSelection = new SelectionLayer(
                            currentMap.getWidth(), currentMap.getHeight());
                    currentMap.addLayerSpecial(marqueeSelection);
                }
            }
        } else if (currentPointerState == PS_MOVE) {
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. 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.