Part interfaces

Parts do not need to implement any particular interface or inherit from any particular base class. However, parts may optionally implement certain interfaces in order to receive callbacks from their parent. For example, if a part implements the IFocusable interface then its parent will use that interface to give focus to the part. Parts are allowed to either implement the interface directly or implement IAdaptable and provide an adapter for the interface.

Similarly to site interfaces, part interfaces are registered in the org.eclipse.core.component.types extension point. There is a slight difference in the XML markup to distinguish between a site interface and a part interface. Any plugin can extend the set of interfaces available for a view to implement, and the PDE plugin registry can be used to find all such interfaces.

The workbench provides the following interfaces to be implemented by parts:

Interface
Description
IFocusable
Allows the part to implement setFocus.
IPersistable
Allows the part to save its state between sessions.
IMultiPart
Indicates that the part has the notion of an active child.
ISite
Although this is never actually implemented by a part, the implementations of other part interfaces can depend on ISite in order to gain access to their site.

Parts may also implement lifecycle interfaces. Lifecycle interfaces are different from regular part interfaces in several ways: Parts support the following lifecycle interfaces:
Interface
Description
IDisposable
Receives a notification when the component is disposed.
INestedComponent
Implemented by children of a multiplexer. Receives activate and deactivate messages when the active part changes.