Package org.eclipse.gef.tools
Class CreationTool
- java.lang.Object
-
- org.eclipse.gef.util.FlagSupport
-
- org.eclipse.gef.tools.AbstractTool
-
- org.eclipse.gef.tools.TargetingTool
-
- org.eclipse.gef.tools.CreationTool
-
- All Implemented Interfaces:
RequestConstants,Tool
public class CreationTool extends TargetingTool
The CreationTool creates newEditPartsvia aCreationFactory. If the user simply clicks on the viewer, the default sized EditPart will be created at that point. If the user clicks and drags, the created EditPart will be sized based on where the user clicked and dragged.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.eclipse.gef.tools.AbstractTool
AbstractTool.Input
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.ObjectPROPERTY_CREATION_FACTORYProperty to be used inAbstractTool.setProperties(java.util.Map)forsetFactory(CreationFactory).-
Fields inherited from class org.eclipse.gef.tools.TargetingTool
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 CreationTool()Default constructor.CreationTool(CreationFactory aFactory)Constructs a new CreationTool with the given factory.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidapplyProperty(java.lang.Object key, java.lang.Object value)This method is invoked fromAbstractTool.setProperties(Map).protected CursorcalculateCursor()Returns the appropriate cursor for the tools current state.protected RequestcreateTargetRequest()Creates aCreateRequestand sets this tool's factory on the request.voiddeactivate()Deactivates the tool.protected voidenforceConstraintsForSizeOnDropCreate(CreateRequest request)Ensures size constraints (by default minimum and maximum) are respected by the given request.protected java.lang.StringgetCommandName()Returns the identifier of the command that is being sought.protected CreateRequestgetCreateRequest()Cast the target request to a CreateRequest and returns it.protected java.lang.StringgetDebugName()Returns the debug name for this tool.protected CreationFactorygetFactory()Returns the creation factory used to create the new EditParts.protected org.eclipse.draw2d.geometry.DimensiongetMaximumSizeFor(CreateRequest request)Determines the maximum size for CreateRequest's size on drop.protected org.eclipse.draw2d.geometry.DimensiongetMinimumSizeFor(CreateRequest request)Determines the minimum size for CreateRequest's size on drop.protected booleanhandleButtonDown(int button)The creation tool only works by clicking mouse button 1 (the left mouse button in a right-handed world).protected booleanhandleButtonUp(int button)If the tool is currently in a drag or drag-in-progress state, it goes into the terminal state, performs some cleanup (erasing feedback, unlocking target edit part), and then callsperformCreation(int).protected booleanhandleDragInProgress()Updates the request, sets the current command, and asks to show feedback.protected booleanhandleDragStarted()Called only one time during a drag when the drag threshold has been exceeded.protected booleanhandleFocusLost()If the user is in the middle of creating a new edit part, the tool erases feedback and goes into the invalid state when focus is lost.protected booleanhandleHover()Handles high-level processing of a mouse hover event.protected booleanhandleMove()Updates the request and mouse target, gets the current command and asks to show feedback.protected voidperformCreation(int button)Executes the current command and selects the newly created object.voidsetFactory(CreationFactory factory)Sets the creation factory used to create the new edit parts.protected voidupdateTargetRequest()Sets the location (and size if the user is performing size-on-drop) of the request.-
Methods inherited from class org.eclipse.gef.tools.TargetingTool
doAutoexpose, eraseTargetFeedback, getAutoexposeHelper, getCommand, getExclusionSet, getTargetEditPart, getTargetingConditional, getTargetRequest, handleAutoexpose, handleEnteredEditPart, handleExitingEditPart, handleHoverStop, handleInvalidInput, handleLeavingEditPart, handleViewerExited, isShowingTargetFeedback, isTargetLocked, lockTargetEditPart, resetFlags, resetHover, setAutoexposeHelper, setTargetEditPart, setTargetRequest, showTargetFeedback, unlockTargetEditPart, updateAutoexposeHelper, updateTargetUnderMouse
-
Methods inherited from class org.eclipse.gef.tools.AbstractTool
acceptArrowKey, activate, addFeedback, commitDrag, createOperationSet, debug, executeCommand, executeCurrentCommand, focusGained, focusLost, getCurrentCommand, getCurrentInput, getCurrentViewer, getDebugNameForState, getDefaultCursor, getDisabledCursor, getDomain, getDragMoveDelta, getLocation, getOperationSet, getStartLocation, getState, handleCommandStackChanged, handleDoubleClick, handleDrag, handleFinished, handleFocusGained, handleKeyDown, handleKeyTraversed, handleKeyUp, 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
-
-
-
-
Field Detail
-
PROPERTY_CREATION_FACTORY
public static final java.lang.Object PROPERTY_CREATION_FACTORY
Property to be used inAbstractTool.setProperties(java.util.Map)forsetFactory(CreationFactory).
-
-
Constructor Detail
-
CreationTool
public CreationTool()
Default constructor. Sets the default and disabled cursors.
-
CreationTool
public CreationTool(CreationFactory aFactory)
Constructs a new CreationTool with the given factory.- Parameters:
aFactory- the creation factory
-
-
Method Detail
-
applyProperty
protected void applyProperty(java.lang.Object key, java.lang.Object value)Description copied from class:AbstractToolThis method is invoked fromAbstractTool.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.- Overrides:
applyPropertyin classAbstractTool- Parameters:
key- the key; may benullvalue- the new value- See Also:
AbstractTool.applyProperty(java.lang.Object, java.lang.Object)
-
calculateCursor
protected Cursor calculateCursor()
Description copied from class:AbstractToolReturns the appropriate cursor for the tools current state. If the tool is in its terminal state,nullis 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:
calculateCursorin classAbstractTool- Returns:
nullor a cursor to be displayed.- See Also:
AbstractTool.calculateCursor()
-
createTargetRequest
protected Request createTargetRequest()
Creates aCreateRequestand sets this tool's factory on the request.- Overrides:
createTargetRequestin classTargetingTool- Returns:
- the new target request
- See Also:
TargetingTool.createTargetRequest()
-
deactivate
public void deactivate()
Description copied from class:AbstractToolDeactivates the tool. This method is called whenever the user switches to another tool. Use this method to do some clean-up when the tool is switched. The abstract tool allows cursors for viewers to be changed. When the tool is deactivated it must revert to normal the cursor of the last tool it changed.- Specified by:
deactivatein interfaceTool- Overrides:
deactivatein classTargetingTool- See Also:
Tool.deactivate()
-
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.- Specified by:
getCommandNamein classAbstractTool- Returns:
- the identifier for the command
- See Also:
AbstractTool.getCommandName()
-
getCreateRequest
protected CreateRequest getCreateRequest()
Cast the target request to a CreateRequest and returns it.- Returns:
- the target request as a CreateRequest
- See Also:
TargetingTool.getTargetRequest()
-
getDebugName
protected java.lang.String getDebugName()
Description copied from class:AbstractToolReturns the debug name for this tool.- Overrides:
getDebugNamein classAbstractTool- Returns:
- the debug name
- See Also:
AbstractTool.getDebugName()
-
getFactory
protected CreationFactory getFactory()
Returns the creation factory used to create the new EditParts.- Returns:
- the creation factory
-
handleButtonDown
protected boolean handleButtonDown(int button)
The creation tool only works by clicking mouse button 1 (the left mouse button in a right-handed world). If any other button is pressed, the tool goes into an invalid state. Otherwise, it goes into the drag state, updates the request's location and callsTargetingTool.lockTargetEditPart(EditPart)with the edit part that was just clicked on.- Overrides:
handleButtonDownin classAbstractTool- Parameters:
button- which button went down- Returns:
trueif the buttonDown was handled- See Also:
AbstractTool.handleButtonDown(int)
-
handleButtonUp
protected boolean handleButtonUp(int button)
If the tool is currently in a drag or drag-in-progress state, it goes into the terminal state, performs some cleanup (erasing feedback, unlocking target edit part), and then callsperformCreation(int).- Overrides:
handleButtonUpin classAbstractTool- Parameters:
button- the button being released- Returns:
trueif the button up was handled- See Also:
AbstractTool.handleButtonUp(int)
-
handleDragInProgress
protected boolean handleDragInProgress()
Updates the request, sets the current command, and asks to show feedback.- Overrides:
handleDragInProgressin classAbstractTool- Returns:
trueif the drag was handled- See Also:
AbstractTool.handleDragInProgress()
-
handleDragStarted
protected boolean handleDragStarted()
Description copied from class:AbstractToolCalled only one time during a drag when the drag threshold has been exceeded. By default, nothing happens andfalseis returned. Subclasses may override to interpret the drag starting. Returningtrueindicates that the event was handled.- Overrides:
handleDragStartedin classAbstractTool- Returns:
- true if the drag starting was handled
- See Also:
AbstractTool.handleDragStarted()
-
handleFocusLost
protected boolean handleFocusLost()
If the user is in the middle of creating a new edit part, the tool erases feedback and goes into the invalid state when focus is lost.- Overrides:
handleFocusLostin classAbstractTool- Returns:
trueif the event was handled- See Also:
AbstractTool.handleFocusLost()
-
handleHover
protected boolean handleHover()
Description copied from class:AbstractToolHandles high-level processing of a mouse hover event. By default, nothing happens andfalseis returned. Subclasses may override this method to interpret the hover. Returntrueto indicate that the hover was handled.- Overrides:
handleHoverin classAbstractTool- Returns:
trueif the hover was handled- See Also:
AbstractTool.handleHover()
-
handleMove
protected boolean handleMove()
Updates the request and mouse target, gets the current command and asks to show feedback.- Overrides:
handleMovein classAbstractTool- Returns:
trueif the mouse move was handled- See Also:
AbstractTool.handleMove()
-
performCreation
protected void performCreation(int button)
Executes the current command and selects the newly created object. The button that was released to cause this creation is passed in, but sincehandleButtonDown(int)goes into the invalid state if the button pressed is not button 1, this will always be button 1.- Parameters:
button- the button that was pressed
-
setFactory
public void setFactory(CreationFactory factory)
Sets the creation factory used to create the new edit parts.- Parameters:
factory- the factory
-
updateTargetRequest
protected void updateTargetRequest()
Sets the location (and size if the user is performing size-on-drop) of the request.- Overrides:
updateTargetRequestin classTargetingTool- See Also:
TargetingTool.updateTargetRequest()
-
enforceConstraintsForSizeOnDropCreate
protected void enforceConstraintsForSizeOnDropCreate(CreateRequest request)
Ensures size constraints (by default minimum and maximum) are respected by the given request. May be overwritten by clients to enforce additional constraints.- Since:
- 3.7
-
getMaximumSizeFor
protected org.eclipse.draw2d.geometry.Dimension getMaximumSizeFor(CreateRequest request)
Determines the maximum size for CreateRequest's size on drop. It is called fromenforceConstraintsForSizeOnDropCreate(CreateRequest)during creation. By default, a largeDimensionis returned.- Parameters:
request- the request.- Returns:
- the minimum size
- Since:
- 3.7
-
getMinimumSizeFor
protected org.eclipse.draw2d.geometry.Dimension getMinimumSizeFor(CreateRequest request)
Determines the minimum size for CreateRequest's size on drop. It is called fromenforceConstraintsForSizeOnDropCreate(CreateRequest)during creation. By default, a smallDimensionis returned.- Parameters:
request- the request.- Returns:
- the minimum size
- Since:
- 3.7
-
-