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
public class MarqueeSelectionTool extends AbstractTool
A Tool which selects multipleEditParts inside a rectangular area of a Graphical Viewer. Selection behavior can be configured by selecting (viasetMarqueeBehavior(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
Fields Modifier and Type Field Description static intBEHAVIOR_CONNECTIONS_CONTAINEDThis behavior selects connections that intersect the marquee rectangle.static intBEHAVIOR_CONNECTIONS_TOUCHEDThis behavior selects connections that intersect the marquee rectangle.static intBEHAVIOR_NODES_AND_CONNECTIONSDeprecated.useBEHAVIOR_NODES_CONTAINED_AND_RELATED_CONNECTIONSinstead.static intBEHAVIOR_NODES_CONTAINEDThis behavior selects nodes completely encompassed by the marquee rectangle.static intBEHAVIOR_NODES_CONTAINED_AND_RELATED_CONNECTIONSThis behavior selects nodes completely encompassed by the marquee rectangle, and all connections between those nodes.static intBEHAVIOR_NODES_TOUCHEDThis behavior selects nodes that intersect the marquee rectangle.static intBEHAVIOR_NODES_TOUCHED_AND_RELATED_CONNECTIONSThis behavior selects nodes that intersect the marquee rectangle.static intDEFAULT_MARQUEE_BEHAVIORConstant defining the default marquee selection behavior.static java.lang.ObjectPROPERTY_MARQUEE_BEHAVIORThe 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
Constructors Constructor Description MarqueeSelectionTool()Creates a new MarqueeSelectionTool of default typeBEHAVIOR_NODES_CONTAINED.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidapplyProperty(java.lang.Object key, java.lang.Object value)This method is invoked fromAbstractTool.setProperties(Map).protected java.util.CollectioncalculateMarqueeSelectedEditParts()Called fromperformMarqueeSelect()to determine thoseEditParts that are affected by the current marquee selection.voiddeactivate()Erases feedback if necessary and puts the tool into the terminal state.protected java.lang.StringgetCommandName()Returns the identifier of the command that is being sought.protected org.eclipse.draw2d.geometry.RectanglegetCurrentMarqueeSelectionRectangle()Returns the current marquee selection rectangle.protected intgetCurrentSelectionMode()Returns the current selection mode, i.e. default, append, or toggleprotected java.lang.StringgetDebugName()Returns 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 booleanhandleDragInProgress()Called whenever a mouse is being dragged and the drag threshold has been exceeded.protected booleanhandleFocusLost()Handles high-level processing of a focus lost event.protected booleanhandleInvalidInput()This method is called when mouse or keyboard input is invalid and erases the feedback.protected booleanhandleKeyDown(KeyEvent e)Handles 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 voidperformMarqueeSelect()Calculates 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, 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 Detail
-
BEHAVIOR_CONNECTIONS_CONTAINED
public static final int BEHAVIOR_CONNECTIONS_CONTAINED
This behavior selects connections that intersect the marquee rectangle.- Since:
- 3.7
-
BEHAVIOR_CONNECTIONS_TOUCHED
public static final int BEHAVIOR_CONNECTIONS_TOUCHED
This behavior selects connections that intersect the marquee rectangle.- Since:
- 3.1
-
BEHAVIOR_NODES_CONTAINED
public static final int BEHAVIOR_NODES_CONTAINED
This behavior selects nodes completely encompassed by the marquee rectangle. This is the default behavior for this tool.- Since:
- 3.1
-
BEHAVIOR_NODES_CONTAINED_AND_RELATED_CONNECTIONS
public static final int BEHAVIOR_NODES_CONTAINED_AND_RELATED_CONNECTIONS
This behavior selects nodes completely encompassed by the marquee rectangle, and all connections between those nodes.- Since:
- 3.7
-
BEHAVIOR_NODES_TOUCHED
public static final int BEHAVIOR_NODES_TOUCHED
This behavior selects nodes that intersect the marquee rectangle.- Since:
- 3.7
-
BEHAVIOR_NODES_TOUCHED_AND_RELATED_CONNECTIONS
public static final int BEHAVIOR_NODES_TOUCHED_AND_RELATED_CONNECTIONS
This behavior selects nodes that intersect the marquee rectangle.- Since:
- 3.7
-
BEHAVIOR_NODES_AND_CONNECTIONS
public static final int 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
-
PROPERTY_MARQUEE_BEHAVIOR
public static final java.lang.Object PROPERTY_MARQUEE_BEHAVIOR
The property to be used inAbstractTool.setProperties(java.util.Map)forsetMarqueeBehavior(int).
-
DEFAULT_MARQUEE_BEHAVIOR
public static final int DEFAULT_MARQUEE_BEHAVIOR
Constant defining the default marquee selection behavior.- Since:
- 3.7
-
-
Constructor Detail
-
MarqueeSelectionTool
public MarqueeSelectionTool()
Creates a new MarqueeSelectionTool of default typeBEHAVIOR_NODES_CONTAINED.
-
-
Method Detail
-
applyProperty
protected void applyProperty(java.lang.Object key, java.lang.Object value)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:
AbstractTool.applyProperty(java.lang.Object, java.lang.Object)
-
calculateMarqueeSelectedEditParts
protected java.util.Collection calculateMarqueeSelectedEditParts()
Called fromperformMarqueeSelect()to determine thoseEditParts 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 edit parts 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:
AbstractTool.activate()
-
getCommandName
protected java.lang.String 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:
AbstractTool.getCommandName()
-
getCurrentMarqueeSelectionRectangle
protected org.eclipse.draw2d.geometry.Rectangle 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
protected java.lang.String getDebugName()
Description copied from class:AbstractToolReturns the debug name for this tool.- Overrides:
getDebugNamein classAbstractTool- Returns:
- the debug name
- See Also:
AbstractTool.getDebugName()
-
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:
AbstractTool.handleButtonDown(int)
-
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:
AbstractTool.handleButtonUp(int)
-
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:
AbstractTool.handleDragInProgress()
-
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:
AbstractTool.handleFocusLost()
-
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
protected boolean handleKeyDown(KeyEvent e)
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:
AbstractTool.handleKeyDown(KeyEvent)
-
isMarqueeSelectable
protected boolean isMarqueeSelectable(GraphicalEditPart editPart)
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
protected boolean isViewerImportant(EditPartViewer viewer)
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:
AbstractTool.isViewerImportant(org.eclipse.gef.EditPartViewer)
-
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
public void setViewer(EditPartViewer viewer)
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:
Tool.setViewer(org.eclipse.gef.EditPartViewer)
-
-