public class MarqueeSelectionTool extends AbstractTool
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_CONNECTIONSBEHAVIOR_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_TERMINALREQ_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
EditParts 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, viewerExitedgetFlag, setFlagpublic 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)
AbstractToolAbstractTool.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 AbstractToolkey - the key; may be nullvalue - the new valueAbstractTool.applyProperty(java.lang.Object,
java.lang.Object)protected java.util.Collection calculateMarqueeSelectedEditParts()
performMarqueeSelect() to determine those
EditParts 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 Tooldeactivate in class AbstractToolAbstractTool.activate()protected java.lang.String getCommandName()
AbstractToolgetCommandName in class AbstractToolAbstractTool.getCommandName()protected Rectangle getCurrentMarqueeSelectionRectangle()
Rectangle representing the current marquee selection.protected int getCurrentSelectionMode()
DEFAULT_MODE, APPEND_MODE, or
TOGGLE_MODEprotected java.lang.String getDebugName()
AbstractToolgetDebugName in class AbstractToolAbstractTool.getDebugName()protected boolean handleButtonDown(int button)
AbstractToolfalse 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 AbstractToolbutton - which button went downtrue if the buttonDown was handledAbstractTool.handleButtonDown(int)protected boolean handleButtonUp(int button)
AbstractToolfalse 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 AbstractToolbutton - the button being releasedtrue if the button up was handledAbstractTool.handleButtonUp(int)protected boolean handleDragInProgress()
AbstractToolAbstractTool.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 AbstractTooltrue if the drag was handledAbstractTool.handleDragInProgress()protected boolean handleFocusLost()
AbstractToolfalse 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 AbstractTooltrue if the event was handledAbstractTool.handleFocusLost()protected boolean handleInvalidInput()
handleInvalidInput in class AbstractTooltrueprotected boolean handleKeyDown(KeyEvent e)
KeyHandler, via
KeyHandler.keyPressed(KeyEvent).handleKeyDown in class AbstractToole - 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 AbstractToolviewer - 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)
AbstractToolsetViewer in interface ToolsetViewer in class AbstractToolviewer - the viewerTool.setViewer(org.eclipse.gef.EditPartViewer)Copyright (c) IBM Corp. and others 2000, 2011. All Rights Reserved.