Class SelectionDragger

  • All Implemented Interfaces:
    LayerListener, LayerMotionListener, Interactor, java.util.EventListener

    public class SelectionDragger
    extends DragInteractor
    A class that implements rubber-banding on a canvas. It contains references to one or more instances of SelectionInteractor, which it notifies whenever dragging on the canvas covers or uncovers items. The SelectionDragger requires three layers: an Event Layer, which it listens to perform drag-selection, an OutlineLayer, on which it draws the drag-selection box, and a FigureLayer, which it selects figures on. It can also accept a GraphicsPane in its constructor, in which case it will use the background event layer, outline layer, and foreground event layer from that pane.
    Version:
    $Id$
    Author:
    John Reekie
    • Constructor Detail

      • SelectionDragger

        public SelectionDragger()
        Create a new SelectionDragger
      • SelectionDragger

        public SelectionDragger​(GraphicsPane gpane)
        Create a new SelectionDragger attached to the given graphics pane.
    • Method Detail

      • addSelectionModel

        public void addSelectionModel​(SelectionModel model)
        Add the given selection model to the set of selection models selected by this dragger. When drag-selecting, only figures that have a selection interactor with a selection model in this list are added to the selection model.
      • addSelectionInteractor

        public void addSelectionInteractor​(SelectionInteractor interactor)
        Add the selection model of the given selection interactor to the set of selection models selected by this dragger. When drag-selecting, only figures that have a selection interactor with a selection model in this list are added to the selection model.
      • clearSelection

        public void clearSelection()
        Clear the selection in all the relevant selection interactors.
      • contractSelection

        public void contractSelection​(SelectionInteractor i,
                                      Figure figure)
        Contract the selection by removing an item from it and removing highlight rendering. If the figure is not in the selection, do nothing.
      • expandSelection

        public void expandSelection​(SelectionInteractor i,
                                    Figure figure)
        Expand the selection by adding an item to it and adding highlight rendering to it. If the figure is already in the selection, do nothing.
      • getOverlayLayer

        public OverlayLayer getOverlayLayer()
        Get the layer that drag rectangles are drawn on
      • getEventLayer

        public EventLayer getEventLayer()
        Get the layer that drag events are listened on
      • getFigureLayer

        public FigureLayer getFigureLayer()
        Get the layer that figures are selected on
      • getSelectionFilter

        public MouseFilter getSelectionFilter()
        Get the mouse filter that controls when this selection filter is activated.
      • getToggleFilter

        public MouseFilter getToggleFilter()
        Get the mouse filter that controls the toggling of selections
      • mouseDragged

        public void mouseDragged​(LayerEvent event)
        Reshape the rubber-band, swapping coordinates if necessary. Any figures that are newly included or excluded from the drag region are added to or removed from the appropriate selection.
        Specified by:
        mouseDragged in interface LayerListener
        Overrides:
        mouseDragged in class DragInteractor
        Parameters:
        event - the event
      • removeSelectionModel

        public void removeSelectionModel​(SelectionModel model)
        Remove a selection model from the list of models selected by this dragger.
      • selectionModels

        public java.util.Iterator selectionModels()
        Get the selection interactors
      • setOverlayLayer

        public void setOverlayLayer​(OverlayLayer l)
        Set the layer that drag rectangles are drawn on
      • setEventLayer

        public void setEventLayer​(EventLayer l)
        Set the layer that drag events are listened on
      • setFigureLayer

        public void setFigureLayer​(FigureLayer l)
        Set the layer that figures are selected on
      • setSelectionFilter

        public void setSelectionFilter​(MouseFilter f)
        Set the mouse filter that controls when this selection filter is activated.
      • setToggleFilter

        public void setToggleFilter​(MouseFilter f)
        Set the mouse filter that controls the toggling of selections.
      • terminateDragSelection

        public void terminateDragSelection()
        Terminate drag-selection operation. This must only be called from events that are triggered during a drag operation.