Package org.eclipse.graphiti.ui.features

# Class DefaultDeleteFeature

java.lang.Object
org.eclipse.graphiti.features.impl.AbstractFeature
org.eclipse.graphiti.ui.features.DefaultDeleteFeature

All Implemented Interfaces:
  `IDeleteFeature`, `IFeature`, `IFeatureProviderHolder`, `IDelete`, `IDescription`, `IName`

Direct Known Subclasses:
  `DeleteFeatureForPattern`

public class DefaultDeleteFeature extends AbstractFeature implements IDeleteFeature
The Graphiti default implementation of the `IDeleteFeature`. It cares about removing the shape(s) representing the deleted domain object(s) from the diagram (by delegating to the `IRemoveFeature` provided by the `IFeatureProvider`. After that the EMF domain objects will be deleted using standard EMF functionality.
Before the deletion process starts the tool user will be asked if he really wants to delete; the popup appears only once for multi object deletions.

## Constructor Summary

Constructors
Constructor
Description
`DefaultDeleteFeature(IFeatureProvider fp)`
Creates a new `DefaultDeleteFeature`.

## Method Summary

Modifier and Type
Method
Description
`boolean`
`canDelete(IDeleteContext context)`
Can delete hook.
`boolean`
`canExecute(IContext context)`
Decides if the current feature can execute with the given context.
`void`
`delete(IDeleteContext context)`
Hook to implement the actual delete functionality.
`protected void`
`deleteBusinessObject(Object bo)`
Standard functionality to delete one domain object.
`protected void`
`deleteBusinessObjects(Object[] businessObjects)`
Standard functionality to delete all given domain objects.
`void`
`execute(IContext context)`
Executes the current feature with the given context.
`protected String`
`getDeleteName(IDeleteContext context)`
Returns the delete name which will be used for the delete dialog.
`String`
`getDescription()`
Gets the description.
`String`
`getName()`
Hook to return the name of the delete operation e.g for display in the context menu.
`protected boolean`
`getUserDecision(IDeleteContext context)`
Shows a dialog which asks the user to confirm the deletion of one or more elements.
`boolean`
`hasDoneChanges()`
Is queried by the framework after a feature has been executed to find out if this feature should appear in the undo stack of e.g.
`boolean`
`isDeleteAbort()`
The Graphiti framework will call this method after `IDelete.preDelete(IDeleteContext)` has been called and before the actual delete is done.
`void`
`postDelete(IDeleteContext context)`
Post delete hook that can be implemented by users to perform any operations that need to be done after the standard delete functionality ends.
`void`
`preDelete(IDeleteContext context)`
Pre delete hook that can be implemented by users to perform any operations that need to be done before the standard delete functionality starts.
`protected void`
`setDoneChanges(boolean doneChanges)`
Can be called by users (in subclasses of `DefaultDeleteFeature`) to tell the framework that changes have been done that should reflect on the command stack.

### Methods inherited from class org.eclipse.graphiti.features.impl.AbstractFeature

`addGraphicalRepresentation, canUndo, getAllBusinessObjectsForPictogramElement, getBusinessObjectForPictogramElement, getDiagram, getDiagramBehavior, getFeatureProvider, getProgressCallback, getUserDecision, isAvailable, layoutPictogramElement, link, link, manageColor, manageColor, manageDefaultFont, manageFont, manageFont, setProgressCallback, toString, updatePictogramElement`

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

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

### Methods inherited from interface org.eclipse.graphiti.features.IFeature

`canUndo, isAvailable`

### Methods inherited from interface org.eclipse.graphiti.features.IFeatureProviderHolder

`getFeatureProvider`

## Constructor Details

### DefaultDeleteFeature

public DefaultDeleteFeature(IFeatureProvider fp)
Creates a new `DefaultDeleteFeature`.

Parameters:
  `fp` - the feature provider

## Method Details

### canDelete

public boolean canDelete(IDeleteContext context)
Description copied from interface: `IDelete`
Can delete hook. Needs to be implemented in order to decide if a feature can (and wants to) handle a delete request.

Specified by:
  `canDelete` in interface `IDelete`
Parameters:
  `context` - the context describing the request
Returns:
  `true`, if the feature can perform the delete operation

### delete

public void delete(IDeleteContext context)
Description copied from interface: `IDelete`
Hook to implement the actual delete functionality.

Specified by:
  `delete` in interface `IDelete`
Parameters:
  `context` - the context

### deleteBusinessObjects

protected void deleteBusinessObjects(Object[] businessObjects)
Standard functionality to delete all given domain objects.

Parameters:
  `businessObjects` - the domain objects to delete

### deleteBusinessObject

protected void deleteBusinessObject(Object bo)
Standard functionality to delete one domain object. Will delegate for `EObject`s to `EcoreUtil.delete(EObject, boolean)`; non-EMF objects will be ignored.

Parameters:
  `bo` - the domain object to delete

### preDelete

public void preDelete(IDeleteContext context)
Description copied from interface: `IDelete`
Pre delete hook that can be implemented by users to perform any operations that need to be done before the standard delete functionality starts. Be sure to call `DefaultDeleteFeature#setDoneChanges(boolean)` in case you modify any EMF objects to enable that the command stack gets updated.

Specified by:
  `preDelete` in interface `IDelete`
Parameters:
  `context` - the context

### isDeleteAbort

public boolean isDeleteAbort()
Description copied from interface: `IDelete`
The Graphiti framework will call this method after `IDelete.preDelete(IDeleteContext)` has been called and before the actual delete is done. In case this method returns `true`, the operation will be cancelled by the Graphiti framework by throwing an `OperationCanceledException` that causes am EMF revert of the operation.

Implementing classes might e.g. set a flag in `IDelete.preDelete(IDeleteContext)` as cancellation indication and check that that flag here.

Specified by:
  `isDeleteAbort` in interface `IDelete`
Returns:
  `true` in case you want to cancel the current operation, `false` otherwise.
Since:
  0.12

### postDelete

public void postDelete(IDeleteContext context)
Description copied from interface: `IDelete`
Post delete hook that can be implemented by users to perform any operations that need to be done after the standard delete functionality ends.

Specified by:
  `postDelete` in interface `IDelete`
Parameters:
  `context` - the context

### canExecute

public boolean canExecute(IContext context)
Description copied from interface: `IFeature`
Decides if the current feature can execute with the given context.

Specified by:
  `canExecute` in interface `IFeature`
Parameters:
  `context` - this is the general input for this method
Returns:
  true if the feature can be executed, false if not
See Also:
  - `IContext`

### execute

public void execute(IContext context)
Description copied from interface: `IFeature`
Executes the current feature with the given context.

Specified by:
  `execute` in interface `IFeature`
Parameters:
  `context` - this is the general input for this method
See Also:
  - `IContext`

### getName

public String getName()
Hook to return the name of the delete operation e.g for display in the context menu. The standard implementation simply returns "Delete".

Specified by:
  `getName` in interface `IName`
Overrides:
  `getName` in class `AbstractFeature`
Returns:
  The diplay name of the operation

### getDescription

public String getDescription()
Description copied from interface: `IDescription`
Gets the description.

Specified by:
  `getDescription` in interface `IDescription`
Overrides:
  `getDescription` in class `AbstractFeature`
Returns:
  the description

### hasDoneChanges

public boolean hasDoneChanges()
Description copied from interface: `IFeature`
Is queried by the framework after a feature has been executed to find out if this feature should appear in the undo stack of e.g. an editor. By default all features should appear there (see implementation in `AbstractFeature`), but features may decide to override this behavior. Note that this is a dynamic attribute of the feature that is queried each time after the feature has been executed.

IMPORTANT NOTE: The implementor of the feature is responsible for correctly implementing this method! It might lead to inconsistencies in the command stack if this method returns `false` although the feature did changes.

Specified by:
  `hasDoneChanges` in interface `IFeature`
Overrides:
  `hasDoneChanges` in class `AbstractFeature`
Returns:
  `true` if the feature should appear in the undo stack, `false` otherwise

### setDoneChanges

protected void setDoneChanges(boolean doneChanges)
Can be called by users (in subclasses of `DefaultDeleteFeature`) to tell the framework that changes have been done that should reflect on the command stack. The method is called by the standard implementation in `delete(IDeleteContext)` right after the first shape has been removed from the diagram.

Parameters:
  `doneChanges` - `true`in case modifications have been made, `false` otherwise
Since:
  0.9

### getUserDecision

protected boolean getUserDecision(IDeleteContext context)
Shows a dialog which asks the user to confirm the deletion of one or more elements.

Parameters:
  `context` - delete context
Returns:
  `true` to delete element(s); `false` to cancel delete

### getDeleteName

protected String getDeleteName(IDeleteContext context)
Returns the delete name which will be used for the delete dialog. E.g. "file test.java". The default implementation returns `null` to indicate that the popup text refers to "this object".

Parameters:
  `context` - the delete context
Returns:
  the delete name, or `null` to indicate no special name shall be used
Since:
  0.8