Package org.eclipse.graphiti.ui.internal.policy

## Class BendpointEditPolicyFixed

- java.lang.Object
- - org.eclipse.gef.editpolicies.AbstractEditPolicy
  - - org.eclipse.gef.editpolicies.GraphicalEditPolicy
    - - org.eclipse.gef.editpolicies.SelectionEditPolicy
      - - org.eclipse.gef.editpolicies.SelectionHandlesEditPolicy
        - - org.eclipse.graphiti.ui.internal.policy.BendpointEditPolicyFixed

All Implemented Interfaces:
  `java.beans.PropertyChangeListener`, `java.util.EventListener`, `org.eclipse.core.runtime.IAdaptable`, `org.eclipse.gef.EditPolicy`, `org.eclipse.gef.RequestConstants`

Direct Known Subclasses:
  `ConnectionBendpointEditPolicy`

    public abstract class BendpointEditPolicyFixed
    extends org.eclipse.gef.editpolicies.SelectionHandlesEditPolicy
    implements java.beans.PropertyChangeListener

Used to add bendpoint handles on a `ConnectionEditPart`.

BendpointEditPolicy will automatically observe the `Connection` figure. If the number of bends in the `Connection` changes, the handles will be updated.

### Field Summary

Fields
`protected boolean` `isDeleting`
`protected static java.util.List<org.eclipse.draw2d.Bendpoint>` `NULL_CONSTRAINT`
`protected java.util.List<?>` `originalConstraint`
`protected static org.eclipse.draw2d.geometry.Point` `ref1`
`protected static org.eclipse.draw2d.geometry.Point` `ref2`

### Fields inherited from class org.eclipse.gef.editpolicies.SelectionHandlesEditPolicy

`handles`

### 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
`BendpointEditPolicyFixed​(IConfigurationProviderInternal configurationProvider)`

### Method Summary

All Methods Instance Methods Abstract Methods Concrete Methods
`void` `activate()` `activate()` is extended to add a listener to the `Connection` figure.
`protected java.util.List<org.eclipse.gef.handles.BendpointHandle>` `createHandlesForAutomaticBendpoints()`
`protected java.util.List<org.eclipse.gef.handles.BendpointHandle>` `createHandlesForUserBendpoints()`
`protected java.util.List<org.eclipse.gef.handles.BendpointHandle>` `createSelectionHandles()` Creates selection handles for the bendpoints.
`void` `deactivate()` `deactivate()` is extended to remove the property change listener on the `Connection` figure.
`protected void` `eraseConnectionFeedback​(org.eclipse.gef.requests.BendpointRequest request)` Erases all bendpoint feedback.
`void` `eraseSourceFeedback​(org.eclipse.gef.Request request)`
`org.eclipse.gef.commands.Command` `getCommand​(org.eclipse.gef.Request request)` Factors the Request into either a MOVE, a DELETE, or a CREATE of a bendpoint.
`protected IConfigurationProviderInternal` `getConfigurationProvider()`
`protected org.eclipse.draw2d.Connection` `getConnection()` Convenience method for obtaining the host's `Connection` figure.
`protected java.util.List<org.eclipse.draw2d.Bendpoint>` `getConnectionRoutingConstraint()`
`protected abstract org.eclipse.gef.commands.Command` `getCreateBendpointCommand​(org.eclipse.gef.requests.BendpointRequest request)` Implement this method to return a Command that will create a bendpoint.
`protected abstract org.eclipse.gef.commands.Command` `getDeleteBendpointCommand​(org.eclipse.gef.requests.BendpointRequest request)` Implement this method to return a Command that will delete a bendpoint.
`protected IFeatureProvider` `getFeatureProvider()`
`protected abstract org.eclipse.gef.commands.Command` `getMoveBendpointCommand​(org.eclipse.gef.requests.BendpointRequest request)` Implement this method to return a Command that will move a bendpoint.
`protected boolean` `isAutomaticallyBending()`
`protected boolean` `lineContainsPoint​(org.eclipse.draw2d.geometry.Point p1, org.eclipse.draw2d.geometry.Point p2, org.eclipse.draw2d.geometry.Point p)`
`void` `propertyChange​(java.beans.PropertyChangeEvent evt)` If the number of bendpoints changes, handles are updated.
`protected void` `restoreOriginalConstraint()` Restores the original constraint that was saved before feedback began to show.
`protected void` `saveOriginalConstraint()` Since the original figure is used for feedback, this method saves the original constraint, so that is can be restored when the feedback is erased.
`protected void` `setReferencePoints​(org.eclipse.gef.requests.BendpointRequest request)`
`protected void` `showCreateBendpointFeedback​(org.eclipse.gef.requests.BendpointRequest request)` Shows feedback when a bendpoint is being created.
`protected void` `showDeleteBendpointFeedback​(org.eclipse.gef.requests.BendpointRequest request)` Shows feedback when a bendpoint is being deleted.
`protected void` `showMoveBendpointFeedback​(org.eclipse.gef.requests.BendpointRequest request)` Shows feedback when a bendpoint is being moved.
`void` `showSourceFeedback​(org.eclipse.gef.Request request)` Shows feedback when appropriate.

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

