Package org.eclipse.graphiti.ui.editor

# Class DiagramBehavior

java.lang.Object
org.eclipse.graphiti.ui.editor.DiagramBehavior

All Implemented Interfaces:
  `IDiagramBehavior`, `IDiagramBehaviorUI`

public class DiagramBehavior extends Object implements IDiagramBehaviorUI
Provides the common functionality needed to display and manage diagrams. Diagrams can be displayed either in a simple SWT `Composite`, in a `ViewPart` or in an `IEditorPart`, so it's not possible to provide common functionality through sub-classing.

Since:
  0.10

## Constructor Summary

Constructors
Constructor
Description
`DiagramBehavior(IDiagramContainerUI diagramContainer)`

## Method Summary

Modifier and Type
Method
Description
`protected void`
`addGefListeners()`
Adds the needed GEF listeners after the edit domain is initialized
`org.eclipse.draw2d.geometry.Point`
`calculateRealMouseLocation(org.eclipse.draw2d.geometry.Point nativeLocation)`
Calculates the mouse location depending on scrollbars and zoom factor.
`protected void`
`configureGraphicalViewer()`
Called to configure the behavior viewer, before it receives its content.
`protected List<org.eclipse.jface.util.TransferDropTargetListener>`
`createBusinessObjectDropTargetListeners()`
Creates a list of drop target listeners that enable dropping domain objects into the diagram, e.g.
`protected IConfigurationProvider`
`createConfigurationProvider(IDiagramTypeProvider diagramTypeProvider)`
Creates a new `ConfigurationProvider` for this `DiagramBehavior` and the given `IDiagramTypeProvider`.
`protected org.eclipse.gef.ContextMenuProvider`
`createContextMenuProvider()`
Returns a new `ContextMenuProvider`.
`protected void`
`createErrorPartControl(org.eclipse.swt.widgets.Composite parent)`
Creates the default error page in case an error occurred while initializing this behavior.
`protected void`
`createGraphicalViewer(org.eclipse.swt.widgets.Composite parent)`
Creates the GraphicalViewer on the specified `Composite` and initializes it.
`protected DefaultMarkerBehavior`
`createMarkerBehavior()`
Creates the behavior extension that deals with markers.
`protected DefaultPaletteBehavior`
`createPaletteBehaviour()`
Creates the behavior extension that deals with the palette handling.
`protected org.eclipse.jface.util.TransferDropTargetListener`
`createPaletteDropTargetListener()`
Creates the drop target listener that is used for adding new objects from the palette via drag and drop.
`protected final org.eclipse.gef.ui.palette.PaletteViewerProvider`
`createPaletteViewerProvider()`
Delegates to the method (or the method in a subclass of) `#createPaletteViewerProvider()` to create the `PaletteViewerProvider` used inside the GEF editor.
`protected DefaultPersistencyBehavior`
`createPersistencyBehavior()`
Creates the behavior extension that deals with the persistence handling.
`protected DefaultRefreshBehavior`
`createRefreshBehavior()`
Creates the behavior extension that deals with the refresh handling.
`protected org.eclipse.jface.resource.ResourceManager`
`createResourceManager()`
Creates a new instance of a `ResourceManager` implementation.
`protected DefaultUpdateBehavior`
`createUpdateBehavior()`
Creates the behavior extension that deals with the update handling.
`void`
`disableAdapters()`
Should be called (e.g.
`protected void`
`disposeAfterGefDispose()`
The part of the dispose that should happen after the GEF dispose.
`protected void`
`disposeBeforeGefDispose()`
The part of the dispose that should happen before the GEF dispose.
`protected void`
`editingDomainInitialized()`
Hook that is called by the holder of the `TransactionalEditingDomain` (`DefaultUpdateBehavior` or a subclass of it) after the editing domain has been initialized.
`void`
`enableAdapters()`
Should be called by the various behavior instances after mass EMF resource operations have been triggered (e.g.
`Object`
`executeFeature(IFeature feature, IContext context)`
Executes the given `IFeature` with the given `IContext` in the scope of this `DiagramBehavior`, meaning within its `TransactionalEditingDomain` and on its `CommandStack`.
`Object`
`getAdapter(Class type)`
Implements the Eclipse `IAdaptable` interface.
`protected org.eclipse.gef.KeyHandler`
`getCommonKeyHandler()`
Returns the KeyHandler with common bindings to be used for both the Outline and the Graphical Viewer.
`IConfigurationProvider`
`getConfigurationProvider()`
Returns the `ConfigurationProvider` for this behavior.
`org.eclipse.gef.EditPart`
`getContentEditPart()`
Returns the contents `EditPart` of this behavior.
`IDiagramContainerUI`
`getDiagramContainer()`
Returns the associated container displaying the diagram of this behavior object.
`IDiagramTypeProvider`
`getDiagramTypeProvider()`
Returns the `IDiagramTypeProvider` instance associated with this `DiagramBehavior`.
`protected String`
`getDiagramTypeProviderId(Diagram diagram)`
Gets the diagram type provider ID for the diagram.
`org.eclipse.gef.DefaultEditDomain`
`getEditDomain()`
Delegation method to retrieve the GEF edit domain also here.
`org.eclipse.emf.transaction.TransactionalEditingDomain`
`getEditingDomain()`
Returns the EMF `TransactionalEditingDomain` used within this behavior object by delegating to the update behavior extension, by default `DefaultUpdateBehavior.getEditingDomain()`.
`protected String`
`getEditorInitializationError()`
Returns the error text of the error that occurred while initializing this behavior and its components.
`org.eclipse.gef.GraphicalEditPart`
`getEditPartForPictogramElement(PictogramElement pe)`
Method to retrieve the GEF `EditPart` for a given `PictogramElement`.
`org.eclipse.draw2d.IFigure`
`getFigureForPictogramElement(PictogramElement pe)`
Method to retrieve the Draw2D `IFigure` for a given `PictogramElement`.
`protected IDiagramEditorInput`
`getInput()`
Returns the `DiagramEditorInput` instance used in this behavior.
`protected DefaultMarkerBehavior`
`getMarkerBehavior()`
Returns the instance of the marker behavior that is used with this behavior.
`org.eclipse.draw2d.geometry.Point`
`getMouseLocation()`
Gets the current mouse location as a `Point`.
`protected DefaultPaletteBehavior`
`getPaletteBehavior()`
Returns the instance of the palette behavior that is used with this behavior.
`protected final org.eclipse.gef.ui.palette.FlyoutPaletteComposite.FlyoutPreferences`
`getPalettePreferences()`
Delegates to the method (or the method in a subclass of) `DefaultPaletteBehavior.getPalettePreferences()`.
`protected final org.eclipse.gef.palette.PaletteRoot`
`getPaletteRoot()`
Returns the `PaletteRoot` to use in the GEF editor by delegating to `DefaultPaletteBehavior.getPaletteRoot()`.
`protected org.eclipse.ui.IWorkbenchPart`
`getParentPart()`
Returns the parent `IWorkbenchPart` this behavior is embedded into.
`protected DefaultPersistencyBehavior`
`getPersistencyBehavior()`
Returns the instance of the persistency behavior that is used with this behavior.
`protected PictogramElement[]`
`getPictogramElementsForSelection()`
Returns the `PictogramElement`s that are set for later selection.
`DefaultRefreshBehavior`
`getRefreshBehavior()`
Returns the instance of the refresh behavior that is used with this behavior.
`org.eclipse.jface.resource.ResourceManager`
`getResourceManager()`
`org.eclipse.emf.ecore.resource.ResourceSet`
`getResourceSet()`
The EMF `ResourceSet` used within this `DiagramBehavior`.
`PictogramElement[]`
`getSelectedPictogramElements()`
Returns the `PictogramElement`s that are currently selected in the diagram.
`DefaultUpdateBehavior`
`getUpdateBehavior()`
Returns the instance of the update behavior that is used with this behavior.
`double`
`getZoomLevel()`
Returns the zoom level currently used in the diagram.
`protected void`
`initActionRegistry(org.eclipse.gef.editparts.ZoomManager zoomManager)`
Initializes the action registry with the predefined actions (update, remove, delete, copy, paste, zooming, direct editing, alignment and toggling actions for the diagram grip and hiding of the context button pad.
`protected void`
`initConfigurationProvider(IDiagramTypeProvider diagramTypeProvider)`
Initializes the given `IConfigurationProvider` for this `DiagramBehavior` instance and sets it.
`protected void`
`initDefaultBehaviors()`
Hook to initialize the default sub behavior instances used by this editor behavior.
`protected IDiagramTypeProvider`
`initDiagramTypeProvider(Diagram diagram)`
Creates and initializes a new `IDiagramTypeProvider` for the given `Diagram` and diagram type provider ID.
`protected void`
`initializeGraphicalViewer()`
Called to initialize the behavior viewer with its content.
`boolean`
`isAlive()`
Checks if this behavior is alive.
`boolean`
`isDirectEditingActive()`
Returns if direct editing is currently active for this behavior.
`protected boolean`
`isDirty()`
Returns the dirty state of this behavior object
`protected void`
`migrateDiagramModelIfNecessary()`
We provide migration from 0.8.0 to 0.9.0.
`void`
`refresh()`
Triggers a complete refresh of the behavior visualization (content, title, tooltip, palette and decorators) by delegating to `DefaultRefreshBehavior.refresh()`.
`void`
`refreshContent()`
Refreshes the content of the editor (what's shown inside the diagram itself).
`void`
`refreshPalette()`
Refreshes the palette to correctly reflect all available creation tools for the available create features and the currently enabled selection tools.
`void`
`refreshRenderingDecorators(PictogramElement pe)`
Refreshes the rendering decorators (image decorators and the like) by delegating to `DefaultRefreshBehavior.refreshRenderingDecorators(PictogramElement)` for the given `PictogramElement`.
`protected void`
`registerAction(org.eclipse.jface.action.IAction action)`
Registers the given action with the Eclipse `ActionRegistry`.
`protected void`
`registerBusinessObjectsListener()`
Hook that is called to register listeners for changes of the business objects (domain objects) in the resource set of the editor.
`protected void`
`registerDiagramResourceSetListener()`
Hook to register listeners for diagram changes.
`void`
`selectBufferedPictogramElements()`
Triggers the selection for the `PictogramElement`s that are stored for later selection.
`protected void`
`selectPictogramElements(PictogramElement[] pictogramElements)`
Selects the given `PictogramElement`s in the diagram.
`protected void`
`setDiagramContainer(IDiagramContainerUI diagramContainer)`
Setter for the associated `container` displaying the diagram of this behavior.
`protected void`
`setDiagramEditorInput(IDiagramEditorInput diagramEditorInput)`
Setter for the field storing the editor input.
`void`
`setDirectEditingActive(boolean directEditingActive)`
Sets that direct editing is now active in the behavior or not.
`protected void`
`setEditorInitializationError(String editorInitializationError)`
Sets the error text for an error that occured during the initialization of this `DiagramEditor`.
`protected void`
`setInput(IDiagramEditorInput input)`
Sets the given `IDiagramEditorInput` object as the input for this behavior instance.
`protected void`
`setParentPart(org.eclipse.ui.IWorkbenchPart parentPart)`
Sets the parent `IWorkbenchPart` for this behavior.
`void`
`setPictogramElementForSelection(PictogramElement pictogramElement)`
Sets one `PictogramElement` for later selection.
`protected void`
`setPictogramElementsForSelection(PictogramElement[] pictogramElements)`
Sets `PictogramElement`s for later selection.
`protected boolean`
`shouldRegisterContextMenu()`
Allows subclasses to prevent that the diagram context menu should be registered for extensions at Eclipse.
`protected void`
`unregisterBusinessObjectsListener()`
Hook that is called to unregister the listeners for changes of the business objects (domain objects).
`protected void`
`unregisterDiagramResourceSetListener()`
Hook to unregister the listeners for diagram changes.

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

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

## Constructor Details

### DiagramBehavior

public DiagramBehavior(IDiagramContainerUI diagramContainer)

## Method Details

### setDiagramContainer

protected void setDiagramContainer(IDiagramContainerUI diagramContainer)
Setter for the associated `container` displaying the diagram of this behavior. Note that once the container has been set it must not be changed any more.

Parameters:
  `diagramContainer` - the diagramContainer to set
Since:
  0.12

### getDiagramContainer

public IDiagramContainerUI getDiagramContainer()
Returns the associated container displaying the diagram of this behavior object.

Specified by:
  `getDiagramContainer` in interface `IDiagramBehavior`
Returns:
  The associated `IDiagramContainerUI` instance.

### createMarkerBehavior

protected DefaultMarkerBehavior createMarkerBehavior()
Creates the behavior extension that deals with markers. See `DefaultMarkerBehavior` for details and the default implementation. Override to change the marker behavior.

Returns:
  a new instance of `DefaultMarkerBehavior`

### getMarkerBehavior

protected DefaultMarkerBehavior getMarkerBehavior()
Returns the instance of the marker behavior that is used with this behavior. To change the behavior override `createMarkerBehavior()` .

Returns:
  the used instance of the marker behavior, by default a `DefaultMarkerBehavior`.

### createUpdateBehavior

protected DefaultUpdateBehavior createUpdateBehavior()
Creates the behavior extension that deals with the update handling. See `DefaultUpdateBehavior` for details and the default implementation. Override to change the update behavior.

Returns:
  a new instance of `DefaultUpdateBehavior`

### getUpdateBehavior

public DefaultUpdateBehavior getUpdateBehavior()
Returns the instance of the update behavior that is used with this behavior. To change the behavior override `createUpdateBehavior()` .

Returns:
  the used instance of the marker behavior, by default a `DefaultUpdateBehavior`.

### createPaletteBehaviour

protected DefaultPaletteBehavior createPaletteBehaviour()
Creates the behavior extension that deals with the palette handling. See `DefaultPaletteBehavior` for details and the default implementation. Override to change the palette behavior.

Returns:
  a new instance of `DefaultPaletteBehavior`

### getPaletteBehavior

protected DefaultPaletteBehavior getPaletteBehavior()
Returns the instance of the palette behavior that is used with this behavior. To change the behavior override `createPaletteBehaviour()` .

Returns:
  the used instance of the palette behavior, by default a `DefaultPaletteBehavior`.

### createPersistencyBehavior

protected DefaultPersistencyBehavior createPersistencyBehavior()
Creates the behavior extension that deals with the persistence handling. See `DefaultPersistencyBehavior` for details and the default implementation. Override to change the persistence behavior.

Returns:
  a new instance of `DefaultPersistencyBehavior`

### getPersistencyBehavior

protected DefaultPersistencyBehavior getPersistencyBehavior()
Returns the instance of the persistency behavior that is used with this behavior. To change the behavior override `createPersistencyBehavior()` .

Returns:
  the used instance of the persistency behavior, by default a `DefaultPersistencyBehavior`.

### createRefreshBehavior

protected DefaultRefreshBehavior createRefreshBehavior()
Creates the behavior extension that deals with the refresh handling. See `DefaultRefreshBehavior` for details and the default implementation. Override to change the refresh behavior.

Returns:
  a new instance of `DefaultRefreshBehavior`

### getRefreshBehavior

public DefaultRefreshBehavior getRefreshBehavior()
Returns the instance of the refresh behavior that is used with this behavior. To change the behavior override `createRefreshBehavior()` .

Returns:
  the used instance of the refresh behavior, by default a `DefaultRefreshBehavior`.

### initDefaultBehaviors

protected void initDefaultBehaviors()
Hook to initialize the default sub behavior instances used by this editor behavior. The default implementation simply delegates to the create methods for the various objects. In case other default behavior implementation should be used, clients should override these create methods instead of this method.

See Also:
  - `createMarkerBehavior()`
  - `createUpdateBehavior()`
  - `createPaletteBehaviour()`
  - `createPersistencyBehavior()`
  - `createRefreshBehavior()`

### setInput

protected void setInput(IDiagramEditorInput input)
Sets the given `IDiagramEditorInput` object as the input for this behavior instance. The default implementation here cares about loading the diagram from the EMF
invalid reference

    Resource

the input points to, sets the ID of the `IDiagramTypeProvider` for the diagram given in the input, registers listeners (by delegating to `registerDiagramResourceSetListener()` and `registerBusinessObjectsListener()`) and does the refreshing of the UI.

Parameters:
  `input` - the `DiagramEditorInput` instance to use within this behavior.

### initDiagramTypeProvider

protected IDiagramTypeProvider initDiagramTypeProvider(Diagram diagram)
Creates and initializes a new `IDiagramTypeProvider` for the given `Diagram` and diagram type provider ID.

Parameters:
  `diagram` - The diagram
  `providerId` - The diagram type provider ID
Since:
  0.12

### getDiagramTypeProviderId

protected String getDiagramTypeProviderId(Diagram diagram)
Gets the diagram type provider ID for the diagram. The default implementation checks if the input defines one and will use that that, otherwise it will retrieve the ID of the first diagram type provider that is registered for the type of the passed diagram. In case no ID is found this method will set the editor initialization error and throw an `AssertionFailedException`.

Parameters:
  `diagram` - The diagram to find the ID for.
Since:
  0.12

### addGefListeners

protected void addGefListeners()
Adds the needed GEF listeners after the edit domain is initialized

### createGraphicalViewer

protected void createGraphicalViewer(org.eclipse.swt.widgets.Composite parent)
Creates the GraphicalViewer on the specified `Composite` and initializes it.

Parameters:
  `parent` - the parent composite

### configureGraphicalViewer

protected void configureGraphicalViewer()
Called to configure the behavior viewer, before it receives its content. The default-implementation is for example doing the following: configure the ZoomManager, registering Actions... Here everything is done, which is independent of the `IConfigurationProvider`.

See Also:
  - `GraphicalEditor.configureGraphicalViewer()`

### initializeGraphicalViewer

protected void initializeGraphicalViewer()
Called to initialize the behavior viewer with its content. Here everything is done, which is dependent of the `IConfigurationProvider`.

See Also:
  - `GraphicalEditorWithFlyoutPalette.initializeGraphicalViewer()`

### createPaletteDropTargetListener

protected org.eclipse.jface.util.TransferDropTargetListener createPaletteDropTargetListener()
Creates the drop target listener that is used for adding new objects from the palette via drag and drop. Clients may change the default behavior by providing their own drop target listener or disable drag and drop from the palette by returning null.

Returns:
  An instance of the `TransferDropTargetListener` that handles dropping new objects from the palette or `null` to disable dropping from the palette.
Since:
  0.10

### createBusinessObjectDropTargetListeners

protected List<org.eclipse.jface.util.TransferDropTargetListener> createBusinessObjectDropTargetListeners()
Creates a list of drop target listeners that enable dropping domain objects into the diagram, e.g. from the project explorer. By adding additional listeners other sources may be enabled, simply returning an empty list will disable drag and drop into the editor.

Returns:
  a `List` containing all the `TransferDropTargetListener` that shall be registered in the editor.
Since:
  0.10

### getEditorInitializationError

protected String getEditorInitializationError()
Returns the error text of the error that occurred while initializing this behavior and its components. In case this method reports the error text and error UI may be shown instead of the normal diagram viewer.

Returns:
  The error text in case an error has occurred, `null` otherwise

### setEditorInitializationError

protected void setEditorInitializationError(String editorInitializationError)
Sets the error text for an error that occured during the initialization of this `DiagramEditor`. Setting a `non-null` value indicates an error has occurred, setting `null` indicates everything went fine.

Parameters:
  `editorInitializationError` - The error message
Since:
  0.12

### createErrorPartControl

protected void createErrorPartControl(org.eclipse.swt.widgets.Composite parent)
Creates the default error page in case an error occurred while initializing this behavior.

Parameters:
  `parent` - The parent `Composite` to add the UI to

### isDirty

protected boolean isDirty()
Returns the dirty state of this behavior object

Returns:
  `true` in case the stored saved command is different from the next undo command.

### createPaletteViewerProvider

protected final org.eclipse.gef.ui.palette.PaletteViewerProvider createPaletteViewerProvider()
Delegates to the method (or the method in a subclass of) `#createPaletteViewerProvider()` to create the `PaletteViewerProvider` used inside the GEF editor.

Returns:
  the `PaletteViewerProvider` to use

### getPalettePreferences

protected final org.eclipse.gef.ui.palette.FlyoutPaletteComposite.FlyoutPreferences getPalettePreferences()
Delegates to the method (or the method in a subclass of) `DefaultPaletteBehavior.getPalettePreferences()`. To change the palette override the behavior there.

Returns:
  the `PaletteViewerProvider` preferences to use.

### getPaletteRoot

protected final org.eclipse.gef.palette.PaletteRoot getPaletteRoot()
Returns the `PaletteRoot` to use in the GEF editor by delegating to `DefaultPaletteBehavior.getPaletteRoot()`.

Returns:
  the `PaletteRoot` to use

### refresh

public void refresh()
Triggers a complete refresh of the behavior visualization (content, title, tooltip, palette and decorators) by delegating to `DefaultRefreshBehavior.refresh()`.

Specified by:
  `refresh` in interface `IDiagramBehavior`

### refreshRenderingDecorators

public void refreshRenderingDecorators(PictogramElement pe)
Refreshes the rendering decorators (image decorators and the like) by delegating to `DefaultRefreshBehavior.refreshRenderingDecorators(PictogramElement)` for the given `PictogramElement`.

Specified by:
  `refreshRenderingDecorators` in interface `IDiagramBehavior`
Parameters:
  `pe` - the `PictogramElement` for which the decorators shall be refreshed.

### refreshPalette

public void refreshPalette()
Refreshes the palette to correctly reflect all available creation tools for the available create features and the currently enabled selection tools.

Specified by:
  `refreshPalette` in interface `IDiagramBehavior`

### refreshContent

public void refreshContent()
Refreshes the content of the editor (what's shown inside the diagram itself).

Specified by:
  `refreshContent` in interface `IDiagramBehavior`

### selectPictogramElements

protected void selectPictogramElements(PictogramElement[] pictogramElements)
Selects the given `PictogramElement`s in the diagram.

Parameters:
  `pictogramElements` - an array of `PictogramElement`s to select.

### getSelectedPictogramElements

public PictogramElement[] getSelectedPictogramElements()
Returns the `PictogramElement`s that are currently selected in the diagram.

Returns:
  an array of `PictogramElement`s.

### setPictogramElementForSelection

public void setPictogramElementForSelection(PictogramElement pictogramElement)
Sets one `PictogramElement` for later selection.

The methods `getPictogramElementsForSelection()`, `setPictogramElementForSelection(PictogramElement)`, `setPictogramElementsForSelection(PictogramElement[])` and `selectBufferedPictogramElements()` offer the possibility to use a deferred selection mechanism: via the setters, `PictogramElement`s can be stored for a selection operation that is triggered lateron during a general refresh via the method `selectBufferedPictogramElements()`. This mechanism is used e.g. in the Graphiti framework in direct editing to restore the previous selection, but can also be used by clients.

Parameters:
  `pictogramElement` - the `PictogramElement` that shall be stored for later selection

### setPictogramElementsForSelection

protected void setPictogramElementsForSelection(PictogramElement[] pictogramElements)
Sets `PictogramElement`s for later selection.

The methods `getPictogramElementsForSelection()`, `setPictogramElementForSelection(PictogramElement)`, `setPictogramElementsForSelection(PictogramElement[])` and `selectBufferedPictogramElements()` offer the possibility to use a deferred selection mechanism: via the setters, `PictogramElement`s can be stored for a selection operation that is triggered later on during a general refresh via the method `selectBufferedPictogramElements()`. This mechanism is used e.g. in the Graphiti framework in direct editing to restore the previous selection, but can also be used by clients.

Parameters:
  `pictogramElements` - the `PictogramElement`s that shall be stored for later selection

### selectBufferedPictogramElements

public void selectBufferedPictogramElements()
Triggers the selection for the `PictogramElement`s that are stored for later selection. Can be called e.g during a general refresh of the editor or after another operation needing another selection is finished (an example in the framework is direct editing).

The methods `getPictogramElementsForSelection()`, `setPictogramElementForSelection(PictogramElement)`, `setPictogramElementsForSelection(PictogramElement[])` and `selectBufferedPictogramElements()` offer the possibility to use a deferred selection mechanism: via the setters, `PictogramElement`s can be stored for a selection operation that is triggered later on during a general refresh via the method `selectBufferedPictogramElements()`. This mechanism is used e.g. in the Graphiti framework in direct editing to restore the previous selection, but can also be used by clients.

### getPictogramElementsForSelection

protected PictogramElement[] getPictogramElementsForSelection()
Returns the `PictogramElement`s that are set for later selection.

The methods `getPictogramElementsForSelection()`, `setPictogramElementForSelection(PictogramElement)`, `setPictogramElementsForSelection(PictogramElement[])` and `selectBufferedPictogramElements()` offer the possibility to use a deferred selection mechanism: via the setters, `PictogramElement`s can be stored for a selection operation that is triggered lateron during a general refresh via the method `selectBufferedPictogramElements()`. This mechanism is used e.g. in the Graphiti framework in direct editing to restore the previous selection, but can also be used by clients.

Returns:
  the `PictogramElement`s stored for later selection

### getEditingDomain

public org.eclipse.emf.transaction.TransactionalEditingDomain getEditingDomain()
Returns the EMF `TransactionalEditingDomain` used within this behavior object by delegating to the update behavior extension, by default `DefaultUpdateBehavior.getEditingDomain()`.

Specified by:
  `getEditingDomain` in interface `IDiagramBehavior`
Returns:
  the `TransactionalEditingDomain` instance used in the behavior

### getResourceSet

public org.eclipse.emf.ecore.resource.ResourceSet getResourceSet()
The EMF `ResourceSet` used within this `DiagramBehavior`. The resource set is always associated in a 1:1 relation to the `TransactionalEditingDomain`.

Returns:
  the resource set used within this behavior object

### getDiagramTypeProvider

public IDiagramTypeProvider getDiagramTypeProvider()
Returns the `IDiagramTypeProvider` instance associated with this `DiagramBehavior`. There is always a 1:1 relation between the behavior and the provider.

Returns:
  the associated `IDiagramTypeProvider` instance.

### executeFeature

public Object executeFeature(IFeature feature, IContext context)
Executes the given `IFeature` with the given `IContext` in the scope of this `DiagramBehavior`, meaning within its `TransactionalEditingDomain` and on its `CommandStack`.

Specified by:
  `executeFeature` in interface `IDiagramBehavior`
Parameters:
  `feature` - the feature to execute
  `context` - the context to use. In case the passed feature is a `IAddFeature` this context needs to be an instance of `IAddContext`, otherwise an `AssertionFailedException` will be thrown.
Returns:
  in case of an `IAddFeature` being passed as feature the newly added `PictogramElement` will be returned (in case the add method returning it), in all other cases `null`
Since:
  0.9

### disableAdapters

public void disableAdapters()
Should be called (e.g. by the various behavior instances) before mass EMF resource operations are triggered (e.g. saving all resources). Can be used to disable eventing for performance reasons. See `enableAdapters()` as well.
Important note: make sure that you re-enable eventing using `enableAdapters()` after the operation has finished (best in a finally clause to do that also in case of exceptions), otherwise strange errors may happen.

Since:
  0.12

### enableAdapters

public void enableAdapters()
Should be called by the various behavior instances after mass EMF resource operations have been triggered (e.g. saving all resources). Can be used to re-enable eventing after it was disabled for performance reasons. See `disableAdapters()` as well.
Must be called after `disableAdapters()` has been called and the operation has finshed (best in a finally clause to also enable the exception case), otherwise strange errors may occur within the editor.

Since:
  0.12

### isAlive

public boolean isAlive()
Checks if this behavior is alive.

Returns:
  `true`, if editor contains a model connector and a valid Diagram, `false` otherwise.

### editingDomainInitialized

protected void editingDomainInitialized()
Hook that is called by the holder of the `TransactionalEditingDomain` (`DefaultUpdateBehavior` or a subclass of it) after the editing domain has been initialized. Can be used to e.g. register additional listeners on the domain.
The default implementation notifies the marker behavior extension to register its listeners.

### getAdapter

public Object getAdapter(Class type)
Implements the Eclipse `IAdaptable` interface. This implementation first delegates to the `IToolBehaviorProvider.getAdapter(Class)` method and checks if something is returned. In case the return value is `null` it returns adapters for ZoomManager, IPropertySheetPage, Diagram, KeyHandler, SelectionSynchronizer and IContextButtonManager. It also delegates to the super implementation in `GraphicalEditorWithFlyoutPalette.getAdapter(Class)`.

Parameters:
  `type` - the type to which shall be adapted
Returns:
  the adapter instance

### getConfigurationProvider

public IConfigurationProvider getConfigurationProvider()
Returns the `ConfigurationProvider` for this behavior. It is mainly a wrapper around various objects that are connected to the diagram behavior.

Returns:
  an `IConfigurationProvider` instance.
Since:
  0.12

### getContentEditPart

public org.eclipse.gef.EditPart getContentEditPart()
Returns the contents `EditPart` of this behavior. This is the topmost EditPart in the `GraphicalViewer`.

Returns:
  The contents `EditPart` of this behavior.

### getEditPartForPictogramElement

public org.eclipse.gef.GraphicalEditPart getEditPartForPictogramElement(PictogramElement pe)
Method to retrieve the GEF `EditPart` for a given `PictogramElement`.

Specified by:
  `getEditPartForPictogramElement` in interface `IDiagramBehaviorUI`
Parameters:
  `pe` - the `PictogramElement` to retrieve the GEF representation for
Returns:
  the GEF `GraphicalEditPart` that represents the given `PictogramElement`.

### getMouseLocation

public org.eclipse.draw2d.geometry.Point getMouseLocation()
Gets the current mouse location as a `Point`.

Returns:
  the mouse location

### calculateRealMouseLocation

public org.eclipse.draw2d.geometry.Point calculateRealMouseLocation(org.eclipse.draw2d.geometry.Point nativeLocation)
Calculates the mouse location depending on scrollbars and zoom factor.

Specified by:
  `calculateRealMouseLocation` in interface `IDiagramBehaviorUI`
Parameters:
  `nativeLocation` - the native location given as `Point`
Returns:
  the `Point` of the real mouse location

### isDirectEditingActive

public boolean isDirectEditingActive()
Returns if direct editing is currently active for this behavior.

Returns:
  `true` in case direct editing is currently active within this editor, `false` otherwise.

### setDirectEditingActive

public void setDirectEditingActive(boolean directEditingActive)
Sets that direct editing is now active in the behavior or not. Note that this flag set to `true` does not actually start direct editing it is simply an indication that prevents certain operations from running (e.g. refresh)

Parameters:
  `directEditingActive` - `true` to set the flag to direct editing currently active, `false` otherwise.

### getZoomLevel

public double getZoomLevel()
Returns the zoom level currently used in the diagram.

Returns:
  the zoom level

### getFigureForPictogramElement

public org.eclipse.draw2d.IFigure getFigureForPictogramElement(PictogramElement pe)
Method to retrieve the Draw2D `IFigure` for a given `PictogramElement`.

Specified by:
  `getFigureForPictogramElement` in interface `IDiagramBehaviorUI`
Parameters:
  `pe` - the `PictogramElement` to retrieve the Draw2D representation for
Returns:
  the Draw2D `IFigure` that represents the given `PictogramElement`.

### initConfigurationProvider

protected void initConfigurationProvider(IDiagramTypeProvider diagramTypeProvider)
Initializes the given `IConfigurationProvider` for this `DiagramBehavior` instance and sets it.

Parameters:
  `configurationProvider` - The configuration provider
Since:
  0.12

### createConfigurationProvider

protected IConfigurationProvider createConfigurationProvider(IDiagramTypeProvider diagramTypeProvider)
Creates a new `ConfigurationProvider` for this `DiagramBehavior` and the given `IDiagramTypeProvider`. The default implementation will create a default `ConfigurationProvider` which should suite for all Graphiti clients.

Since:
  0.12

### createContextMenuProvider

protected org.eclipse.gef.ContextMenuProvider createContextMenuProvider()
Returns a new `ContextMenuProvider`. Clients can return null, if no context-menu shall be displayed.

Returns:
  A new instance of `ContextMenuProvider`.

### shouldRegisterContextMenu

protected boolean shouldRegisterContextMenu()
Allows subclasses to prevent that the diagram context menu should be registered for extensions at Eclipse. By default others can provide extensions to the menu (default return value of this method is `true`). By returning `false` any extension of the context menu can be prevented.

For details see Bugzilla 345347 (https://bugs.eclipse.org/bugs/show_bug.cgi?id=345347).

Returns:
  `true` in case extensions shall be allowed (default), `false` otherwise.
Since:
  0.9

### registerAction

protected void registerAction(org.eclipse.jface.action.IAction action)
Registers the given action with the Eclipse `ActionRegistry`.

Parameters:
  `action` - the action to register
Since:
  0.9

### initActionRegistry

protected void initActionRegistry(org.eclipse.gef.editparts.ZoomManager zoomManager)
Initializes the action registry with the predefined actions (update, remove, delete, copy, paste, zooming, direct editing, alignment and toggling actions for the diagram grip and hiding of the context button pad.

Parameters:
  `zoomManager` - the GEF zoom manager to use

### getCommonKeyHandler

protected org.eclipse.gef.KeyHandler getCommonKeyHandler()
Returns the KeyHandler with common bindings to be used for both the Outline and the Graphical Viewer.

Returns:
  The KeyHandler with common bindings for both the Outline and the Graphical Viewer.
Since:
  0.9

### unregisterDiagramResourceSetListener

protected void unregisterDiagramResourceSetListener()
Hook to unregister the listeners for diagram changes.

See Also:
  - `registerDiagramResourceSetListener()`

### unregisterBusinessObjectsListener

protected void unregisterBusinessObjectsListener()
Hook that is called to unregister the listeners for changes of the business objects (domain objects).

See Also:
  - `registerBusinessObjectsListener()`

### registerDiagramResourceSetListener

protected void registerDiagramResourceSetListener()
Hook to register listeners for diagram changes. The listener will be notified with all events and has to filter for the ones regarding the diagram.
Note that additional listeners registered here should also be unregistered in `unregisterDiagramResourceSetListener()`.

### registerBusinessObjectsListener

protected void registerBusinessObjectsListener()
Hook that is called to register listeners for changes of the business objects (domain objects) in the resource set of the editor. The default implementation registers the `DomainModelChangeListener`.
Note that additional listeners registered here should also be unregistered in `unregisterBusinessObjectsListener()`.

### getInput

protected IDiagramEditorInput getInput()
Returns the `DiagramEditorInput` instance used in this behavior.

Returns:
  An `IDiagramEditorInput` instance.

### setDiagramEditorInput

protected void setDiagramEditorInput(IDiagramEditorInput diagramEditorInput)
Setter for the field storing the editor input.

Parameters:
  `diagramEditorInput` - The new input
Since:
  0.12

### disposeBeforeGefDispose

protected void disposeBeforeGefDispose()
The part of the dispose that should happen before the GEF dispose. Disposes this `DiagramBehavior` instance and frees all used resources and clears all references. Also delegates to all the behavior extensions to also free their resources (e.g. and most important is the `TransactionalEditingDomain` held by the `DefaultPersistencyBehavior`. Always delegate to `super.dispose()` in case you override this method!

### disposeAfterGefDispose

protected void disposeAfterGefDispose()
The part of the dispose that should happen after the GEF dispose. Empties the command stack of the edit domain. Always delegate to `super.dispose()` in case you override this method!

### migrateDiagramModelIfNecessary

protected void migrateDiagramModelIfNecessary()
We provide migration from 0.8.0 to 0.9.0. You can override if you want to migrate manually. WARNING: If your diagram is under version control, this method can cause a check out dialog to be opened etc.

Since:
  0.9

### getEditDomain

public org.eclipse.gef.DefaultEditDomain getEditDomain()
Delegation method to retrieve the GEF edit domain also here. Simply delegates to the container.

Specified by:
  `getEditDomain` in interface `IDiagramBehaviorUI`
Returns:
  The GEF edit domain used used in the container
See Also:
  - `GraphicalEditor.getEditDomain()`

### setParentPart

protected void setParentPart(org.eclipse.ui.IWorkbenchPart parentPart)
Sets the parent `IWorkbenchPart` for this behavior. Can be used to embed this behavior in various UIs.

Parameters:
  `parentPart` -

### getParentPart

protected org.eclipse.ui.IWorkbenchPart getParentPart()
Returns the parent `IWorkbenchPart` this behavior is embedded into. May be `null` in case the behavior is embedded in a non part UI, like a popup.

Returns:
  The parent `IWorkbenchPart` or `null` in case it does not exist

### createResourceManager

protected org.eclipse.jface.resource.ResourceManager createResourceManager()
Creates a new instance of a `ResourceManager` implementation.

By default this creates a `LocalResourceManager` instance. Subclasses may override this method to enforce the usage of another implementation.

Returns:
  A new instance of a `ResourceManager`.
Since:
  0.14

### getResourceManager

public org.eclipse.jface.resource.ResourceManager getResourceManager()

Returns:
  the JFace `ResourceManager` to be used to create images, fonts etc for an open diagram.
Since:
  0.14