Package diva.canvas.interactor
Class SelectionDragger
- java.lang.Object
-
- diva.canvas.interactor.AbstractInteractor
-
- diva.canvas.interactor.DragInteractor
-
- diva.canvas.interactor.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 Summary
Constructors Constructor Description SelectionDragger()Create a new SelectionDraggerSelectionDragger(GraphicsPane gpane)Create a new SelectionDragger attached to the given graphics pane.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddSelectionInteractor(SelectionInteractor interactor)Add the selection model of the given selection interactor to the set of selection models selected by this dragger.voidaddSelectionModel(SelectionModel model)Add the given selection model to the set of selection models selected by this dragger.voidclearSelection()Clear the selection in all the relevant selection interactors.voidcontractSelection(SelectionInteractor i, Figure figure)Contract the selection by removing an item from it and removing highlight rendering.voidexpandSelection(SelectionInteractor i, Figure figure)Expand the selection by adding an item to it and adding highlight rendering to it.EventLayergetEventLayer()Get the layer that drag events are listened onFigureLayergetFigureLayer()Get the layer that figures are selected onOverlayLayergetOverlayLayer()Get the layer that drag rectangles are drawn onMouseFiltergetSelectionFilter()Get the mouse filter that controls when this selection filter is activated.MouseFiltergetToggleFilter()Get the mouse filter that controls the toggling of selectionsvoidmouseDragged(LayerEvent event)Reshape the rubber-band, swapping coordinates if necessary.voidmousePressed(LayerEvent event)Clear the selection, and create the rubber-bandvoidmouseReleased(LayerEvent event)Delete the rubber-bandvoidremoveSelectionModel(SelectionModel model)Remove a selection model from the list of models selected by this dragger.java.util.IteratorselectionModels()Get the selection interactorsvoidsetEventLayer(EventLayer l)Set the layer that drag events are listened onvoidsetFigureLayer(FigureLayer l)Set the layer that figures are selected onvoidsetOverlayLayer(OverlayLayer l)Set the layer that drag rectangles are drawn onvoidsetSelectionFilter(MouseFilter f)Set the mouse filter that controls when this selection filter is activated.voidsetToggleFilter(MouseFilter f)Set the mouse filter that controls the toggling of selections.voidterminateDragSelection()Terminate drag-selection operation.-
Methods inherited from class diva.canvas.interactor.DragInteractor
addLayerListener, appendConstraint, constrainPoint, fireLayerEvent, getSelectiveEnabled, getTargetArray, getX, getY, prependConstraint, removeLayerListener, setSelectiveEnabled, setTargetArray, setup, targets, translate
-
Methods inherited from class diva.canvas.interactor.AbstractInteractor
accept, getMouseFilter, isConsuming, isEnabled, isMotionEnabled, mouseClicked, mouseEntered, mouseExited, mouseMoved, setConsuming, setEnabled, setMotionEnabled, setMouseFilter
-
-
-
-
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:
mouseDraggedin interfaceLayerListener- Overrides:
mouseDraggedin classDragInteractor- Parameters:
event- the event
-
mousePressed
public void mousePressed(LayerEvent event)
Clear the selection, and create the rubber-band- Specified by:
mousePressedin interfaceLayerListener- Overrides:
mousePressedin classDragInteractor- Parameters:
event- the event
-
mouseReleased
public void mouseReleased(LayerEvent event)
Delete the rubber-band- Specified by:
mouseReleasedin interfaceLayerListener- Overrides:
mouseReleasedin classDragInteractor- 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.
-
-