`addSelectionHandles, getAdapter, hideSelection, removeSelectionHandles, showSelection`

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

`addSelectionListener, getTargetEditPart, hideFocus, removeSelectionListener, setFocus, setSelectedState, showFocus, showPrimarySelection`

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

`addFeedback, getFeedbackLayer, getHostFigure, getLayer, removeFeedback`

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

`debugFeedback, eraseTargetFeedback, getHost, setHost, showTargetFeedback, toString, understandsRequest`

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

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

### Field Detail

#### NULL_CONSTRAINT

    protected static final java.util.List<org.eclipse.draw2d.Bendpoint> NULL_CONSTRAINT

#### originalConstraint

    protected java.util.List<?> originalConstraint

#### isDeleting

    protected boolean isDeleting

#### ref1

    protected static final org.eclipse.draw2d.geometry.Point ref1

#### ref2

    protected static final org.eclipse.draw2d.geometry.Point ref2

### Constructor Detail

#### BendpointEditPolicyFixed

    public BendpointEditPolicyFixed​(IConfigurationProviderInternal configurationProvider)

### Method Detail

#### activate

    public void activate()

`activate()` is extended to add a listener to the `Connection` figure.

Specified by:
  `activate` in interface `org.eclipse.gef.EditPolicy`
Overrides:
  `activate` in class `org.eclipse.gef.editpolicies.SelectionEditPolicy`
See Also:
  `EditPolicy.activate()`

#### createHandlesForAutomaticBendpoints

    protected java.util.List<org.eclipse.gef.handles.BendpointHandle> createHandlesForAutomaticBendpoints()

#### createHandlesForUserBendpoints

    protected java.util.List<org.eclipse.gef.handles.BendpointHandle> createHandlesForUserBendpoints()

#### createSelectionHandles

    protected java.util.List<org.eclipse.gef.handles.BendpointHandle> createSelectionHandles()

Creates selection handles for the bendpoints. Explicit (user-defined) bendpoints will have `BendpointMoveHandle`s on them with a single `BendpointCreationHandle` between 2 consecutive explicit bendpoints. If implicit bendpoints (such as those created by the `AutomaticRouter`) are used, one `BendpointCreationHandle` is placed in the middle of the Connection.

Specified by:
  `createSelectionHandles` in class `org.eclipse.gef.editpolicies.SelectionHandlesEditPolicy`
See Also:
  `SelectionHandlesEditPolicy.createSelectionHandles()`

#### deactivate

    public void deactivate()

`deactivate()` is extended to remove the property change listener on the `Connection` figure.

Specified by:
  `deactivate` in interface `org.eclipse.gef.EditPolicy`
Overrides:
  `deactivate` in class `org.eclipse.gef.editpolicies.SelectionEditPolicy`
See Also:
  `EditPolicy.deactivate()`

#### eraseConnectionFeedback

    protected void eraseConnectionFeedback​(org.eclipse.gef.requests.BendpointRequest request)

Erases all bendpoint feedback. Since the original `Connection` figure is used for feedback, we just restore the original constraint that was saved before feedback started to show.

Parameters:
  `request` - the BendpointRequest

#### eraseSourceFeedback

    public void eraseSourceFeedback​(org.eclipse.gef.Request request)

Specified by:
  `eraseSourceFeedback` in interface `org.eclipse.gef.EditPolicy`
Overrides:
  `eraseSourceFeedback` in class `org.eclipse.gef.editpolicies.AbstractEditPolicy`
See Also:
  `EditPolicy.eraseSourceFeedback(Request)`

#### getCommand

    public org.eclipse.gef.commands.Command getCommand​(org.eclipse.gef.Request request)

Factors the Request into either a MOVE, a DELETE, or a CREATE of a bendpoint.

Specified by:
  `getCommand` in interface `org.eclipse.gef.EditPolicy`
