Eclipse GEF
3.8.0.201206112118

org.eclipse.gef.editpolicies
Class ConstrainedLayoutEditPolicy

java.lang.Object
  extended by org.eclipse.gef.editpolicies.AbstractEditPolicy
      extended by org.eclipse.gef.editpolicies.GraphicalEditPolicy
          extended by org.eclipse.gef.editpolicies.LayoutEditPolicy
              extended by org.eclipse.gef.editpolicies.ConstrainedLayoutEditPolicy
All Implemented Interfaces:
EditPolicy, RequestConstants
Direct Known Subclasses:
XYLayoutEditPolicy

public abstract class ConstrainedLayoutEditPolicy
extends LayoutEditPolicy

For use with LayoutManager that require a constraint. ConstrainedLayoutEditPolicy understands RequestConstants.REQ_ALIGN_CHILDREN in addition to the Requests handled in the superclass.

Since:
2.0

Field Summary
protected static Dimension UNSPECIFIED_SIZE
          Constant being used to indicate that upon creation (or during move) a size was not specified.
 
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
ConstrainedLayoutEditPolicy()
           
 
Method Summary
protected  Command createAddCommand(ChangeBoundsRequest request, EditPart child, Object constraint)
          Returns the Command to perform an Add with the specified child and constraint.
protected  Command createAddCommand(EditPart child, Object constraint)
          Deprecated. Use createAddCommand(ChangeBoundsRequest, EditPart, Object) instead.
protected  Command createChangeConstraintCommand(ChangeBoundsRequest request, EditPart child, Object constraint)
          The request is now made available when creating the change constraint command.
protected  Command createChangeConstraintCommand(EditPart child, Object constraint)
          Deprecated. Use createChangeConstraintCommand(ChangeBoundsRequest, EditPart, Object) instead.
protected  EditPolicy createChildEditPolicy(EditPart child)
          A ResizableEditPolicy is used by default for children.
protected  Command getAddCommand(Request generic)
          Overrides getAddCommand() to generate the proper constraint for each child being added.
protected  Command getAlignChildrenCommand(AlignmentRequest request)
          Returns the command to align a group of children.
protected  Command getChangeConstraintCommand(ChangeBoundsRequest request)
          Returns the Command for changing bounds for a group of children.
 Command getCommand(Request request)
          Factors out RESIZE and ALIGN requests, otherwise calls super .
protected  Object getConstraintFor(ChangeBoundsRequest request, GraphicalEditPart child)
          Generates a draw2d constraint object for the given ChangeBoundsRequest and child EditPart by delegating to getConstraintFor(Request, GraphicalEditPart, Rectangle).
protected  Object getConstraintFor(CreateRequest request)
          Generates a draw2d constraint for the given CreateRequest by delegating to getConstraintFor(Request, GraphicalEditPart, Rectangle).
protected abstract  Object getConstraintFor(Point point)
          Generates a draw2d constraint given a Point.
protected abstract  Object getConstraintFor(Rectangle rect)
          Generates a draw2d constraint given a Rectangle.
protected  Object getConstraintFor(Request request, GraphicalEditPart child, Rectangle rectangle)
          Responsible of generating a draw2d constraint for the given Rectangle, which represents the already transformed (layout-relative) position and size of the given Request.
protected  Object getConstraintForClone(GraphicalEditPart part, ChangeBoundsRequest request)
          Deprecated. Use getConstraintFor(ChangeBoundsRequest, GraphicalEditPart) instead.
protected  Command getMoveChildrenCommand(Request request)
          Returns the Command to move a group of children.
protected  Command getResizeChildrenCommand(ChangeBoundsRequest request)
          Returns the Command to resize a group of children.
protected  Object translateToModelConstraint(Object figureConstraint)
          Converts a constraint from the format used by LayoutManagers, to the form stored in the model.
 
Methods inherited from class org.eclipse.gef.editpolicies.LayoutEditPolicy
activate, createListener, createSizeOnDropFeedback, deactivate, decorateChild, decorateChildren, eraseLayoutTargetFeedback, eraseSizeOnDropFeedback, eraseTargetFeedback, getCloneCommand, getCreateCommand, getCreationFeedbackOffset, getDeleteDependantCommand, getLayoutContainer, getLayoutOrigin, getOrphanChildrenCommand, getSizeOnDropFeedback, getSizeOnDropFeedback, getTargetEditPart, setListener, showLayoutTargetFeedback, showSizeOnDropFeedback, showTargetFeedback, translateFromAbsoluteToLayoutRelative, translateFromLayoutRelativeToAbsolute, undecorateChild, undecorateChildren
 
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
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

