Package org.eclipse.gef.tools
Class MarqueeSelectionTool
java.lang.Object
org.eclipse.gef.util.FlagSupport
org.eclipse.gef.tools.AbstractTool
org.eclipse.gef.tools.MarqueeSelectionTool
- All Implemented Interfaces:
RequestConstants
,Tool
- Direct Known Subclasses:
MarqueeDragTracker
A Tool which selects multiple
EditPart
s inside a rectangular area of
a Graphical Viewer. Selection behavior can be configured by selecting (via
setMarqueeBehavior(int)
) one of six supported marquee behaviors,
which are:
BEHAVIOR_NODES_CONTAINED
BEHAVIOR_NODES_TOUCHED
BEHAVIOR_CONNECTIONS_CONTAINED
BEHAVIOR_CONNECTIONS_TOUCHED
BEHAVIOR_NODES_CONTAINED_AND_RELATED_CONNECTIONS
BEHAVIOR_NODES_TOUCHED_AND_RELATED_CONNECTIONS
BEHAVIOR_NODES_CONTAINED
).
Besides different marquee behaviors, the tool supports different modes, which
the user can influence by pressing modifier keys at the beginning of the drag
operation. I.e. if the SHIFT key is pressed at the beginning of the drag, the
enclosed items will be appended to the current viewer selection. If the MOD1
key is pressed at the beginning of the drag, the enclosed items will have
their selection state inverted.-
Nested Class Summary
Nested classes/interfaces inherited from class org.eclipse.gef.tools.AbstractTool
AbstractTool.Input
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final int
This behavior selects connections that intersect the marquee rectangle.static final int
This behavior selects connections that intersect the marquee rectangle.static final int
Deprecated.static final int
This behavior selects nodes completely encompassed by the marquee rectangle.static final int
This behavior selects nodes completely encompassed by the marquee rectangle, and all connections between those nodes.static final int
This behavior selects nodes that intersect the marquee rectangle.static final int
This behavior selects nodes that intersect the marquee rectangle.static final int
Constant defining the default marquee selection behavior.static final Object
The property to be used inAbstractTool.setProperties(java.util.Map)
forsetMarqueeBehavior(int)
.Fields inherited from class org.eclipse.gef.tools.AbstractTool
MAX_FLAG, MAX_STATE, MOUSE_BUTTON_ANY, MOUSE_BUTTON1, MOUSE_BUTTON2, MOUSE_BUTTON3, PROPERTY_UNLOAD_WHEN_FINISHED, STATE_ACCESSIBLE_DRAG, STATE_ACCESSIBLE_DRAG_IN_PROGRESS, STATE_DRAG, STATE_DRAG_IN_PROGRESS, STATE_INITIAL, STATE_INVALID, STATE_TERMINAL
Fields inherited from interface org.eclipse.gef.RequestConstants
REQ_ADD, REQ_ALIGN, REQ_ALIGN_CHILDREN, REQ_CLONE, REQ_CONNECTION_END, REQ_CONNECTION_START, REQ_CREATE, REQ_CREATE_BENDPOINT, REQ_DELETE, REQ_DELETE_DEPENDANT, REQ_DIRECT_EDIT, REQ_MOVE, REQ_MOVE_BENDPOINT, REQ_MOVE_CHILDREN, REQ_OPEN, REQ_ORPHAN, REQ_ORPHAN_CHILDREN, REQ_RECONNECT_SOURCE, REQ_RECONNECT_TARGET, REQ_RESIZE, REQ_RESIZE_CHILDREN, REQ_SELECTION, REQ_SELECTION_HOVER
-
Constructor Summary
ConstructorsConstructorDescriptionCreates a new MarqueeSelectionTool of default typeBEHAVIOR_NODES_CONTAINED
. -
Method Summary
Modifier and TypeMethodDescriptionprotected void
applyProperty
(Object key, Object value) This method is invoked fromAbstractTool.setProperties(Map)
.protected Collection<? extends GraphicalEditPart>
Called fromperformMarqueeSelect()
to determine thoseGraphicalEditPart
s that are affected by the current marquee selection.protected IFigure
create a new marquee rectangle feedback figure Sub classes my provide their own feedback rectanglevoid
Erases feedback if necessary and puts the tool into the terminal state.protected String
Returns the identifier of the command that is being sought.protected Rectangle
Returns the current marquee selection rectangle.protected int
Returns the current selection mode, i.e. default, append, or toggleprotected String
Returns the debug name for this tool.protected boolean
handleButtonDown
(int button) Called when the mouse button has been pressed.protected boolean
handleButtonUp
(int button) Called when the mouse button has been released.protected boolean
Called whenever a mouse is being dragged and the drag threshold has been exceeded.protected boolean
Handles high-level processing of a focus lost event.protected boolean
This method is called when mouse or keyboard input is invalid and erases the feedback.protected boolean
Handles high-level processing of a key down event.protected boolean
isMarqueeSelectable
(GraphicalEditPart editPart) Decides whether the given edit part may potentially be included in the current marquee selection.protected boolean
isViewerImportant
(EditPartViewer viewer) MarqueeSelectionTool is only interested in GraphicalViewers, not TreeViewers.protected void
Calculates and sets a new viewer selection based on the current marquee selection.void
setMarqueeBehavior
(int type) Sets the type of parts that this tool will select.void
setViewer
(EditPartViewer viewer) Sets the active EditPartViewer.Methods inherited from class org.eclipse.gef.tools.AbstractTool
acceptArrowKey, accGetStep, accStepIncrement, accStepReset, activate, addFeedback, calculateCursor, commitDrag, createOperationSet, debug, executeCommand, executeCurrentCommand, focusGained, focusLost, getCommand, getCurrentCommand, getCurrentInput, getCurrentViewer, getDebugNameForState, getDefaultCursor, getDisabledCursor, getDomain, getDragMoveDelta, getLocation, getOperationSet, getStartLocation, getState, handleCommandStackChanged, handleDoubleClick, handleDrag, handleDragStarted, handleFinished, handleFocusGained, handleHover, handleKeyTraversed, handleKeyUp, handleMove, handleNativeDragFinished, handleNativeDragStarted, handleViewerEntered, handleViewerExited, isActive, isHoverActive, isInState, keyDown, keyTraversed, keyUp, mouseDoubleClick, mouseDown, mouseDrag, mouseHover, mouseMove, mouseUp, mouseWheelScrolled, movedPastThreshold, nativeDragFinished, nativeDragStarted, performViewerMouseWheel, placeMouseInViewer, reactivate, refreshCursor, releaseToolCapture, removeFeedback, resetFlags, setCurrentCommand, setCursor, setDefaultCursor, setDisabledCursor, setEditDomain, setHoverActive, setProperties, setStartLocation, setState, setToolCapture, setUnloadWhenFinished, stateTransition, unloadWhenFinished, viewerEntered, viewerExited
Methods inherited from class org.eclipse.gef.util.FlagSupport
getFlag, setFlag
-
Field Details
-
BEHAVIOR_CONNECTIONS_CONTAINED
public static final int BEHAVIOR_CONNECTIONS_CONTAINEDThis behavior selects connections that intersect the marquee rectangle.- Since:
- 3.7
- See Also:
-
BEHAVIOR_CONNECTIONS_TOUCHED
public static final int BEHAVIOR_CONNECTIONS_TOUCHEDThis behavior selects connections that intersect the marquee rectangle.- Since:
- 3.1
- See Also:
-
BEHAVIOR_NODES_CONTAINED
public static final int BEHAVIOR_NODES_CONTAINEDThis behavior selects nodes completely encompassed by the marquee rectangle. This is the default behavior for this tool.- Since:
- 3.1
- See Also:
-
BEHAVIOR_NODES_CONTAINED_AND_RELATED_CONNECTIONS
public static final int BEHAVIOR_NODES_CONTAINED_AND_RELATED_CONNECTIONSThis behavior selects nodes completely encompassed by the marquee rectangle, and all connections between those nodes.- Since:
- 3.7
- See Also:
-
BEHAVIOR_NODES_TOUCHED
public static final int BEHAVIOR_NODES_TOUCHEDThis behavior selects nodes that intersect the marquee rectangle.- Since:
- 3.7
- See Also:
-
BEHAVIOR_NODES_TOUCHED_AND_RELATED_CONNECTIONS
public static final int BEHAVIOR_NODES_TOUCHED_AND_RELATED_CONNECTIONSThis behavior selects nodes that intersect the marquee rectangle.- Since:
- 3.7
- See Also:
-
BEHAVIOR_NODES_AND_CONNECTIONS
Deprecated.useBEHAVIOR_NODES_CONTAINED_AND_RELATED_CONNECTIONS
instead.This behavior selects nodes completely encompassed by the marquee rectangle, and all connections between those nodes.- Since:
- 3.1
- See Also:
-
PROPERTY_MARQUEE_BEHAVIOR
The property to be used inAbstractTool.setProperties(java.util.Map)
forsetMarqueeBehavior(int)
. -
DEFAULT_MARQUEE_BEHAVIOR
public static final int DEFAULT_MARQUEE_BEHAVIORConstant defining the default marquee selection behavior.- Since:
- 3.7
- See Also:
-
-
Constructor Details
-
MarqueeSelectionTool
public MarqueeSelectionTool()Creates a new MarqueeSelectionTool of default typeBEHAVIOR_NODES_CONTAINED
.
-
-
Method Details
-
applyProperty
Description copied from class:AbstractTool
This method is invoked fromAbstractTool.setProperties(Map)
. Sub-classes can override to add support for more properties. This method should fail silently in case of any error.AbstractTool uses introspection to match any keys with properties. For instance, the key "defaultCursor" would lead to the invocation of
AbstractTool.setDefaultCursor(Cursor)
with the provided value.- Overrides:
applyProperty
in classAbstractTool
- Parameters:
key
- the key; may benull
value
- the new value- See Also:
-
calculateMarqueeSelectedEditParts
Called fromperformMarqueeSelect()
to determine thoseGraphicalEditPart
s that are affected by the current marquee selection. In default and append mode, the edit parts returned here will become selected in the current viewer's new selection (which is calculated and set inperformMarqueeSelect()
), while in toggle mode their selection state will be inverted. Calculation is delegated tocalculatePrimaryMarqueeSelectedEditParts()
andcalculateSecondaryMarqueeSelectedEditParts(Collection)
to compute the set of marquee selected edit parts in a two step-process, where all directly affected edit parts are determined first, and those indirectly affected (related connections in case ofBEHAVIOR_NODES_TOUCHED_AND_RELATED_CONNECTIONS
, orBEHAVIOR_NODES_CONTAINED_AND_RELATED_CONNECTIONS
) afterwards. Clients may overwrite to customize the calculation of marquee selected edit parts.- Returns:
- A collection containing all GraphicalEditPart that should be regarded as being included in the current marquee selection, i.e. which should get selected in default or append mode, and whose selection state should get inverted in toggle mode.
- Since:
- 3.7
-
deactivate
public void deactivate()Erases feedback if necessary and puts the tool into the terminal state.- Specified by:
deactivate
in interfaceTool
- Overrides:
deactivate
in classAbstractTool
- See Also:
-
getCommandName
Description copied from class:AbstractTool
Returns the identifier of the command that is being sought. This name is also the named that will be logged in the debug view.- Specified by:
getCommandName
in classAbstractTool
- Returns:
- the identifier for the command
- See Also:
-
getCurrentMarqueeSelectionRectangle
Returns the current marquee selection rectangle.- Returns:
- A
Rectangle
representing the current marquee selection. - Since:
- 3.7
-
getCurrentSelectionMode
protected int getCurrentSelectionMode()Returns the current selection mode, i.e. default, append, or toggle- Returns:
- on of
DEFAULT_MODE
,APPEND_MODE
, orTOGGLE_MODE
- Since:
- 3.7
-
getDebugName
Description copied from class:AbstractTool
Returns the debug name for this tool.- Overrides:
getDebugName
in classAbstractTool
- Returns:
- the debug name
- See Also:
-
createMarqueeRectangleFigure
create a new marquee rectangle feedback figure Sub classes my provide their own feedback rectangle- Since:
- 3.13
-
handleButtonDown
protected boolean handleButtonDown(int button) Description copied from class:AbstractTool
Called when the mouse button has been pressed. By default, nothing happens andfalse
is returned. Subclasses may override this method to interpret the meaning of a mouse down. Returningtrue
indicates that the button down was handled in some way.- Overrides:
handleButtonDown
in classAbstractTool
- Parameters:
button
- which button went down- Returns:
true
if the buttonDown was handled- See Also:
-
handleButtonUp
protected boolean handleButtonUp(int button) Description copied from class:AbstractTool
Called when the mouse button has been released. By default, nothing happens andfalse
is returned. Subclasses may override this method to interpret the mouse up. Returningtrue
indicates that the mouse up was handled in some way.- Overrides:
handleButtonUp
in classAbstractTool
- Parameters:
button
- the button being released- Returns:
true
if the button up was handled- See Also:
-
handleDragInProgress
protected boolean handleDragInProgress()Description copied from class:AbstractTool
Called whenever a mouse is being dragged and the drag threshold has been exceeded. Prior to the drag threshold being exceeded, onlyAbstractTool.handleDrag()
is called. This method gets called repeatedly for every mouse move during the drag. By default, nothing happens andfalse
is returned. Subclasses may override this method to interpret the drag. Returningtrue
indicates that the drag was handled.- Overrides:
handleDragInProgress
in classAbstractTool
- Returns:
true
if the drag was handled- See Also:
-
handleFocusLost
protected boolean handleFocusLost()Description copied from class:AbstractTool
Handles high-level processing of a focus lost event. By default, nothing happens andfalse
is returned. Subclasses may override this method to interpret the focus lost event. Returntrue
to indicate that the event was processed.- Overrides:
handleFocusLost
in classAbstractTool
- Returns:
true
if the event was handled- See Also:
-
handleInvalidInput
protected boolean handleInvalidInput()This method is called when mouse or keyboard input is invalid and erases the feedback.- Overrides:
handleInvalidInput
in classAbstractTool
- Returns:
true
-
handleKeyDown
Handles high-level processing of a key down event. KeyEvents are forwarded to the current viewer'sKeyHandler
, viaKeyHandler.keyPressed(KeyEvent)
.- Overrides:
handleKeyDown
in classAbstractTool
- Parameters:
e
- the key event- Returns:
true
if the key down was handled.- See Also:
-
isMarqueeSelectable
Decides whether the given edit part may potentially be included in the current marquee selection.- Parameters:
editPart
- theEditPart
of interest- Returns:
true
if the given edit part may be included into the marquee selection,false
otherwise- Since:
- 3.7
-
isViewerImportant
MarqueeSelectionTool is only interested in GraphicalViewers, not TreeViewers.- Overrides:
isViewerImportant
in classAbstractTool
- Parameters:
viewer
- the viewer where the event occured- Returns:
true
if this tool is interested in events occuring in the given viewer;false
otherwise- See Also:
-
performMarqueeSelect
protected void performMarqueeSelect()Calculates and sets a new viewer selection based on the current marquee selection. By default, this method delegates tocalculateMarqueeSelectedEditParts()
to obtain the set of edit parts, which should be regarded as being affected by the current marquee selection. It then calculates a new viewer selection based on the current selection state of all affected edit parts and the current selection mode of the tool (getCurrentSelectionMode()
), as well as the current selection of the viewer (in case of APPEND mode), which is then passed to the current viewer.- Since:
- 3.7
-
setMarqueeBehavior
public void setMarqueeBehavior(int type) Sets the type of parts that this tool will select. This method should only be invoked once: when the tool is being initialized. -
setViewer
Description copied from class:AbstractTool
Sets the active EditPartViewer. The active viewer is the viewer from which the last event was received.- Specified by:
setViewer
in interfaceTool
- Overrides:
setViewer
in classAbstractTool
- Parameters:
viewer
- the viewer- See Also:
-
BEHAVIOR_NODES_CONTAINED_AND_RELATED_CONNECTIONS
instead.