org.eclipse.graphiti.ui.editor
Class DefaultUpdateBehavior

java.lang.Object
  extended by PlatformObject
      extended by org.eclipse.graphiti.ui.editor.DefaultUpdateBehavior

public class DefaultUpdateBehavior
extends PlatformObject

The default implementation for the DiagramEditor behavior extension that controls update behavior of the editor and defines the EMF adapters that watch over model object modifications. Clients may subclass to change the behavior; use DiagramEditor.createUpdateBehavior() to return the instance that shall be used.
Note that there is always a 1:1 relation with a DiagramEditor.

Since:
0.9

Field Summary
private  boolean adapterActive
          Flag that indicates if the updateAdapter shall be active or not.
protected  DiagramEditor diagramEditor
          The associated DiagramEditor
private  TransactionalEditingDomain editingDomain
          The editing domain that is used throughout the DiagramEditor is kept here and only here.
private  ElementDeleteListener elementDeleteListener
          Closes editor if model object is deleted.
private  boolean resourceChanged
          Is toggled by updateAdapter.
private  boolean resourceDeleted
          Is toggled by updateAdapter.
private  ResourceSetUpdateAdapter resourceSetUpdateAdapter
          The update adapter is added to every Resource adapters in the ResourceSet of the TransactionalEditingDomain.
private  Adapter updateAdapter
          The default update that cares about refreshing the diagram editor in case of resource changes.
private  WorkspaceSynchronizer workspaceSynchronizer
           
 
Constructor Summary
DefaultUpdateBehavior(DiagramEditor diagramEditor)
          Creates a new DefaultUpdateBehavior instance associated with the given DiagramEditor.
 
Method Summary
private  void closeEditor()
           
protected  void createEditingDomain()
          Created the TransactionalEditingDomain that shall be used within the diagram editor and initializes it by delegating to initializeEditingDomain(TransactionalEditingDomain).
 void dispose()
          Disposes this DefaultUpdateBehavior and free all resources it holds.
protected  void disposeEditingDomain()
          Cares about disposing the TransactionalEditingDomain held in this instance.
 TransactionalEditingDomain getEditingDomain()
          This returns the editing domain as required by the IEditingDomainProvider interface.
private  IOperationHistory getOperationHistory()
           
private  Shell getShell()
           
 void handleActivate()
          Handles activation of the editor.
protected  void handleChangedResources()
          Handles what to do with changed resources on editor activation.
protected  boolean handleDirtyConflict()
          Shows a dialog that asks if conflicting changes should be discarded or not.
 void historyNotification(OperationHistoryEvent event)
          Is called by the operation history of the TransactionalEditingDomain in case the history changes.
 void init()
          Initializes listeners and adapters.
protected  void initializeEditingDomain(TransactionalEditingDomain domain)
          This sets up the editing domain for this model editor.
protected  boolean isAdapterActive()
          Returns the flag that indicates if the updateAdapter shall be active of not (adapterActive).
protected  boolean isResourceChanged()
          Returns the flag that indicates if the underlying resource of the Diagram has been changed.
protected  boolean isResourceDeleted()
          Returns the flag that indicates if the underlying resource of the Diagram has been deleted.
 void setAdapterActive(boolean active)
          Sets the flag that indicates if the updateAdapter shall be active of not (adapterActive).
 void setResourceChanged(boolean resourceChanged)
          Sets the flag that indicates if the underlying resource of the Diagram has been changed.
 void setResourceDeleted(boolean resourceDeleted)
          Sets the flag that indicates if the underlying resource of the Diagram has been deleted.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

diagramEditor

protected final DiagramEditor diagramEditor
The associated DiagramEditor


editingDomain

private TransactionalEditingDomain editingDomain
The editing domain that is used throughout the DiagramEditor is kept here and only here.


elementDeleteListener

private ElementDeleteListener elementDeleteListener
Closes editor if model object is deleted.


resourceSetUpdateAdapter

private ResourceSetUpdateAdapter resourceSetUpdateAdapter
The update adapter is added to every Resource adapters in the ResourceSet of the TransactionalEditingDomain. When notified, it adds an updateAdapter to the adapters of the ResourceSet.

See Also:
initializeEditingDomain(TransactionalEditingDomain)

resourceDeleted

private boolean resourceDeleted
Is toggled by updateAdapter.


resourceChanged

private boolean resourceChanged
Is toggled by updateAdapter.


workspaceSynchronizer

private WorkspaceSynchronizer workspaceSynchronizer

adapterActive

