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 movesEditParts.
-
-
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 intMAX_FLAGMax 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
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidcommitDrag()Erases feedback and callsperformDrag().protected java.util.ListcreateOperationSet()Returns a List of top-level edit parts excluding dependants (by callingToolUtilities.getSelectionWithoutDependants(EditPartViewer)that understand the current target request (by callingToolUtilities.filterEditPartsUnderstanding(List, Request).protected RequestcreateTargetRequest()Creates aChangeBoundsRequest.voiddeactivate()Erases source feedback and sets the autoexpose helper tonull.protected voideraseSourceFeedback()Asks the edit parts in theoperation setto erase their source feedback.protected CommandgetCommand()Asks each edit part in theoperation setto contribute to aCompoundCommandafter first setting the request type to eitherRequestConstants.REQ_MOVEorRequestConstants.REQ_ORPHAN, depending on the result ofisMove().protected java.lang.StringgetCommandName()Returns the identifier of the command that is being sought.protected java.lang.StringgetDebugName()Returns the debug name for this tool.protected CursorgetDefaultCursor()Returns the cursor used under normal conditions.protected java.util.CollectiongetExclusionSet()Returns a list of all the edit parts in theoperation set, plus theConnectionLayer.protected org.eclipse.draw2d.geometry.PrecisionRectanglegetOperationSetBounds()Returns the unioned bounds of theoperation set edit parts'figures in absolute coordinates.protected SnapToHelpergetSnapToHelper()Returns theSnapToHelperused by thisDragEditPartsTracker.protected org.eclipse.draw2d.geometry.PrecisionRectanglegetSourceBounds()Returns the bounds of thesource edit part'sfigure in absolute coordinates.protected voidhandleAutoexpose()This method is called whenever an autoexpose occurs.protected booleanhandleButtonUp(int button)Erases feedback and callsperformDrag().protected booleanhandleDragInProgress()Updates the target request and mouse target, asks to show feedback, and sets the current command.protected booleanhandleHover()CallsTargetingTool.updateAutoexposeHelper()if a drag is in progress.protected booleanhandleInvalidInput()Erases source feedback.protected booleanhandleKeyDown(KeyEvent e)Processes arrow keys used to move edit parts.protected booleanhandleKeyUp(KeyEvent e)Interprets and processes clone deactivation, constrained move deactivation, and accessibility navigation reset.protected booleanisCloneActive()Returns true if the current drag is a clone operation.protected booleanisMove()Returnstrueif the source edit part is being moved within its parent.protected voidperformDrag()protected voidrepairStartLocation()If auto scroll (also called auto expose) is being performed, the start location moves during the scroll.protected voidsetAutoexposeHelper(AutoexposeHelper helper)Sets the active autoexpose helper to the given helper, ornull.protected voidsetCloneActive(boolean cloneActive)Enables cloning if the value is true.protected voidsetState(int state)Extended to activate cloning and to update the captured source dimensions when applicable.protected voidsetTargetEditPart(EditPart editpart)Extended to update the current snap-to strategy.protected voidshowSourceFeedback()Asks the edit parts in theoperation setto show source feedback.protected voidsnapPoint(ChangeBoundsRequest request)This method can be overridden by clients to customize the snapping behavior.protected voidupdateTargetRequest()CallsrepairStartLocation()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 Detail
-
MAX_FLAG
protected static final int MAX_FLAG
Max flag- See Also:
- Constant Field Values
-
-
Constructor Detail
-
DragEditPartsTracker
public DragEditPartsTracker(EditPart sourceEditPart)
Constructs a new DragEditPartsTracker with the given source edit part.- Parameters:
sourceEditPart- the source edit part
-
-
Method Detail
-
getDefaultCursor
protected Cursor getDefaultCursor()
Returns the cursor used under normal conditions.- Overrides:
getDefaultCursorin classAbstractTool- Returns:
- the default cursor
- See Also:
AbstractTool.setDefaultCursor(Cursor)
-
getSourceBounds
protected org.eclipse.draw2d.geometry.PrecisionRectangle getSourceBounds()
Returns the bounds of thesource edit part'sfigure in absolute coordinates. In case the source figure implementsHandleBoundsthehandle boundsare returned in absolute coordinates, other wise thefigure 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 theoperation set edit parts'figures in absolute coordinates. In case the figures implementHandleBoundstheirhandle boundswill be used, otherwise theirfigure bounds.- Returns:
- The unioned bounds of the operation set figures in absolute coordinates.
- Since:
- 3.11
-
getSnapToHelper
protected SnapToHelper getSnapToHelper()
Returns theSnapToHelperused by thisDragEditPartsTracker.- Returns:
- The
SnapToHelperused by thisDragEditPartsTracker. - Since:
- 3.11
-
commitDrag
public void commitDrag()
Erases feedback and callsperformDrag(). Sets the state to terminal.- Specified by:
commitDragin interfaceDragTracker- Overrides:
commitDragin classAbstractTool- See Also:
AbstractTool.commitDrag()
-
createOperationSet
protected java.util.List createOperationSet()
Returns a List of top-level edit parts excluding dependants (by callingToolUtilities.getSelectionWithoutDependants(EditPartViewer)that understand the current target request (by callingToolUtilities.filterEditPartsUnderstanding(List, Request).- Overrides:
createOperationSetin classAbstractTool- Returns:
- a list of editparts being operated on
- See Also:
AbstractTool.createOperationSet()
-
createTargetRequest
protected Request createTargetRequest()
Creates aChangeBoundsRequest. By default, the type isRequestConstants.REQ_MOVE. Later on when the edit parts are asked to contribute to the overall command, the request type will be eitherRequestConstants.REQ_MOVEorRequestConstants.REQ_ORPHAN, depending on the result ofisMove().- Overrides:
createTargetRequestin classTargetingTool- Returns:
- the new target request
- See Also:
TargetingTool.createTargetRequest()
-
deactivate
public void deactivate()
Erases source feedback and sets the autoexpose helper tonull.- Specified by:
deactivatein interfaceTool- Overrides:
deactivatein classTargetingTool- See Also:
Tool.deactivate()
-
eraseSourceFeedback
protected void eraseSourceFeedback()
Asks the edit parts in theoperation setto erase their source feedback.
-
getCommand
protected Command getCommand()
Asks each edit part in theoperation setto contribute to aCompoundCommandafter first setting the request type to eitherRequestConstants.REQ_MOVEorRequestConstants.REQ_ORPHAN, depending on the result ofisMove().- Overrides:
getCommandin classTargetingTool- Returns:
- a newly obtained command
- See Also:
AbstractTool.getCommand()
-
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.- Overrides:
getCommandNamein classSelectEditPartTracker- Returns:
- the identifier for the command
- See Also:
AbstractTool.getCommandName()
-
getDebugName
protected java.lang.String getDebugName()
Description copied from class:AbstractToolReturns the debug name for this tool.- Overrides:
getDebugNamein classSelectEditPartTracker- Returns:
- the debug name
- See Also:
AbstractTool.getDebugName()
-
getExclusionSet
protected java.util.Collection getExclusionSet()
Returns a list of all the edit parts in theoperation set, plus theConnectionLayer.- Overrides:
getExclusionSetin classTargetingTool- Returns:
- the list of objects to be excluded as targets
- See Also:
TargetingTool.getExclusionSet()
-
handleAutoexpose
protected void handleAutoexpose()
Description copied from class:TargetingToolThis 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:
handleAutoexposein classTargetingTool- See Also:
TargetingTool.handleAutoexpose()
-
handleButtonUp
protected boolean handleButtonUp(int button)
Erases feedback and callsperformDrag().- Overrides:
handleButtonUpin classSelectEditPartTracker- Parameters:
button- the button being released- Returns:
trueif 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:
handleDragInProgressin classAbstractTool- Returns:
trueif the drag was handled- See Also:
AbstractTool.handleDragInProgress()
-
handleHover
protected boolean handleHover()
CallsTargetingTool.updateAutoexposeHelper()if a drag is in progress.- Overrides:
handleHoverin classAbstractTool- Returns:
trueif the hover was handled- See Also:
AbstractTool.handleHover()
-
handleInvalidInput
protected boolean handleInvalidInput()
Erases source feedback.- Overrides:
handleInvalidInputin classTargetingTool- Returns:
true- See Also:
TargetingTool.handleInvalidInput()
-
handleKeyDown
protected boolean handleKeyDown(KeyEvent e)
Processes arrow keys used to move edit parts.- Overrides:
handleKeyDownin classAbstractTool- Parameters:
e- the key event- Returns:
trueif 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:
handleKeyUpin classAbstractTool- Parameters:
e- the key event- Returns:
trueif 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()
Returnstrueif the source edit part is being moved within its parent. If the source edit part is being moved to another parent, this returnsfalse.- Returns:
trueif the source edit part is not being reparented
-
performDrag
protected void performDrag()
-
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:TargetingToolSets the active autoexpose helper to the given helper, ornull. If the helper is notnull, a runnable is queued on the event thread that will trigger a subsequentTargetingTool.doAutoexpose(). The helper is typically updated only on a hover event.- Overrides:
setAutoexposeHelperin classTargetingTool- Parameters:
helper- the new autoexpose helper ornull- See Also:
TargetingTool.setAutoexposeHelper(org.eclipse.gef.AutoexposeHelper)
-
setCloneActive
protected void setCloneActive(boolean cloneActive)
Enables cloning if the value is true.- Parameters:
cloneActive-trueif cloning should be active
-
setTargetEditPart
protected void setTargetEditPart(EditPart editpart)
Extended to update the current snap-to strategy.- Overrides:
setTargetEditPartin classTargetingTool- Parameters:
editpart- the new target- See Also:
TargetingTool.setTargetEditPart(org.eclipse.gef.EditPart)
-
showSourceFeedback
protected void showSourceFeedback()
Asks the edit parts in theoperation setto show source feedback.
-
setState
protected void setState(int state)
Extended to activate cloning and to update the captured source dimensions when applicable.- Overrides:
setStatein classAbstractTool- Parameters:
state- the new state- See Also:
AbstractTool.setState(int)
-
updateTargetRequest
protected void updateTargetRequest()
CallsrepairStartLocation()in case auto scroll is being performed. Updates the request with the currentoperation set, move delta, location and type.- Overrides:
updateTargetRequestin classTargetingTool- See Also:
TargetingTool.updateTargetRequest()
-
snapPoint
protected void snapPoint(ChangeBoundsRequest request)
This method can be overridden by clients to customize the snapping behavior.- Parameters:
request- theChangeBoundsRequestfrom which the move delta can be extracted and updated- Since:
- 3.4
-
-