UNSPECIFIED_SIZE

protected static final Dimension UNSPECIFIED_SIZE
Constant being used to indicate that upon creation (or during move) a size was not specified.

Since:
3.7
Constructor Detail

ConstrainedLayoutEditPolicy

public ConstrainedLayoutEditPolicy()
Method Detail

createAddCommand

protected Command createAddCommand(ChangeBoundsRequest request,
                                   EditPart child,
                                   Object constraint)
Returns the Command to perform an Add with the specified child and constraint. The constraint has been converted from a draw2d constraint to an object suitable for the model by calling translateToModelConstraint(Object).

Parameters:
request - the ChangeBoundsRequest
child - the EditPart of the child being added
constraint - the model constraint, after being translated
Returns:
the Command to add the child
Since:
3.7

createAddCommand

protected Command createAddCommand(EditPart child,
                                   Object constraint)
Deprecated. Use createAddCommand(ChangeBoundsRequest, EditPart, Object) instead.

Returns the Command to perform an Add with the specified child and constraint. The constraint has been converted from a draw2d constraint to an object suitable for the model by calling translateToModelConstraint(Object).

Parameters:
child - the EditPart of the child being added
constraint - the model constraint, after being translated
Returns:
the Command to add the child

createChangeConstraintCommand

protected Command createChangeConstraintCommand(ChangeBoundsRequest request,
                                                EditPart child,
                                                Object constraint)
The request is now made available when creating the change constraint command. By default, this method invokes the old method.

Parameters:
request - the ChangeBoundsRequest
child - the EditPart of the child being changed
constraint - the new constraint, after being translated
Returns:
A Command to change the constraints of the given child as specified in the given request
Since:
3.0
See Also:
createChangeConstraintCommand(EditPart, Object)

createChangeConstraintCommand

protected Command createChangeConstraintCommand(EditPart child,
                                                Object constraint)
Deprecated. Use createChangeConstraintCommand(ChangeBoundsRequest, EditPart, Object) instead.

Returns the Command to change the specified child's constraint. The constraint has been converted from a draw2d constraint to an object suitable for the model. Clients should overwrite createChangeConstraintCommand(ChangeBoundsRequest, EditPart, Object) instead.

Parameters:
child - the EditPart of the child being changed
constraint - the new constraint, after being translated
Returns:
Command
See Also:
createChangeConstraintCommand(ChangeBoundsRequest, EditPart, Object)

createChildEditPolicy

protected EditPolicy createChildEditPolicy(EditPart child)
A ResizableEditPolicy is used by default for children. Subclasses may override this method to supply a different EditPolicy.

Specified by:
createChildEditPolicy in class LayoutEditPolicy
Parameters:
child - the child EditPart
Returns:
an EditPolicy to be installed as the EditPolicy.PRIMARY_DRAG_ROLE
See Also:
LayoutEditPolicy.createChildEditPolicy(EditPart)

getAddCommand

protected Command getAddCommand(Request generic)
Overrides getAddCommand() to generate the proper constraint for each child being added. Once the constraint is calculated, createAddCommand(EditPart,Object) is called. Subclasses must implement this method.

Overrides:
getAddCommand in class LayoutEditPolicy
Parameters:
generic - the ADD Request
Returns:
A command to perform the ADD.
See Also:
LayoutEditPolicy.getAddCommand(Request)

getAlignChildrenCommand

protected Command getAlignChildrenCommand(AlignmentRequest request)
Returns the command to align a group of children. By default, this is treated the same as a resize, and getResizeChildrenCommand(ChangeBoundsRequest) is returned.

Parameters:
request - the AligmentRequest
Returns:
the command to perform alignment

getCommand

public Command getCommand(Request request)
Factors out RESIZE and ALIGN requests, otherwise calls super .

Specified by:
getCommand in interface EditPolicy
Overrides:
getCommand in class LayoutEditPolicy
Parameters:
request - the Request
Returns:
null or a Command contribution
See Also:
EditPolicy.getCommand(Request)

getConstraintFor

