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
EditParts 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_CONTAINEDBEHAVIOR_NODES_TOUCHEDBEHAVIOR_CONNECTIONS_CONTAINEDBEHAVIOR_CONNECTIONS_TOUCHEDBEHAVIOR_NODES_CONTAINED_AND_RELATED_CONNECTIONSBEHAVIOR_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 intThis behavior selects connections that intersect the marquee rectangle.static final intThis behavior selects connections that intersect the marquee rectangle.static final intDeprecated.static final intThis behavior selects nodes completely encompassed by the marquee rectangle.static final intThis behavior selects nodes completely encompassed by the marquee rectangle, and all connections between those nodes.static final intThis behavior selects nodes that intersect the marquee rectangle.static final intThis behavior selects nodes that intersect the marquee rectangle.static final intConstant defining the default marquee selection behavior.static final ObjectThe 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_TERMINALFields 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 voidapplyProperty(Object key, Object value) This method is invoked fromAbstractTool.setProperties(Map).protected Collection<? extends GraphicalEditPart> Called fromperformMarqueeSelect()to determine thoseGraphicalEditParts that are affected by the current marquee selection.protected IFigurecreate a new marquee rectangle feedback figure Sub classes my provide their own feedback rectanglevoidErases feedback if necessary and puts the tool into the terminal state.protected StringReturns the identifier of the command that is being sought.protected RectangleReturns the current marquee selection rectangle.protected intReturns the current selection mode, i.e. default, append, or toggleprotected StringReturns the debug name for this tool.protected booleanhandleButtonDown(int button) Called when the mouse button has been pressed.protected booleanhandleButtonUp(int button) Called when the mouse button has been released.protected booleanCalled whenever a mouse is being dragged and the drag threshold has been exceeded.protected booleanHandles high-level processing of a focus lost event.protected booleanThis method is called when mouse or keyboard input is invalid and erases the feedback.protected booleanHandles high-level processing of a key down event.protected booleanisMarqueeSelectable(GraphicalEditPart editPart) Decides whether the given edit part may potentially be included in the current marquee selection.protected booleanisViewerImportant(EditPartViewer viewer) MarqueeSelectionTool is only interested in GraphicalViewers, not TreeViewers.protected voidCalculates and sets a new viewer selection based on the current marquee selection.voidsetMarqueeBehavior(int type) Sets the type of parts that this tool will select.voidsetViewer(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, viewerExitedMethods 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_CONNECTIONSinstead.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:AbstractToolThis 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:
applyPropertyin classAbstractTool- Parameters:
key- the key; may benullvalue- the new value- See Also:
-
calculateMarqueeSelectedEditParts
Called fromperformMarqueeSelect()to determine thoseGraphicalEditParts 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:
deactivatein interfaceTool- Overrides:
deactivatein classAbstractTool- See Also:
-
getCommandName
Description copied from class:AbstractToolReturns 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:
getCommandNamein classAbstractTool- Returns:
- the identifier for the command
- See Also:
-
getCurrentMarqueeSelectionRectangle
Returns the current marquee selection rectangle.- Returns:
- A
Rectanglerepresenting 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:AbstractToolReturns the debug name for this tool.- Overrides:
getDebugNamein 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:AbstractToolCalled when the mouse button has been pressed. By default, nothing happens andfalseis returned. Subclasses may override this method to interpret the meaning of a mouse down. Returningtrueindicates that the button down was handled in some way.- Overrides:
handleButtonDownin classAbstractTool- Parameters:
button- which button went down- Returns:
trueif the buttonDown was handled- See Also:
-
handleButtonUp
protected boolean handleButtonUp(int button) Description copied from class:AbstractToolCalled when the mouse button has been released. By default, nothing happens andfalseis returned. Subclasses may override this method to interpret the mouse up. Returningtrueindicates that the mouse up was handled in some way.- Overrides:
handleButtonUpin classAbstractTool- Parameters:
button- the button being released- Returns:
trueif the button up was handled- See Also:
-
handleDragInProgress
protected boolean handleDragInProgress()Description copied from class:AbstractToolCalled 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 andfalseis returned. Subclasses may override this method to interpret the drag. Returningtrueindicates that the drag was handled.- Overrides:
handleDragInProgressin classAbstractTool- Returns:
trueif the drag was handled- See Also:
-
handleFocusLost
protected boolean handleFocusLost()Description copied from class:AbstractToolHandles high-level processing of a focus lost event. By default, nothing happens andfalseis returned. Subclasses may override this method to interpret the focus lost event. Returntrueto indicate that the event was processed.- Overrides:
handleFocusLostin classAbstractTool- Returns:
trueif 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:
handleInvalidInputin 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:
handleKeyDownin classAbstractTool- Parameters:
e- the key event- Returns:
trueif 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- theEditPartof interest- Returns:
trueif the given edit part may be included into the marquee selection,falseotherwise- Since:
- 3.7
-
isViewerImportant
MarqueeSelectionTool is only interested in GraphicalViewers, not TreeViewers.- Overrides:
isViewerImportantin classAbstractTool- Parameters:
viewer- the viewer where the event occured- Returns:
trueif this tool is interested in events occuring in the given viewer;falseotherwise- 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:AbstractToolSets the active EditPartViewer. The active viewer is the viewer from which the last event was received.- Specified by:
setViewerin interfaceTool- Overrides:
setViewerin classAbstractTool- Parameters:
viewer- the viewer- See Also:
-
BEHAVIOR_NODES_CONTAINED_AND_RELATED_CONNECTIONSinstead.