Package org.eclipse.gef.editpolicies

# Class ConstrainedLayoutEditPolicy

java.lang.Object
org.eclipse.gef.editpolicies.AbstractEditPolicy
org.eclipse.gef.editpolicies.GraphicalEditPolicy
org.eclipse.gef.editpolicies.LayoutEditPolicy
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

Fields
Modifier and Type
Field
Description
`protected static final org.eclipse.draw2d.geometry.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

Constructors
Constructor
Description
`ConstrainedLayoutEditPolicy()`

## Method Summary

Modifier and Type
Method
Description
`protected Command`
`createAddCommand(EditPart child, Object constraint)`
Deprecated.
Use `createAddCommand(ChangeBoundsRequest, EditPart, Object)` instead.
`protected Command`
`createAddCommand(ChangeBoundsRequest request, EditPart child, Object constraint)`
Returns the `Command` to perform an Add with the specified child and constraint.
`protected Command`
`createChangeConstraintCommand(EditPart child, Object constraint)`
Deprecated.
Use `createChangeConstraintCommand(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 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 abstract Object`
`getConstraintFor(org.eclipse.draw2d.geometry.Point point)`
Generates a draw2d constraint given a `Point`.
`protected abstract Object`
`getConstraintFor(org.eclipse.draw2d.geometry.Rectangle rect)`
Generates a draw2d constraint given a `Rectangle`.
`protected Object`
`getConstraintFor(Request request, GraphicalEditPart child, org.eclipse.draw2d.geometry.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`
`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 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, getHost, getHostFigure, getLayer, removeFeedback`

### Methods inherited from class org.eclipse.gef.editpolicies.AbstractEditPolicy

`debugFeedback, eraseSourceFeedback, setHost, showSourceFeedback, toString, understandsRequest`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

## Field Details

### UNSPECIFIED_SIZE

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

Since:
  3.7

## Constructor Details

### ConstrainedLayoutEditPolicy

public ConstrainedLayoutEditPolicy()

## Method Details

### 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

@Deprecated 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
@nooverride
  Overwrite `createAddCommand(ChangeBoundsRequest, EditPart, Object)` instead.
@noreference
  Use `createAddCommand(ChangeBoundsRequest, EditPart, Object)` instead.

### 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

@Deprecated 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)`
@nooverride
  Overwrite `createChangeConstraintCommand(ChangeBoundsRequest, EditPart, Object)` instead.
@noreference
  Use `createChangeConstraintCommand(ChangeBoundsRequest, EditPart, Object)` instead.

### 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, org.eclipse.draw2d.geometry.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(org.eclipse.draw2d.geometry.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(org.eclipse.draw2d.geometry.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

@Deprecated 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.
@nooverride
  This method is not intended to be re-implemented or extended by clients.
@noreference
  This method is not intended to be referenced by clients.

### 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)`