Package org.eclipse.gef.tools

# Class DragEditPartsTracker

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

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

public class DragEditPartsTracker extends SelectEditPartTracker
A DragTracker that moves `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`
`MAX_FLAG`
Max flag

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

`FLAG_SELECTION_PERFORMED`

### 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
`DragEditPartsTracker(EditPart sourceEditPart)`
Constructs a new DragEditPartsTracker with the given source edit part.

## Method Summary

Modifier and Type
Method
Description
`void`
`commitDrag()`
Erases feedback and calls `performDrag()`.
`protected List`
`createOperationSet()`
Returns a List of top-level edit parts excluding dependants (by calling `ToolUtilities.getSelectionWithoutDependants(EditPartViewer)` that understand the current target request (by calling `ToolUtilities.filterEditPartsUnderstanding(List, Request)`.
`protected Request`
`createTargetRequest()`
Creates a `ChangeBoundsRequest`.
`void`
`deactivate()`
Erases source feedback and sets the autoexpose helper to `null`.
`protected void`
`eraseSourceFeedback()`
Asks the edit parts in the `operation set` to erase their source feedback.
`protected Command`
`getCommand()`
Asks each edit part in the `operation set` to contribute to a `CompoundCommand` after first setting the request type to either `RequestConstants.REQ_MOVE` or `RequestConstants.REQ_ORPHAN`, depending on the result of `isMove()`.
`protected String`
`getCommandName()`
Returns the identifier of the command that is being sought.
`protected String`
`getDebugName()`
Returns the debug name for this tool.
`protected Cursor`
`getDefaultCursor()`
Returns the cursor used under normal conditions.
`protected Collection`
`getExclusionSet()`
Returns a list of all the edit parts in the `operation set`, plus the `ConnectionLayer`.
`protected org.eclipse.draw2d.geometry.PrecisionRectangle`
`getOperationSetBounds()`
Returns the unioned bounds of the `operation set edit parts'` figures in absolute coordinates.
`protected SnapToHelper`
`getSnapToHelper()`
Returns the `SnapToHelper` used by this `DragEditPartsTracker`.
`protected org.eclipse.draw2d.geometry.PrecisionRectangle`
`getSourceBounds()`
Returns the bounds of the `source edit part's` figure in absolute coordinates.
`protected void`
`handleAutoexpose()`
This method is called whenever an autoexpose occurs.
`protected boolean`
`handleButtonUp(int button)`
Erases feedback and calls `performDrag()`.
`protected boolean`
`handleDragInProgress()`
Updates the target request and mouse target, asks to show feedback, and sets the current command.
`protected boolean`
`handleHover()`
Calls `TargetingTool.updateAutoexposeHelper()` if a drag is in progress.
`protected boolean`
`handleInvalidInput()`
Erases source feedback.
`protected boolean`
`handleKeyDown(KeyEvent e)`
Processes arrow keys used to move edit parts.
`protected boolean`
`handleKeyUp(KeyEvent e)`
Interprets and processes clone deactivation, constrained move deactivation, and accessibility navigation reset.
`protected boolean`
`isCloneActive()`
Returns true if the current drag is a clone operation.
`protected boolean`
`isMove()`
Returns `true` if the source edit part is being moved within its parent.
`protected void`
`performDrag()`
Calls `AbstractTool.executeCurrentCommand()`.
`protected void`
`repairStartLocation()`
If auto scroll (also called auto expose) is being performed, the start location moves during the scroll.
`protected void`
`setAutoexposeHelper(AutoexposeHelper helper)`
Sets the active autoexpose helper to the given helper, or `null`.
`protected void`
`setCloneActive(boolean cloneActive)`
Enables cloning if the value is true.
`protected void`
`setState(int state)`
Extended to activate cloning and to update the captured source dimensions when applicable.
`protected void`
`setTargetEditPart(EditPart editpart)`
Extended to update the current snap-to strategy.
`protected void`
`showSourceFeedback()`
Asks the edit parts in the `operation set` to show source feedback.
`protected void`
`snapPoint(ChangeBoundsRequest request)`
This method can be overridden by clients to customize the snapping behavior.
`protected void`
`updateTargetRequest()`
Calls `repairStartLocation()` in case auto scroll is being performed.

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

`calculateCursor, getSourceEditPart, handleButtonDown, handleDoubleClick, handleDragStarted, hasSelectionOccurred, performConditionalSelection, performDirectEdit, performOpen, performSelection, resetFlags, setSourceEditPart`

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

`doAutoexpose, eraseTargetFeedback, getAutoexposeHelper, getTargetEditPart, getTargetingConditional, getTargetRequest, handleEnteredEditPart, handleExitingEditPart, handleHoverStop, handleLeavingEditPart, handleViewerExited, isShowingTargetFeedback, isTargetLocked, lockTargetEditPart, resetHover, setTargetRequest, showTargetFeedback, unlockTargetEditPart, updateAutoexposeHelper, updateTargetUnderMouse`

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

`acceptArrowKey, activate, addFeedback, applyProperty, debug, executeCommand, executeCurrentCommand, focusGained, focusLost, getCurrentCommand, getCurrentInput, getCurrentViewer, getDebugNameForState, getDisabledCursor, getDomain, getDragMoveDelta, getLocation, getOperationSet, getStartLocation, getState, handleCommandStackChanged, handleDrag, handleFinished, handleFocusGained, handleFocusLost, handleKeyTraversed, 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, 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.Tool

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

## Field Details

### MAX_FLAG

protected static final int MAX_FLAG
Max flag

See Also:
  - Constant Field Values

## Constructor Details

### DragEditPartsTracker

public DragEditPartsTracker(EditPart sourceEditPart)
Constructs a new DragEditPartsTracker with the given source edit part.

Parameters:
  `sourceEditPart` - the source edit part

## Method Details

### getDefaultCursor

protected Cursor getDefaultCursor()
Returns the cursor used under normal conditions.

Overrides:
  `getDefaultCursor` in class `AbstractTool`
Returns:
  the default cursor
See Also:
  - `AbstractTool.setDefaultCursor(Cursor)`

### getSourceBounds

protected org.eclipse.draw2d.geometry.PrecisionRectangle getSourceBounds()
Returns the bounds of the `source edit part's` figure in absolute coordinates. In case the source figure implements `HandleBounds` the `handle bounds` are returned in absolute coordinates, other wise the `figure bounds`.

Returns:
  The bounds of the source figure in absolute coordinates.
Since:
  3.11

### getOperationSetBounds

protected org.eclipse.draw2d.geometry.PrecisionRectangle getOperationSetBounds()
Returns the unioned bounds of the `operation set edit parts'` figures in absolute coordinates. In case the figures implement `HandleBounds` their `handle bounds` will be used, otherwise their `figure bounds`.

Returns:
  The unioned bounds of the operation set figures in absolute coordinates.
Since:
  3.11

### getSnapToHelper

protected SnapToHelper getSnapToHelper()
Returns the `SnapToHelper` used by this `DragEditPartsTracker`.

Returns:
  The `SnapToHelper` used by this `DragEditPartsTracker`.
Since:
  3.11

### commitDrag

public void commitDrag()
Erases feedback and calls `performDrag()`. Sets the state to terminal.

Specified by:
  `commitDrag` in interface `DragTracker`
Overrides:
  `commitDrag` in class `AbstractTool`
See Also:
  - `AbstractTool.commitDrag()`

### createOperationSet

protected List createOperationSet()
Returns a List of top-level edit parts excluding dependants (by calling `ToolUtilities.getSelectionWithoutDependants(EditPartViewer)` that understand the current target request (by calling `ToolUtilities.filterEditPartsUnderstanding(List, Request)`.

Overrides:
  `createOperationSet` in class `AbstractTool`
Returns:
  a list of editparts being operated on
See Also:
  - `AbstractTool.createOperationSet()`

### createTargetRequest

protected Request createTargetRequest()
Creates a `ChangeBoundsRequest`. By default, the type is `RequestConstants.REQ_MOVE`. Later on when the edit parts are asked to contribute to the overall command, the request type will be either `RequestConstants.REQ_MOVE` or `RequestConstants.REQ_ORPHAN`, depending on the result of `isMove()`.

Overrides:
  `createTargetRequest` in class `TargetingTool`
Returns:
  the new target request
See Also:
  - `TargetingTool.createTargetRequest()`

### deactivate

public void deactivate()
Erases source feedback and sets the autoexpose helper to `null`.

Specified by:
  `deactivate` in interface `Tool`
Overrides:
  `deactivate` in class `TargetingTool`
See Also:
  - `Tool.deactivate()`

### eraseSourceFeedback

protected void eraseSourceFeedback()
Asks the edit parts in the `operation set` to erase their source feedback.

### getCommand

protected Command getCommand()
Asks each edit part in the `operation set` to contribute to a `CompoundCommand` after first setting the request type to either `RequestConstants.REQ_MOVE` or `RequestConstants.REQ_ORPHAN`, depending on the result of `isMove()`.

Overrides:
  `getCommand` in class `TargetingTool`
Returns:
  a newly obtained command
See Also:
  - `AbstractTool.getCommand()`

### 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.

Overrides:
  `getCommandName` in class `SelectEditPartTracker`
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 `SelectEditPartTracker`
Returns:
  the debug name
See Also:
  - `AbstractTool.getDebugName()`

### getExclusionSet

protected Collection getExclusionSet()
Returns a list of all the edit parts in the `operation set`, plus the `ConnectionLayer`.

Overrides:
  `getExclusionSet` in class `TargetingTool`
Returns:
  the list of objects to be excluded as targets
See Also:
  - `TargetingTool.getExclusionSet()`

### handleAutoexpose

protected void handleAutoexpose()
Description copied from class: `TargetingTool`
This method is called whenever an autoexpose occurs. When an autoexpose occurs, it is possible that everything in the viewer has moved a little. Therefore, by default, `handleMove()` is called to simulate the mouse moving even though it didn't.

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

### handleButtonUp

protected boolean handleButtonUp(int button)
Erases feedback and calls `performDrag()`.

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

### handleDragInProgress

protected boolean handleDragInProgress()
Updates the target request and mouse target, asks to show feedback, and sets the current command.

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

### handleHover

protected boolean handleHover()
Calls `TargetingTool.updateAutoexposeHelper()` if a drag is in progress.

Overrides:
  `handleHover` in class `AbstractTool`
Returns:
  `true` if the hover was handled
See Also:
  - `AbstractTool.handleHover()`

### handleInvalidInput

protected boolean handleInvalidInput()
Erases source feedback.

Overrides:
  `handleInvalidInput` in class `TargetingTool`
Returns:
  `true`
See Also:
  - `TargetingTool.handleInvalidInput()`

### handleKeyDown

protected boolean handleKeyDown(KeyEvent e)
Processes arrow keys used to move edit parts.

Overrides:
  `handleKeyDown` in class `AbstractTool`
Parameters:
  `e` - the key event
Returns:
  `true` if the key down was handled.
See Also:
  - `AbstractTool.handleKeyDown(org.eclipse.swt.events.KeyEvent)`

### handleKeyUp

protected boolean handleKeyUp(KeyEvent e)
Interprets and processes clone deactivation, constrained move deactivation, and accessibility navigation reset.

Overrides:
  `handleKeyUp` in class `AbstractTool`
Parameters:
  `e` - the key event
Returns:
  `true` if the event was handled
See Also:
  - `AbstractTool.handleKeyUp(org.eclipse.swt.events.KeyEvent)`

### isCloneActive

protected boolean isCloneActive()
Returns true if the current drag is a clone operation.

Returns:
  true if cloning is enabled and is currently active.

### isMove

protected boolean isMove()
Returns `true` if the source edit part is being moved within its parent. If the source edit part is being moved to another parent, this returns `false`.

Returns:
  `true` if the source edit part is not being reparented

### performDrag

protected void performDrag()
Calls `AbstractTool.executeCurrentCommand()`.

### repairStartLocation

protected void repairStartLocation()
If auto scroll (also called auto expose) is being performed, the start location moves during the scroll. This method updates that location.

### setAutoexposeHelper

protected void setAutoexposeHelper(AutoexposeHelper helper)
Description copied from class: `TargetingTool`
Sets the active autoexpose helper to the given helper, or `null`. If the helper is not `null`, a runnable is queued on the event thread that will trigger a subsequent `TargetingTool.doAutoexpose()`. The helper is typically updated only on a hover event.

Overrides:
  `setAutoexposeHelper` in class `TargetingTool`
Parameters:
  `helper` - the new autoexpose helper or `null`
See Also:
  - `TargetingTool.setAutoexposeHelper(org.eclipse.gef.AutoexposeHelper)`

### setCloneActive

protected void setCloneActive(boolean cloneActive)
Enables cloning if the value is true.

Parameters:
  `cloneActive` - `true` if cloning should be active

### setTargetEditPart

protected void setTargetEditPart(EditPart editpart)
Extended to update the current snap-to strategy.

Overrides:
  `setTargetEditPart` in class `TargetingTool`
Parameters:
  `editpart` - the new target
See Also:
  - `TargetingTool.setTargetEditPart(org.eclipse.gef.EditPart)`

### showSourceFeedback

protected void showSourceFeedback()
Asks the edit parts in the `operation set` to show source feedback.

### setState

protected void setState(int state)
Extended to activate cloning and to update the captured source dimensions when applicable.

Overrides:
  `setState` in class `AbstractTool`
Parameters:
  `state` - the new state
See Also:
  - `AbstractTool.setState(int)`

### updateTargetRequest

protected void updateTargetRequest()
Calls `repairStartLocation()` in case auto scroll is being performed. Updates the request with the current `operation set`, move delta, location and type.

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

### snapPoint

protected void snapPoint(ChangeBoundsRequest request)
This method can be overridden by clients to customize the snapping behavior.

Parameters:
  `request` - the `ChangeBoundsRequest` from which the move delta can be extracted and updated
Since:
  3.4