Class 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
    • Field Detail

      • diagramBehavior

        protected final DiagramBehavior diagramBehavior
        Since:
        0.10
    • Constructor Detail

    • 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.
      • 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.
      • 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
      • 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