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
Modifier and Type
Class
Description
`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
Modifier and Type
Field
Description
`protected final DiagramBehavior`
`diagramBehavior`

## Constructor Summary

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

## Method Summary

Modifier and Type
Method
Description
`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 Details

### diagramBehavior

protected final DiagramBehavior diagramBehavior

Since:
  0.10

## Constructor Details

### 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 Details

### 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