public class MarqueeSelectionTool extends AbstractTool
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.AbstractTool.Input
Modifier and Type | Field and Description |
---|---|
static int |
BEHAVIOR_CONNECTIONS_CONTAINED
This behavior selects connections that intersect the marquee rectangle.
|
static int |
BEHAVIOR_CONNECTIONS_TOUCHED
This behavior selects connections that intersect the marquee rectangle.
|
static int |
BEHAVIOR_NODES_AND_CONNECTIONS
Deprecated.
use
BEHAVIOR_NODES_CONTAINED_AND_RELATED_CONNECTIONS
instead. |
static int |
BEHAVIOR_NODES_CONTAINED
This behavior selects nodes completely encompassed by the marquee
rectangle.
|
static int |
BEHAVIOR_NODES_CONTAINED_AND_RELATED_CONNECTIONS
This behavior selects nodes completely encompassed by the marquee
rectangle, and all connections between those nodes.
|
static int |
BEHAVIOR_NODES_TOUCHED
This behavior selects nodes that intersect the marquee rectangle.
|
static int |
BEHAVIOR_NODES_TOUCHED_AND_RELATED_CONNECTIONS
This behavior selects nodes that intersect the marquee rectangle.
|
static int |
DEFAULT_MARQUEE_BEHAVIOR
Constant defining the default marquee selection behavior.
|
static java.lang.Object |
PROPERTY_MARQUEE_BEHAVIOR
The property to be used in
AbstractTool.setProperties(java.util.Map) for
setMarqueeBehavior(int) . |
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
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 and Description |
---|
MarqueeSelectionTool()
Creates a new MarqueeSelectionTool of default type
BEHAVIOR_NODES_CONTAINED . |
Modifier and Type | Method and Description |
---|---|
protected void |
applyProperty(java.lang.Object key,
java.lang.Object value)
This method is invoked from
AbstractTool.setProperties(Map) . |
protected java.util.Collection |
calculateMarqueeSelectedEditParts()
Called from
performMarqueeSelect() to determine those
EditPart s that are affected by the current marquee selection. |
void |
deactivate()
Erases feedback if necessary and puts the tool into the terminal state.
|
protected java.lang.String |
getCommandName()
Returns the identifier of the command that is being sought.
|
protected Rectangle |
getCurrentMarqueeSelectionRectangle()
Returns the current marquee selection rectangle.
|
protected int |
getCurrentSelectionMode()
Returns the current selection mode, i.e. default, append, or toggle
|
protected java.lang.String |
getDebugName()
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 |
handleDragInProgress()
Called whenever a mouse is being dragged and the drag threshold has been
exceeded.
|
protected boolean |
handleFocusLost()
Handles high-level processing of a focus lost event.
|
protected boolean |
handleInvalidInput()
This method is called when mouse or keyboard input is invalid and erases
the feedback.
|
protected boolean |
handleKeyDown(KeyEvent e)
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 |
performMarqueeSelect()
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.
|
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
getFlag, setFlag
public static final int BEHAVIOR_CONNECTIONS_CONTAINED
public static final int BEHAVIOR_CONNECTIONS_TOUCHED
public static final int BEHAVIOR_NODES_CONTAINED
public static final int BEHAVIOR_NODES_CONTAINED_AND_RELATED_CONNECTIONS
public static final int BEHAVIOR_NODES_TOUCHED
public static final int BEHAVIOR_NODES_TOUCHED_AND_RELATED_CONNECTIONS
public static final int BEHAVIOR_NODES_AND_CONNECTIONS
BEHAVIOR_NODES_CONTAINED_AND_RELATED_CONNECTIONS
instead.public static final java.lang.Object PROPERTY_MARQUEE_BEHAVIOR
AbstractTool.setProperties(java.util.Map)
for
setMarqueeBehavior(int)
.public static final int DEFAULT_MARQUEE_BEHAVIOR
public MarqueeSelectionTool()
BEHAVIOR_NODES_CONTAINED
.protected void applyProperty(java.lang.Object key, java.lang.Object value)
AbstractTool
AbstractTool.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.
applyProperty
in class AbstractTool
key
- the key; may be null
value
- the new valueAbstractTool.applyProperty(java.lang.Object,
java.lang.Object)
protected java.util.Collection calculateMarqueeSelectedEditParts()
performMarqueeSelect()
to determine those
EditPart
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 in performMarqueeSelect()
), while in toggle mode their
selection state will be inverted.
Calculation is delegated to
calculatePrimaryMarqueeSelectedEditParts()
and
calculateSecondaryMarqueeSelectedEditParts(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 of
BEHAVIOR_NODES_TOUCHED_AND_RELATED_CONNECTIONS
, or
BEHAVIOR_NODES_CONTAINED_AND_RELATED_CONNECTIONS
) afterwards.
Clients may overwrite to customize the calculation of marquee selected
edit parts.public void deactivate()
deactivate
in interface Tool
deactivate
in class AbstractTool
AbstractTool.activate()
protected java.lang.String getCommandName()
AbstractTool
getCommandName
in class AbstractTool
AbstractTool.getCommandName()
protected Rectangle getCurrentMarqueeSelectionRectangle()
Rectangle
representing the current marquee selection.protected int getCurrentSelectionMode()
DEFAULT_MODE
, APPEND_MODE
, or
TOGGLE_MODE
protected java.lang.String getDebugName()
AbstractTool
getDebugName
in class AbstractTool
AbstractTool.getDebugName()
protected boolean handleButtonDown(int button)
AbstractTool
false
is returned. Subclasses may override this
method to interpret the meaning of a mouse down. Returning
true
indicates that the button down was handled in some way.handleButtonDown
in class AbstractTool
button
- which button went downtrue
if the buttonDown was handledAbstractTool.handleButtonDown(int)
protected boolean handleButtonUp(int button)
AbstractTool
false
is returned. Subclasses may override this
method to interpret the mouse up. Returning true
indicates
that the mouse up was handled in some way.handleButtonUp
in class AbstractTool
button
- the button being releasedtrue
if the button up was handledAbstractTool.handleButtonUp(int)
protected boolean handleDragInProgress()
AbstractTool
AbstractTool.handleDrag()
is called. This method gets called repeatedly for
every mouse move during the drag. By default, nothing happens and
false
is returned. Subclasses may override this method to
interpret the drag. Returning true
indicates that the drag
was handled.handleDragInProgress
in class AbstractTool
true
if the drag was handledAbstractTool.handleDragInProgress()
protected boolean handleFocusLost()
AbstractTool
false
is returned. Subclasses may override this
method to interpret the focus lost event. Return true
to
indicate that the event was processed.handleFocusLost
in class AbstractTool
true
if the event was handledAbstractTool.handleFocusLost()
protected boolean handleInvalidInput()
handleInvalidInput
in class AbstractTool
true
protected boolean handleKeyDown(KeyEvent e)
KeyHandler
, via
KeyHandler.keyPressed(KeyEvent)
.handleKeyDown
in class AbstractTool
e
- the key eventtrue
if the key down was handled.AbstractTool.handleKeyDown(KeyEvent)
protected boolean isMarqueeSelectable(GraphicalEditPart editPart)
editPart
- the EditPart
of interesttrue
if the given edit part may be included into the
marquee selection, false
otherwiseprotected boolean isViewerImportant(EditPartViewer viewer)
isViewerImportant
in class AbstractTool
viewer
- the viewer where the event occuredtrue
if this tool is interested in events occuring
in the given viewer; false
otherwiseAbstractTool.isViewerImportant(org.eclipse.gef.EditPartViewer)
protected void performMarqueeSelect()
calculateMarqueeSelectedEditParts()
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.public void setMarqueeBehavior(int type)
public void setViewer(EditPartViewer viewer)
AbstractTool
setViewer
in interface Tool
setViewer
in class AbstractTool
viewer
- the viewerTool.setViewer(org.eclipse.gef.EditPartViewer)
Copyright (c) IBM Corp. and others 2000, 2011. All Rights Reserved.