Class LayoutEditPolicy
- java.lang.Object
-
- org.eclipse.gef.editpolicies.AbstractEditPolicy
-
- org.eclipse.gef.editpolicies.GraphicalEditPolicy
-
- org.eclipse.gef.editpolicies.LayoutEditPolicy
-
- All Implemented Interfaces:
EditPolicy
,RequestConstants
- Direct Known Subclasses:
ConstrainedLayoutEditPolicy
,OrderedLayoutEditPolicy
public abstract class LayoutEditPolicy extends GraphicalEditPolicy
Provides support for interacting with childrenGraphicalEditParts
with the host figure's currentLayoutManager
.LayoutEditPolicies are responsible for moving, resizing, re-parenting, and creating children. The should provide
Commands
for all of these operations. Feedback on the container can also be useful for some layouts like grids.LayoutEditPolicies will decorate the host's children with "satellite" EditPolicies. These policies are installed using the
EditPolicy.PRIMARY_DRAG_ROLE
. Simple layouts will use eitherResizableEditPolicy
orNonResizableEditPolicy
, depending on how the LayoutManager works, and/or attributes of the child EditPart.
-
-
Field Summary
-
Fields inherited from interface org.eclipse.gef.EditPolicy
COMPONENT_ROLE, CONNECTION_BENDPOINTS_ROLE, CONNECTION_ENDPOINTS_ROLE, CONNECTION_ROLE, CONTAINER_ROLE, DIRECT_EDIT_ROLE, GRAPHICAL_NODE_ROLE, LAYOUT_ROLE, NODE_ROLE, PRIMARY_DRAG_ROLE, SELECTION_FEEDBACK_ROLE, TREE_CONTAINER_ROLE
-
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 LayoutEditPolicy()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description void
activate()
Extends activate() to allow proper decoration of children.protected abstract EditPolicy
createChildEditPolicy(EditPart child)
Returns the "satellite" EditPolicy used to decorate the child.protected EditPartListener
createListener()
creates the EditPartListener for observing when children are added to the host.protected org.eclipse.draw2d.IFigure
createSizeOnDropFeedback(CreateRequest createRequest)
Override to provide custom feedback figure for the given create request.void
deactivate()
Overrides deactivate to remove the EditPartListener.protected void
decorateChild(EditPart child)
Decorates the child with aEditPolicy.PRIMARY_DRAG_ROLE
such asResizableEditPolicy
.protected void
decorateChildren()
Decorates all existing children.protected void
eraseLayoutTargetFeedback(Request request)
Erases target layout feedback.protected void
eraseSizeOnDropFeedback(Request request)
Erases size-on-drop feedback used during creation.void
eraseTargetFeedback(Request request)
Calls two more specific methods depending on the Request.protected Command
getAddCommand(Request request)
Override to return theCommand
to perform anADD
.protected Command
getCloneCommand(ChangeBoundsRequest request)
Override to contribute to clone requests.Command
getCommand(Request request)
Factors incoming requests into various specific methods.protected abstract Command
getCreateCommand(CreateRequest request)
Returns theCommand
to perform a create.protected org.eclipse.draw2d.geometry.Insets
getCreationFeedbackOffset(CreateRequest request)
Returns any insets that need to be applied to the creation feedback's bounds.protected Command
getDeleteDependantCommand(Request request)
Returns theCommand
to delete a child.protected org.eclipse.draw2d.IFigure
getLayoutContainer()
Returns the host'scontentPane
.protected org.eclipse.draw2d.geometry.Point
getLayoutOrigin()
Returns the layout's origin relative to thegetLayoutContainer()
.protected abstract Command
getMoveChildrenCommand(Request request)
Returns theCommand
to move a group of children.protected Command
getOrphanChildrenCommand(Request request)
Returns theCommand
to orphan a group of children.protected org.eclipse.draw2d.IFigure
getSizeOnDropFeedback()
Lazily creates and returns the Figure to use for size-on-drop feedback.protected org.eclipse.draw2d.IFigure
getSizeOnDropFeedback(CreateRequest createRequest)
Lazily creates and returns the Figure to use for size-on-drop feedback.EditPart
getTargetEditPart(Request request)
Returns the host if the Request is an ADD, MOVE, or CREATE.protected void
setListener(EditPartListener listener)
Sets the EditPartListener used to decorate new children.protected void
showLayoutTargetFeedback(Request request)
Shows target layout feedback.protected void
showSizeOnDropFeedback(CreateRequest request)
Shows size-on-drop feedback during creation.void
showTargetFeedback(Request request)
Factors feedback requests into two more specific methods.protected void
translateFromAbsoluteToLayoutRelative(org.eclipse.draw2d.geometry.Translatable t)
Translates aTranslatable
in absolute coordinates to be layout-relative, i.e. relative to thegetLayoutContainer()
's origin, which is obtained viagetLayoutOrigin()
.protected void
translateFromLayoutRelativeToAbsolute(org.eclipse.draw2d.geometry.Translatable t)
Translates aTranslatable
in layout-relative coordinates, i.e.protected void
undecorateChild(EditPart child)
Removes the decoration added indecorateChild(EditPart)
.protected void
undecorateChildren()
Removes all decorations added bydecorateChildren()
.-
Methods inherited from class org.eclipse.gef.editpolicies.GraphicalEditPolicy
addFeedback, getFeedbackLayer, getHostFigure, getLayer, removeFeedback
-
Methods inherited from class org.eclipse.gef.editpolicies.AbstractEditPolicy
debugFeedback, eraseSourceFeedback, getHost, setHost, showSourceFeedback, toString, understandsRequest
-
-
-
-
Method Detail
-
activate
public void activate()
Extends activate() to allow proper decoration of children.- Specified by:
activate
in interfaceEditPolicy
- Overrides:
activate
in classAbstractEditPolicy
- See Also:
EditPolicy.activate()
-
createChildEditPolicy
protected abstract EditPolicy createChildEditPolicy(EditPart child)
Returns the "satellite" EditPolicy used to decorate the child.- Parameters:
child
- the child EditPart- Returns:
- an EditPolicy to be installed as the
EditPolicy.PRIMARY_DRAG_ROLE
-
createListener
protected EditPartListener createListener()
creates the EditPartListener for observing when children are added to the host.- Returns:
- EditPartListener
-
createSizeOnDropFeedback
protected org.eclipse.draw2d.IFigure createSizeOnDropFeedback(CreateRequest createRequest)
Override to provide custom feedback figure for the given create request.- Parameters:
createRequest
- the create request- Returns:
- custom feedback figure
-
deactivate
public void deactivate()
Overrides deactivate to remove the EditPartListener.- Specified by:
deactivate
in interfaceEditPolicy
- Overrides:
deactivate
in classAbstractEditPolicy
- See Also:
EditPolicy.deactivate()
-
decorateChild
protected void decorateChild(EditPart child)
Decorates the child with aEditPolicy.PRIMARY_DRAG_ROLE
such asResizableEditPolicy
.- Parameters:
child
- the child EditPart being decorated
-
decorateChildren
protected void decorateChildren()
Decorates all existing children. This method is called on activation.
-
eraseLayoutTargetFeedback
protected void eraseLayoutTargetFeedback(Request request)
Erases target layout feedback. This method is the inverse ofshowLayoutTargetFeedback(Request)
.- Parameters:
request
- the Request
-
eraseSizeOnDropFeedback
protected void eraseSizeOnDropFeedback(Request request)
Erases size-on-drop feedback used during creation.- Parameters:
request
- the Request
-
eraseTargetFeedback
public void eraseTargetFeedback(Request request)
Calls two more specific methods depending on the Request.- Specified by:
eraseTargetFeedback
in interfaceEditPolicy
- Overrides:
eraseTargetFeedback
in classAbstractEditPolicy
- Parameters:
request
- the Request- See Also:
EditPolicy.eraseTargetFeedback(Request)
-
getAddCommand
protected Command getAddCommand(Request request)
- Parameters:
request
- the ADD Request- Returns:
- A command to perform the ADD.
-
getCloneCommand
protected Command getCloneCommand(ChangeBoundsRequest request)
Override to contribute to clone requests.- Parameters:
request
- the clone request- Returns:
- the command contribution to the clone
-
getCommand
public Command getCommand(Request request)
Factors incoming requests into various specific methods.- Specified by:
getCommand
in interfaceEditPolicy
- Overrides:
getCommand
in classAbstractEditPolicy
- Parameters:
request
- the Request- Returns:
null
or a Command contribution- See Also:
EditPolicy.getCommand(Request)
-
getCreateCommand
protected abstract Command getCreateCommand(CreateRequest request)
Returns theCommand
to perform a create.- Parameters:
request
- the CreateRequest- Returns:
- a Command to perform a create
-
getCreationFeedbackOffset
protected org.eclipse.draw2d.geometry.Insets getCreationFeedbackOffset(CreateRequest request)
Returns any insets that need to be applied to the creation feedback's bounds.- Parameters:
request
- the create request- Returns:
- insets, if necessary
-
getDeleteDependantCommand
protected Command getDeleteDependantCommand(Request request)
Returns theCommand
to delete a child. This method does not get called unless the child forwards an additional request to the container editpart.- Parameters:
request
- the Request- Returns:
- the Command to delete the child
-
getLayoutContainer
protected org.eclipse.draw2d.IFigure getLayoutContainer()
Returns the host'scontentPane
. The contentPane is the Figure which parents the childrens' figures. It is also the figure which has the LayoutManager that corresponds to this EditPolicy. All operations should be interpreted with respect to this figure.- Returns:
- the Figure that owns the corresponding
LayoutManager
-
getMoveChildrenCommand
protected abstract Command getMoveChildrenCommand(Request request)
Returns theCommand
to move a group of children.- Parameters:
request
- the Request- Returns:
- the Command to perform the move
-
getOrphanChildrenCommand
protected Command getOrphanChildrenCommand(Request request)
Returns theCommand
to orphan a group of children. The contribution to orphan might contain two parts, both of which are optional. The first part is to actually remove the children from their existing parent. Some application models will perform an orphan implicitly when the children are added to their new parent. The second part is to perform some adjustments on the remaining children. For example, a Table layout might simplify itself by collapsing any unused columns and rows.- Parameters:
request
- the Request- Returns:
null
or a Command to perform an orphan
-
getSizeOnDropFeedback
protected org.eclipse.draw2d.IFigure getSizeOnDropFeedback(CreateRequest createRequest)
Lazily creates and returns the Figure to use for size-on-drop feedback.- Parameters:
createRequest
- the createRequest- Returns:
- the size-on-drop feedback figure
-
getSizeOnDropFeedback
protected org.eclipse.draw2d.IFigure getSizeOnDropFeedback()
Lazily creates and returns the Figure to use for size-on-drop feedback.- Returns:
- the size-on-drop feedback figure
-
getTargetEditPart
public EditPart getTargetEditPart(Request request)
Returns the host if the Request is an ADD, MOVE, or CREATE.- Specified by:
getTargetEditPart
in interfaceEditPolicy
- Overrides:
getTargetEditPart
in classAbstractEditPolicy
- Parameters:
request
- the Request- Returns:
null
or the appropriate targetEditPart
- See Also:
EditPolicy.getTargetEditPart(Request)
-
setListener
protected void setListener(EditPartListener listener)
Sets the EditPartListener used to decorate new children. If the listener is currently set, it will be unhooked. If the new value is notnull
, it will be hooked.The listener must be remembered in case this EditPolicy is removed from the host and replaced with another LayoutEditPolicy.
- Parameters:
listener
-null
or the listener.
-
showLayoutTargetFeedback
protected void showLayoutTargetFeedback(Request request)
Shows target layout feedback. During moves, reparents, and creation, this method is called to allow the LayoutEditPolicy to temporarily show features of its layout that will help the User understand what will happen if the operation is performed in the current location.By default, no feedback is shown.
- Parameters:
request
- the Request- See Also:
eraseLayoutTargetFeedback(Request)
-
showSizeOnDropFeedback
protected void showSizeOnDropFeedback(CreateRequest request)
Shows size-on-drop feedback during creation.- Parameters:
request
- the CreateRequest
-
showTargetFeedback
public void showTargetFeedback(Request request)
Factors feedback requests into two more specific methods.- Specified by:
showTargetFeedback
in interfaceEditPolicy
- Overrides:
showTargetFeedback
in classAbstractEditPolicy
- Parameters:
request
- the Request- See Also:
EditPolicy.showTargetFeedback(Request)
-
undecorateChild
protected void undecorateChild(EditPart child)
Removes the decoration added indecorateChild(EditPart)
.- Parameters:
child
- the child whose decoration is being removed.
-
undecorateChildren
protected void undecorateChildren()
Removes all decorations added bydecorateChildren()
.
-
getLayoutOrigin
protected org.eclipse.draw2d.geometry.Point getLayoutOrigin()
Returns the layout's origin relative to thegetLayoutContainer()
. In other words, what Point on the parent Figure does the LayoutManager use a reference when generating the child figure's bounds from the child's constraint.By default, it is assumed that the layout manager positions children relative to the client area of the layout container. Thus, when processing Viewer-relative Points or Rectangles, the clientArea's location (top-left corner) will be subtracted from the Point/Rectangle, resulting in an offset from the LayoutOrigin.
- Returns:
- Point
- Since:
- 3.7 Moved up from ConstrainedLayoutEditPolicy
-
translateFromAbsoluteToLayoutRelative
protected void translateFromAbsoluteToLayoutRelative(org.eclipse.draw2d.geometry.Translatable t)
Translates aTranslatable
in absolute coordinates to be layout-relative, i.e. relative to thegetLayoutContainer()
's origin, which is obtained viagetLayoutOrigin()
.- Parameters:
t
- the Translatable in absolute coordinates to be translated to layout-relative coordinates.- Since:
- 3.7
-
translateFromLayoutRelativeToAbsolute
protected void translateFromLayoutRelativeToAbsolute(org.eclipse.draw2d.geometry.Translatable t)
Translates aTranslatable
in layout-relative coordinates, i.e. relative togetLayoutContainer()
's origin which is obtained viagetLayoutOrigin()
, into absolute coordinates.- Parameters:
t
- the Translatable in layout-relative coordinates to be translated into absolute coordinates.- Since:
- 3.7
-
-