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 void
addSelectionInteractor(SelectionInteractor interactor)
Add the selection model of the given selection interactor to the set of selection models selected by this dragger.void
addSelectionModel(SelectionModel model)
Add the given selection model to the set of selection models selected by this dragger.void
clearSelection()
Clear the selection in all the relevant selection interactors.void
contractSelection(SelectionInteractor i, Figure figure)
Contract the selection by removing an item from it and removing highlight rendering.void
expandSelection(SelectionInteractor i, Figure figure)
Expand the selection by adding an item to it and adding highlight rendering to it.EventLayer
getEventLayer()
Get the layer that drag events are listened onFigureLayer
getFigureLayer()
Get the layer that figures are selected onOverlayLayer
getOverlayLayer()
Get the layer that drag rectangles are drawn onMouseFilter
getSelectionFilter()
Get the mouse filter that controls when this selection filter is activated.MouseFilter
getToggleFilter()
Get the mouse filter that controls the toggling of selectionsvoid
mouseDragged(LayerEvent event)
Reshape the rubber-band, swapping coordinates if necessary.void
mousePressed(LayerEvent event)
Clear the selection, and create the rubber-bandvoid
mouseReleased(LayerEvent event)
Delete the rubber-bandvoid
removeSelectionModel(SelectionModel model)
Remove a selection model from the list of models selected by this dragger.java.util.Iterator
selectionModels()
Get the selection interactorsvoid
setEventLayer(EventLayer l)
Set the layer that drag events are listened onvoid
setFigureLayer(FigureLayer l)
Set the layer that figures are selected onvoid
setOverlayLayer(OverlayLayer l)
Set the layer that drag rectangles are drawn onvoid
setSelectionFilter(MouseFilter f)
Set the mouse filter that controls when this selection filter is activated.void
setToggleFilter(MouseFilter f)
Set the mouse filter that controls the toggling of selections.void
terminateDragSelection()
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:
mouseDragged
in interfaceLayerListener
- Overrides:
mouseDragged
in classDragInteractor
- Parameters:
event
- the event
-
mousePressed
public void mousePressed(LayerEvent event)
Clear the selection, and create the rubber-band- Specified by:
mousePressed
in interfaceLayerListener
- Overrides:
mousePressed
in classDragInteractor
- Parameters:
event
- the event
-
mouseReleased
public void mouseReleased(LayerEvent event)
Delete the rubber-band- Specified by:
mouseReleased
in interfaceLayerListener
- Overrides:
mouseReleased
in 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.
-
-