Package org.eclipse.gef.tools

# Class SelectEditPartTracker

java.lang.Object
org.eclipse.gef.util.FlagSupport
org.eclipse.gef.tools.AbstractTool
org.eclipse.gef.tools.TargetingTool
org.eclipse.gef.tools.SelectEditPartTracker

All Implemented Interfaces:
  `DragTracker`, `RequestConstants`, `Tool`

Direct Known Subclasses:
  `DeselectAllTracker`, `DragEditPartsTracker`, `DragTreeItemsTracker`

public class SelectEditPartTracker extends TargetingTool implements DragTracker
DragTracker used to select, edit, and open `EditParts`.

## Nested Class Summary

## Nested classes/interfaces inherited from class org.eclipse.gef.tools.AbstractTool

`AbstractTool.Input`

## Field Summary

Fields
Modifier and Type
Field
Description
`protected static final int`
`FLAG_SELECTION_PERFORMED`
Flag to indicate selection has been performed.
`protected static final int`
`MAX_FLAG`
Max flag

### Fields inherited from class org.eclipse.gef.tools.AbstractTool

`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
`SelectEditPartTracker(EditPart owner)`
Constructs a new SelectEditPartTracker with the given edit part as the source.

## Method Summary

Modifier and Type
Method
Description
`protected Cursor`
`calculateCursor()`
Returns the appropriate cursor for the tools current state.
`protected String`
`getCommandName()`
Returns the identifier of the command that is being sought.
`protected String`
`getDebugName()`
Returns the debug name for this tool.
`protected EditPart`
`getSourceEditPart()`
Returns the source edit part.
`protected boolean`
`handleButtonDown(int button)`
Performs a conditional selection if needed (if right or left mouse button have been pressed) and goes into the drag state.
`protected boolean`
`handleButtonUp(int button)`
If in the drag state, the tool selects the source edit part.
`protected boolean`
`handleDoubleClick(int button)`
Calls `performOpen()` if the double click was with mouse button 1.
`protected boolean`
`handleDragStarted()`
Called only one time during a drag when the drag threshold has been exceeded.
`protected boolean`
`hasSelectionOccurred()`
Returns `true` if selection has already occured.
`protected void`
`performConditionalSelection()`
Calls `performSelection()` if the source is not selected.
`protected void`
`performDirectEdit()`
Creates a `DirectEditRequest` and sends it to a DelayedDirectEditHelper to allow the user to directly edit the edit part.
`protected void`
`performOpen()`
Creates a `SelectionRequest` and sends it to the source edit part via `EditPart.performRequest(Request)`.
`protected void`
`performSelection()`
Performs the appropriate selection action based on the selection state of the source and the modifiers (CTRL and SHIFT).
`protected void`
`resetFlags()`
Extended to reset the target lock flag.
`protected void`
`setSourceEditPart(EditPart part)`
Sets the source edit part.

### Methods inherited from class org.eclipse.gef.tools.TargetingTool

`createTargetRequest, deactivate, doAutoexpose, eraseTargetFeedback, getAutoexposeHelper, getCommand, getExclusionSet, getTargetEditPart, getTargetingConditional, getTargetRequest, handleAutoexpose, handleEnteredEditPart, handleExitingEditPart, handleHoverStop, handleInvalidInput, handleLeavingEditPart, handleViewerExited, isShowingTargetFeedback, isTargetLocked, lockTargetEditPart, resetHover, setAutoexposeHelper, setTargetEditPart, setTargetRequest, showTargetFeedback, unlockTargetEditPart, updateAutoexposeHelper, updateTargetRequest, updateTargetUnderMouse`

### Methods inherited from class org.eclipse.gef.tools.AbstractTool

`acceptArrowKey, activate, addFeedback, applyProperty, commitDrag, createOperationSet, debug, executeCommand, executeCurrentCommand, focusGained, focusLost, getCurrentCommand, getCurrentInput, getCurrentViewer, getDebugNameForState, getDefaultCursor, getDisabledCursor, getDomain, getDragMoveDelta, getLocation, getOperationSet, getStartLocation, getState, handleCommandStackChanged, handleDrag, handleDragInProgress, handleFinished, handleFocusGained, handleFocusLost, handleHover, handleKeyDown, handleKeyTraversed, handleKeyUp, handleMove, handleNativeDragFinished, handleNativeDragStarted, handleViewerEntered, isActive, isHoverActive, isInState, isViewerImportant, keyDown, keyTraversed, keyUp, mouseDoubleClick, mouseDown, mouseDrag, mouseHover, mouseMove, mouseUp, mouseWheelScrolled, movedPastThreshold, nativeDragFinished, nativeDragStarted, performViewerMouseWheel, placeMouseInViewer, reactivate, refreshCursor, releaseToolCapture, removeFeedback, setCurrentCommand, setCursor, setDefaultCursor, setDisabledCursor, setEditDomain, setHoverActive, setProperties, setStartLocation, setState, setToolCapture, setUnloadWhenFinished, setViewer, stateTransition, unloadWhenFinished, viewerEntered, viewerExited`

### Methods inherited from class org.eclipse.gef.util.FlagSupport

`getFlag, setFlag`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface org.eclipse.gef.DragTracker

`commitDrag`

### Methods inherited from interface org.eclipse.gef.Tool

`activate, deactivate, focusGained, focusLost, keyDown, keyTraversed, keyUp, mouseDoubleClick, mouseDown, mouseDrag, mouseHover, mouseMove, mouseUp, mouseWheelScrolled, nativeDragFinished, nativeDragStarted, setEditDomain, setProperties, setViewer, viewerEntered, viewerExited`

## Field Details

### FLAG_SELECTION_PERFORMED

protected static final int FLAG_SELECTION_PERFORMED
Flag to indicate selection has been performed.

See Also:
  - Constant Field Values

### MAX_FLAG

protected static final int MAX_FLAG
Max flag

See Also:
  - Constant Field Values

## Constructor Details

### SelectEditPartTracker

public SelectEditPartTracker(EditPart owner)
Constructs a new SelectEditPartTracker with the given edit part as the source.

Parameters:
  `owner` - the source edit part

## Method Details

### calculateCursor

protected Cursor calculateCursor()
Description copied from class: `AbstractTool`
Returns the appropriate cursor for the tools current state. If the tool is in its terminal state, `null` is returned. Otherwise, either the default or disabled cursor is returned, based on the existence of a current command, and whether that current command is executable.

Subclasses may override or extend this method to calculate the appropriate cursor based on other conditions.

Overrides:
  `calculateCursor` in class `AbstractTool`
Returns:
  `null` or a cursor to be displayed.
See Also:
  - `AbstractTool.calculateCursor()`

### getCommandName

protected String 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 class `AbstractTool`
Returns:
  the identifier for the command
See Also:
  - `AbstractTool.getCommandName()`

### getDebugName

protected String getDebugName()
Description copied from class: `AbstractTool`
Returns the debug name for this tool.

Overrides:
  `getDebugName` in class `AbstractTool`
Returns:
  the debug name
See Also:
  - `AbstractTool.getDebugName()`

### getSourceEditPart

protected EditPart getSourceEditPart()
Returns the source edit part.

Returns:
  the source edit part

### handleButtonDown

protected boolean handleButtonDown(int button)
Performs a conditional selection if needed (if right or left mouse button have been pressed) and goes into the drag state. If any other button has been pressed, the tool goes into the invalid state.

Overrides:
  `handleButtonDown` in class `AbstractTool`
Parameters:
  `button` - which button went down
Returns:
  `true` if the buttonDown was handled
See Also:
  - `AbstractTool.handleButtonDown(int)`

### handleButtonUp

protected boolean handleButtonUp(int button)
If in the drag state, the tool selects the source edit part. If the edit part was already selected, `performDirectEdit()` is called. If the edit part is newly selected and not completely visible, `EditPartViewer.reveal(EditPart)` is called to show the selected edit part.

Overrides:
  `handleButtonUp` in class `AbstractTool`
Parameters:
  `button` - the button being released
Returns:
  `true` if the button up was handled
See Also:
  - `AbstractTool.handleButtonUp(int)`

### handleDoubleClick

protected boolean handleDoubleClick(int button)
Calls `performOpen()` if the double click was with mouse button 1.

Overrides:
  `handleDoubleClick` in class `AbstractTool`
Parameters:
  `button` - which button was double-clicked
Returns:
  `true` if the event was handled
See Also:
  - `AbstractTool.handleDoubleClick(int)`

### handleDragStarted

protected boolean handleDragStarted()
Description copied from class: `AbstractTool`
Called only one time during a drag when the drag threshold has been exceeded. By default, nothing happens and `false` is returned. Subclasses may override to interpret the drag starting. Returning `true` indicates that the event was handled.

Overrides:
  `handleDragStarted` in class `AbstractTool`
Returns:
  true if the drag starting was handled
See Also:
  - `AbstractTool.handleDragStarted()`

### hasSelectionOccurred

protected boolean hasSelectionOccurred()
Returns `true` if selection has already occured.

Returns:
  `true` if selection has occured

### performConditionalSelection

protected void performConditionalSelection()
Calls `performSelection()` if the source is not selected. If the source is selected and there are no modifier keys pressed (i.e. the user isn't selecting multiple edit parts or deselecting edit parts), sets the direct edit flag so that when the mouse is released, a direct edit will be performed.

### performDirectEdit

protected void performDirectEdit()
Creates a `DirectEditRequest` and sends it to a DelayedDirectEditHelper to allow the user to directly edit the edit part.

### performOpen

protected void performOpen()
Creates a `SelectionRequest` and sends it to the source edit part via `EditPart.performRequest(Request)`. Possible uses are to open the selected item in another editor or replace the current editor's contents based on the selected item.

### performSelection

protected void performSelection()
Performs the appropriate selection action based on the selection state of the source and the modifiers (CTRL and SHIFT). If no modifier key is pressed, the source will be set as the only selection. If the CTRL key is pressed and the edit part is already selected, it will be deselected. If the CTRL key is pressed and the edit part is not selected, it will be appended to the selection set. If the SHIFT key is pressed, the source will be appended to the selection.

### resetFlags

protected void resetFlags()
Description copied from class: `TargetingTool`
Extended to reset the target lock flag.

Overrides:
  `resetFlags` in class `TargetingTool`
See Also:
  - `AbstractTool.resetFlags()`

### setSourceEditPart

protected void setSourceEditPart(EditPart part)
Sets the source edit part.

Parameters:
  `part` - the source edit part