org.eclipse.graphiti.ui.features
Class DefaultDeleteFeature

java.lang.Object
  extended by org.eclipse.graphiti.features.impl.AbstractFeature
      extended by 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.


Field Summary
private static java.lang.String DESC
           
private  boolean doneChanges
           
private static java.lang.String NAME
           
 
Constructor Summary
DefaultDeleteFeature(IFeatureProvider fp)
          Creates a new DefaultDeleteFeature.
 
Method Summary
 boolean canDelete(IDeleteContext context)
          Can delete hook.
 boolean canExecute(IContext context)
          Decides if the current feature can execute with the given context.
private  java.util.List<java.lang.Object> collectCompositeConnectionsBOs(CompositeConnection composite)
           
 void delete(IDeleteContext context)
          Hook to implement the actual delete functionality.
protected  void deleteBusinessObject(java.lang.Object bo)
          Standard functionality to delete one domain object.
protected  void deleteBusinessObjects(java.lang.Object[] businessObjects)
          Standard functionality to delete all given domain objects.
 void execute(IContext context)
          Executes the current feature with the given context.
protected  java.lang.String getDeleteName(IDeleteContext context)
          Returns the delete name which will be used for the delete dialog.
 java.lang.String getDescription()
          Gets the description.
 java.lang.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.
 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, getDiagramEditor, getFeatureProvider, getProgressCallback, getUserDecision, isAvailable, layoutPictogramElement, link, link, manageColor, manageColor, 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
 

Field Detail

NAME

private static final java.lang.String NAME

DESC

private static final java.lang.String DESC

doneChanges

private boolean doneChanges
Constructor Detail

DefaultDeleteFeature

public DefaultDeleteFeature(IFeatureProvider fp)
Creates a new DefaultDeleteFeature.

Parameters:
fp - the feature provider
Method Detail

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

collectCompositeConnectionsBOs

private java.util.List<java.lang.Object> collectCompositeConnectionsBOs(CompositeConnection composite)

deleteBusinessObjects

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

Parameters:
businessObjects - the domain objects to delete

deleteBusinessObject

protected void deleteBusinessObject(java.lang.Object bo)
Standard functionality to delete one domain object. Will delegate for EObjects 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

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 java.lang.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 java.lang.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 - truein 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 java.lang.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


Copyright (c) SAP AG 2005, 2012.