Package org.eclipse.graphiti.ui.editor

## Class DefaultUpdateBehavior

- java.lang.Object
- - org.eclipse.core.runtime.PlatformObject
  - - org.eclipse.graphiti.ui.editor.DefaultUpdateBehavior

All Implemented Interfaces:
  `org.eclipse.core.commands.operations.IOperationHistoryListener`, `org.eclipse.core.runtime.IAdaptable`, `org.eclipse.emf.edit.domain.IEditingDomainProvider`

    public class DefaultUpdateBehavior
    extends org.eclipse.core.runtime.PlatformObject
    implements org.eclipse.emf.edit.domain.IEditingDomainProvider, org.eclipse.core.commands.operations.IOperationHistoryListener

The default implementation for the `IDiagramContainerUI` 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 `IDiagramContainerUI#createUpdateBehavior()` to return the instance that shall be used.
Note that there is always a 1:1 relation with a `IDiagramContainerUI`.

Since:
  0.9

### Nested Class Summary

Nested Classes
`protected class` `DefaultUpdateBehavior.DefaultUpdateAdapter` The default implementation of the update adapter that cares about refreshing the diagram editor in case of resource changes.

### Field Summary

Fields
`protected DiagramBehavior` `diagramBehavior`

### Constructor Summary

Constructors
`DefaultUpdateBehavior​(DiagramBehavior diagramBehavior)` Creates a new `DefaultUpdateBehavior` instance associated with the given `DiagramBehavior`.

### Method Summary

All Methods Instance Methods Concrete Methods
`protected void` `closeContainer()` Closes the `IDiagramContainerUI` (usually a diagram Editor) behind this `DefaultUpdateBehavior` instance.
`protected void` `createEditingDomain​(IDiagramEditorInput input)` Created the `TransactionalEditingDomain` that shall be used within the diagram editor and initializes it by delegating to `initializeEditingDomain(TransactionalEditingDomain)`.
`protected org.eclipse.emf.common.notify.Adapter` `createUpdateAdapter()` Hook to create an `updateAdapter` that cares about updating the diagram editor.
`protected org.eclipse.emf.workspace.util.WorkspaceSynchronizer.Delegate` `createWorkspaceSynchronizerDelegate()` Can be overridden to return a client specific implementation of a `WorkspaceSynchronizer` `WorkspaceSynchronizer.Delegate` object.
`void` `dispose()` Disposes this `DefaultUpdateBehavior` and free all resources it holds.
`protected void` `disposeEditingDomain()` Cares about disposing the `TransactionalEditingDomain` held in this instance.
`org.eclipse.emf.transaction.TransactionalEditingDomain` `getEditingDomain()` This returns the editing domain as required by the `IEditingDomainProvider` interface.
`protected org.eclipse.core.commands.operations.IOperationHistory` `getOperationHistory()` Returns the `IOperationHistory` for the command stack.
`protected org.eclipse.emf.common.notify.Adapter` `getUpdateAdapter()` Returns the `updateAdapter` of this instance or `null` in case the adapter has not yet been initialized.
`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​(org.eclipse.core.commands.operations.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​(org.eclipse.emf.transaction.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` `setEditingDomain​(org.eclipse.emf.transaction.TransactionalEditingDomain editingDomain)`
`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 org.eclipse.core.runtime.PlatformObject

`getAdapter`

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

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

### Field Detail

#### diagramBehavior

    protected final DiagramBehavior diagramBehavior

Since:
  0.10

### Constructor Detail

#### DefaultUpdateBehavior

    public DefaultUpdateBehavior​(DiagramBehavior diagramBehavior)

Creates a new `DefaultUpdateBehavior` instance associated with the given `DiagramBehavior`.

Parameters:
  `diagramEditor` - the part this model editor works on
Since:
  0.10

### 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 org.eclipse.emf.transaction.TransactionalEditingDomain getEditingDomain()

This returns the editing domain as required by the `IEditingDomainProvider` interface.

Specified by:
  `getEditingDomain` in interface `org.eclipse.emf.edit.domain.IEditingDomainProvider`
Returns:
  The `TransactionalEditingDomain` that is used within this editor

#### init

    public void init()

Initializes listeners and adapters.

#### createUpdateAdapter

    protected org.eclipse.emf.common.notify.Adapter createUpdateAdapter()

Hook to create an `updateAdapter` that cares about updating the diagram editor. The default implementation simply creates a `DefaultUpdateBehavior.DefaultUpdateAdapter`.

Returns:
  The newly created adapter
Since:
  0.11

#### getUpdateAdapter

    protected org.eclipse.emf.common.notify.Adapter getUpdateAdapter()

Returns the `updateAdapter` of this instance or `null` in case the adapter has not yet been initialized.

Returns:
Since:
  0.11

#### createEditingDomain

    protected void createEditingDomain​(IDiagramEditorInput input)

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

Parameters:
  `input` - The `IDiagramEditorInput` instance that was used to open the `IDiagramContainer`.
Since:
  0.11

#### initializeEditingDomain

    protected void initializeEditingDomain​(org.eclipse.emf.transaction.TransactionalEditingDomain domain)

This sets up the editing domain for this model editor.

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

#### createWorkspaceSynchronizerDelegate

    protected org.eclipse.emf.workspace.util.WorkspaceSynchronizer.Delegate createWorkspaceSynchronizerDelegate()

Can be overridden to return a client specific implementation of a `WorkspaceSynchronizer` `WorkspaceSynchronizer.Delegate` object. Graphiti uses the returned instance to manage and react on changes done to the resources tied to the diagram outside of the diagram editor's TransactionalEditingDomain.

Returns:
  The delegate to use. The default implementation return's Graphiti's own implementation of such a delegate that should be sufficient for most client editors. Might return `null`; in this case no `WorkspaceSynchronizer` will be installed.
Since:
  0.10

#### 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​(org.eclipse.core.commands.operations.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.

Specified by:
  `historyNotification` in interface `org.eclipse.core.commands.operations.IOperationHistoryListener`
Parameters:
  `event` - the `OperationHistoryEvent` to react upon

#### closeContainer

    protected void closeContainer()

Closes the `IDiagramContainerUI` (usually a diagram Editor) behind this `DefaultUpdateBehavior` instance. Called e.g. when the diagram resource underneath the editor has been deleted.

Since:
  0.11

#### getOperationHistory

    protected org.eclipse.core.commands.operations.IOperationHistory getOperationHistory()

Returns the `IOperationHistory` for the command stack. The default implementation retrieves the command stack of the current `TransactionalEditingDomain` and returns its operation history.

Returns:
  The operation history
Since:
  0.11

#### setEditingDomain

    public void setEditingDomain​(org.eclipse.emf.transaction.TransactionalEditingDomain editingDomain)

Since:
  0.10