Class LayoutEditPolicy
- All Implemented Interfaces:
EditPolicy
,RequestConstants
- Direct Known Subclasses:
ConstrainedLayoutEditPolicy
,OrderedLayoutEditPolicy
GraphicalEditParts
with the host figure's current
LayoutManager
.
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 either
ResizableEditPolicy
or NonResizableEditPolicy
, 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 -
Method Summary
Modifier and TypeMethodDescriptionvoid
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
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
Overrides deactivate to remove the EditPartListener.protected void
decorateChild
(EditPart child) Decorates the child with aEditPolicy.PRIMARY_DRAG_ROLE
such asResizableEditPolicy
.protected void
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.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
Returns the host'scontentPane
.protected org.eclipse.draw2d.geometry.Point
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
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.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
Removes all decorations added bydecorateChildren()
.Methods inherited from class org.eclipse.gef.editpolicies.GraphicalEditPolicy
addFeedback, getFeedbackLayer, getHost, getHostFigure, getLayer, removeFeedback
Methods inherited from class org.eclipse.gef.editpolicies.AbstractEditPolicy
debugFeedback, eraseSourceFeedback, setHost, showSourceFeedback, toString, understandsRequest
-
Constructor Details
-
LayoutEditPolicy
public LayoutEditPolicy()
-
-
Method Details
-
activate
public void activate()Extends activate() to allow proper decoration of children.- Specified by:
activate
in interfaceEditPolicy
- Overrides:
activate
in classAbstractEditPolicy
- See Also:
-
createChildEditPolicy
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
creates the EditPartListener for observing when children are added to the host.- Returns:
- EditPartListener
-
createSizeOnDropFeedback
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:
-
decorateChild
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
Erases target layout feedback. This method is the inverse ofshowLayoutTargetFeedback(Request)
.- Parameters:
request
- the Request
-
eraseSizeOnDropFeedback
Erases size-on-drop feedback used during creation.- Parameters:
request
- the Request
-
eraseTargetFeedback
Calls two more specific methods depending on the Request.- Specified by:
eraseTargetFeedback
in interfaceEditPolicy
- Overrides:
eraseTargetFeedback
in classAbstractEditPolicy
- Parameters:
request
- the Request- See Also:
-
getAddCommand
- Parameters:
request
- the ADD Request- Returns:
- A command to perform the ADD.
-
getCloneCommand
Override to contribute to clone requests.- Parameters:
request
- the clone request- Returns:
- the command contribution to the clone
-
getCommand
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:
-
getCreateCommand
Returns theCommand
to perform a create.- Parameters:
request
- the CreateRequest- Returns:
- a Command to perform a create
-
getCreationFeedbackOffset
Returns any insets that need to be applied to the creation feedback's bounds.- Parameters:
request
- the create request- Returns:
- insets, if necessary
-
getDeleteDependantCommand
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
Returns theCommand
to move a group of children.- Parameters:
request
- the Request- Returns:
- the Command to perform the move
-
getOrphanChildrenCommand
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
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
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:
-
setListener
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
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:
-
showSizeOnDropFeedback
Shows size-on-drop feedback during creation.- Parameters:
request
- the CreateRequest
-
showTargetFeedback
Factors feedback requests into two more specific methods.- Specified by:
showTargetFeedback
in interfaceEditPolicy
- Overrides:
showTargetFeedback
in classAbstractEditPolicy
- Parameters:
request
- the Request- See Also:
-
undecorateChild
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
-