private boolean adapterActive
Flag that indicates if the updateAdapter shall be active or not. It may be deactivated when mass operations (e.g. saving the diagram editor with all its resources) take place. Use the methods isAdapterActive() and setAdapterActive(boolean) to access this field.


updateAdapter

private Adapter updateAdapter
The default update that cares about refreshing the diagram editor in case of resource changes. May be disabled by overriding isAdapterActive() and returning false.

Constructor Detail

DefaultUpdateBehavior

public DefaultUpdateBehavior(DiagramEditor diagramEditor)
Creates a new DefaultUpdateBehavior instance associated with the given DiagramEditor.

Parameters:
diagramEditor - the part this model editor works on
Method Detail

isResourceDeleted

protected boolean isResourceDeleted()
Returns the flag that indicates if the underlying resource of the Diagram has been deleted. Note that this flag will only be updated in case the updateAdapter is enabled, see adapterActive, isAdapterActive() and setAdapterActive(boolean). If this flag is set the editor will close on receiving the next event.

Returns:
true in case the resource has been deleted, false otherwise

setResourceDeleted

public void setResourceDeleted(boolean resourceDeleted)
Sets the flag that indicates if the underlying resource of the Diagram has been deleted. Note that this flag should only be updated by the updateAdapter, see adapterActive, isAdapterActive() and setAdapterActive(boolean).

Should not be called by external clients.

Parameters:
resourceDeleted - the value to set the flag to, true indicates that the resource has been deleted.

isResourceChanged

protected boolean isResourceChanged()
Returns the flag that indicates if the underlying resource of the Diagram has been changed. Note that this flag will only be updated in case the updateAdapter is enabled, see adapterActive, isAdapterActive() and setAdapterActive(boolean).

Returns:
true in case the resource has been changed, false otherwise

setResourceChanged

public void setResourceChanged(boolean resourceChanged)
Sets the flag that indicates if the underlying resource of the Diagram has been changed. Note that this flag should only be updated by the updateAdapter, see adapterActive, isAdapterActive() and setAdapterActive(boolean).

Should not be called by external clients.

Parameters:
resourceChanged - the value to set the flag to, true indicates that the resource has been changed.

handleActivate

public void handleActivate()
Handles activation of the editor. In case of the underlying diagram resource being deleted (resourceDeleted is true) the editor will be closed after a call to handleDirtyConflict() that returns true. Also it will call handleChangedResources() in case the underlying diagram resource has changed (resourceChanged is true).


isAdapterActive

protected boolean isAdapterActive()
Returns the flag that indicates if the updateAdapter shall be active of not (adapterActive). In case this method returns false, the updateAdapter will do nothing on being called.

Returns:
true in case the adapter shall run, false otherwise.

setAdapterActive

public void setAdapterActive(boolean active)
Sets the flag that indicates if the updateAdapter shall be active of not (adapterActive).

Parameters:
active - the new value for the flag

handleChangedResources

protected void handleChangedResources()
Handles what to do with changed resources on editor activation.


handleDirtyConflict

protected boolean handleDirtyConflict()
Shows a dialog that asks if conflicting changes should be discarded or not. See handleActivate().

Returns:
true in case the editor shall be closed, false otherwise

getEditingDomain

public TransactionalEditingDomain getEditingDomain()
This returns the editing domain as required by the IEditingDomainProvider interface.

Returns:
The TransactionalEditingDomain that is used within this editor

init

public void init()
Initializes listeners and adapters.


createEditingDomain

protected void createEditingDomain()
Created the TransactionalEditingDomain that shall be used within the diagram editor and initializes it by delegating to initializeEditingDomain(TransactionalEditingDomain).


initializeEditingDomain

protected void initializeEditingDomain(TransactionalEditingDomain domain)
This sets up the editing domain for this model editor.

Parameters:
domain - The TransactionalEditingDomain that is used within this model editor

dispose

public void dispose()
Disposes this DefaultUpdateBehavior and free all resources it holds. In case you only want to omit or influence the disposal of the TransactionalEditingDomain, you can also override disposeEditingDomain().


disposeEditingDomain

protected void disposeEditingDomain()
Cares about disposing the TransactionalEditingDomain held in this instance. Is called during the dispose() method.


historyNotification

public void historyNotification(OperationHistoryEvent event)
Is called by the operation history of the TransactionalEditingDomain in case the history changes. Reacts on undo and redo events and updates the dirty state of the editor.

Parameters:
event - the OperationHistoryEvent to react upon

getShell

private Shell getShell()

closeEditor

private void closeEditor()

getOperationHistory

private IOperationHistory getOperationHistory()


Copyright (c) SAP AG 2005, 2012.