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
invalid reference

    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