protected Object getConstraintFor(ChangeBoundsRequest request,
                                  GraphicalEditPart child)
Generates a draw2d constraint object for the given ChangeBoundsRequest and child EditPart by delegating to getConstraintFor(Request, GraphicalEditPart, Rectangle). The rectangle being passed over to getConstraintFor(Request, GraphicalEditPart, Rectangle) is calculated based on the child figure's current bounds and the ChangeBoundsRequest's move and resize deltas. It is made layout-relative by using LayoutEditPolicy.translateFromAbsoluteToLayoutRelative(Translatable) before calling getConstraintFor(Request, GraphicalEditPart, Rectangle).

Parameters:
request - the ChangeBoundsRequest
child - the child EditPart for which the constraint should be generated
Returns:
the draw2d constraint

getConstraintFor

protected Object getConstraintFor(Request request,
                                  GraphicalEditPart child,
                                  Rectangle rectangle)
Responsible of generating a draw2d constraint for the given Rectangle, which represents the already transformed (layout-relative) position and size of the given Request. By default, this method delegates to getConstraintFor(Point) or getConstraintFor(Rectangle), dependent on whether the size of the rectangle is an UNSPECIFIED_SIZE or not. Subclasses may overwrite this method in case they need the request or the edit part (which will of course not be set during creation) to calculate a layout constraint for the request.

Parameters:
rectangle - the Rectangle relative to the layout origin
Returns:
the constraint
Since:
3.7

getConstraintFor

protected abstract Object getConstraintFor(Point point)
Generates a draw2d constraint given a Point. This method is called during creation, when only a mouse location is available, as well as during move, in case no resizing is involved.

Parameters:
point - the Point relative to the layout origin
Returns:
the constraint

getConstraintFor

protected abstract Object getConstraintFor(Rectangle rect)
Generates a draw2d constraint given a Rectangle. This method is called during most operations.

Parameters:
rect - the Rectangle relative to the layout origin
Returns:
the constraint

getConstraintFor

protected Object getConstraintFor(CreateRequest request)
Generates a draw2d constraint for the given CreateRequest by delegating to getConstraintFor(Request, GraphicalEditPart, Rectangle). If the CreateRequest has a size, is used during size-on-drop creation, a Rectangle of the request's location and size is passed with the delegation. Otherwise, a rectangle with the request's location and an empty size (0,0) is passed over.

The CreateRequest's location is relative to the Viewer. The location is made layout-relative by using LayoutEditPolicy.translateFromAbsoluteToLayoutRelative(Translatable) before calling getConstraintFor(Request, GraphicalEditPart, Rectangle).

Parameters:
request - the CreateRequest
Returns:
a draw2d constraint

getConstraintForClone

protected Object getConstraintForClone(GraphicalEditPart part,
                                       ChangeBoundsRequest request)
Deprecated. Use getConstraintFor(ChangeBoundsRequest, GraphicalEditPart) instead.

Returns the correct rectangle bounds for the new clone's location.

Parameters:
part - the graphical edit part representing the object to be cloned.
request - the ChangeBoundsRequest that knows where to place the new object.
Returns:
the bounds that will be used for the new object.

translateToModelConstraint

protected Object translateToModelConstraint(Object figureConstraint)
Converts a constraint from the format used by LayoutManagers, to the form stored in the model.

Parameters:
figureConstraint - the draw2d constraint
Returns:
the model constraint

getResizeChildrenCommand

protected Command getResizeChildrenCommand(ChangeBoundsRequest request)
Returns the Command to resize a group of children.

Parameters:
request - the ChangeBoundsRequest
Returns:
the Command

getChangeConstraintCommand

protected Command getChangeConstraintCommand(ChangeBoundsRequest request)
Returns the Command for changing bounds for a group of children.

Parameters:
request - the ChangeBoundsRequest
Returns:
the Command
Since:
3.7

getMoveChildrenCommand

protected Command getMoveChildrenCommand(Request request)
Returns the Command to move a group of children. By default, move is treated the same as a resize.

Specified by:
getMoveChildrenCommand in class LayoutEditPolicy
Parameters:
request - the Request
Returns:
the Command to perform the move
See Also:
LayoutEditPolicy.getMoveChildrenCommand(Request)

Eclipse GEF
3.8.0.201206112118

Copyright (c) IBM Corp. and others 2000, 2011. All Rights Reserved.