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 
    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
     
  • Constructor Summary

    Constructors
    Constructor
    Description
    Creates a new DefaultUpdateBehavior instance associated with the given DiagramBehavior.
  • Method Summary

    Modifier and Type
    Method
    Description
    protected void
    Closes the IDiagramContainerUI (usually a diagram Editor) behind this DefaultUpdateBehavior instance.
    protected void
    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
    Hook to create an updateAdapter that cares about updating the diagram editor.
    protected org.eclipse.emf.workspace.util.WorkspaceSynchronizer.Delegate
    Can be overridden to return a client specific implementation of a WorkspaceSynchronizer WorkspaceSynchronizer.Delegate object.
    void
    Disposes this DefaultUpdateBehavior and free all resources it holds.
    protected void
    Cares about disposing the TransactionalEditingDomain held in this instance.
    org.eclipse.emf.transaction.TransactionalEditingDomain
    This returns the editing domain as required by the IEditingDomainProvider interface.
    protected org.eclipse.core.commands.operations.IOperationHistory
    Returns the IOperationHistory for the command stack.
    protected org.eclipse.emf.common.notify.Adapter
    Returns the updateAdapter of this instance or null in case the adapter has not yet been initialized.
    void
    Handles activation of the editor.
    protected void
    Handles what to do with changed resources on editor activation.
    protected boolean
    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
    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
    Returns the flag that indicates if the updateAdapter shall be active of not (adapterActive).
    protected boolean
    Returns the flag that indicates if the underlying resource of the Diagram has been changed.
    protected boolean
    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

  • 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