Overrides:
  `getCommand` in class `org.eclipse.gef.editpolicies.AbstractEditPolicy`
See Also:
  `EditPolicy.getCommand(Request)`

#### getConnection

    protected org.eclipse.draw2d.Connection getConnection()

Convenience method for obtaining the host's `Connection` figure.

Returns:
  the Connection figure

#### getCreateBendpointCommand

    protected abstract org.eclipse.gef.commands.Command getCreateBendpointCommand​(org.eclipse.gef.requests.BendpointRequest request)

Implement this method to return a Command that will create a bendpoint.

Parameters:
  `request` - the BendpointRequest
Returns:
  a Command to create a bendpoint

#### getDeleteBendpointCommand

    protected abstract org.eclipse.gef.commands.Command getDeleteBendpointCommand​(org.eclipse.gef.requests.BendpointRequest request)

Implement this method to return a Command that will delete a bendpoint.

Parameters:
  `request` - the BendpointRequest
Returns:
  a Command to delete a bendpoint

#### getMoveBendpointCommand

    protected abstract org.eclipse.gef.commands.Command getMoveBendpointCommand​(org.eclipse.gef.requests.BendpointRequest request)

Implement this method to return a Command that will move a bendpoint.

Parameters:
  `request` - the BendpointRequest
Returns:
  a Command to move a bendpoint

#### isAutomaticallyBending

    protected boolean isAutomaticallyBending()

#### lineContainsPoint

    protected boolean lineContainsPoint​(org.eclipse.draw2d.geometry.Point p1,
                                        org.eclipse.draw2d.geometry.Point p2,
                                        org.eclipse.draw2d.geometry.Point p)

#### propertyChange

    public void propertyChange​(java.beans.PropertyChangeEvent evt)

If the number of bendpoints changes, handles are updated.

Specified by:
  `propertyChange` in interface `java.beans.PropertyChangeListener`
See Also:
  `PropertyChangeListener.propertyChange(PropertyChangeEvent)`

#### restoreOriginalConstraint

    protected void restoreOriginalConstraint()

Restores the original constraint that was saved before feedback began to show.

#### saveOriginalConstraint

    protected void saveOriginalConstraint()

Since the original figure is used for feedback, this method saves the original constraint, so that is can be restored when the feedback is erased.

#### setReferencePoints

    protected void setReferencePoints​(org.eclipse.gef.requests.BendpointRequest request)

#### showCreateBendpointFeedback

    protected void showCreateBendpointFeedback​(org.eclipse.gef.requests.BendpointRequest request)

Shows feedback when a bendpoint is being created. The original figure is used for feedback and the original constraint is saved, so that it can be restored when feedback is erased.

Parameters:
  `request` - the BendpointRequest

#### showDeleteBendpointFeedback

    protected void showDeleteBendpointFeedback​(org.eclipse.gef.requests.BendpointRequest request)

Shows feedback when a bendpoint is being deleted. This method is only called once when the bendpoint is first deleted, not every mouse move. The original figure is used for feedback and the original constraint is saved, so that it can be restored when feedback is erased.

Parameters:
  `request` - the BendpointRequest

#### showMoveBendpointFeedback

    protected void showMoveBendpointFeedback​(org.eclipse.gef.requests.BendpointRequest request)

Shows feedback when a bendpoint is being moved. Also checks to see if the bendpoint should be deleted and then calls `showDeleteBendpointFeedback(BendpointRequest)` if needed. The original figure is used for feedback and the original constraint is saved, so that it can be restored when feedback is erased.

Parameters:
  `request` - the BendpointRequest

#### showSourceFeedback

    public void showSourceFeedback​(org.eclipse.gef.Request request)

Shows feedback when appropriate. Calls a different method depending on the request type.

Specified by:
  `showSourceFeedback` in interface `org.eclipse.gef.EditPolicy`
Overrides:
  `showSourceFeedback` in class `org.eclipse.gef.editpolicies.AbstractEditPolicy`
Parameters:
  `request` - the Request
See Also:
  `showCreateBendpointFeedback(BendpointRequest)`, `showMoveBendpointFeedback(BendpointRequest)`

#### getConfigurationProvider

    protected IConfigurationProviderInternal getConfigurationProvider()

#### getFeatureProvider

    protected IFeatureProvider getFeatureProvider()

#### getConnectionRoutingConstraint

    protected java.util.List<org.eclipse.draw2d.Bendpoint> getConnectionRoutingConstraint()