Initializers

The main purpose of an initializer is to identify a scope. However, it is more than just a unique identifier. It points to the Java class that supplies initialization information to the scope. In order to create an object from the org.eclipse.core.component.types extension point, Eclipse must manually construct an initializer of the appropriate type. This allows Eclipse to pass required context to components from outside the component framework. Any component is allowed to depend on the initializer for its scope, it to access this context. Currently most of the initializers provided by the workbench have an empty public interface, so most clients would not want to do this yet.

Inheritance is taken into consideration between initializer types. Registering a component type on an initializer's base class will also affect the initializer and all of its subclasses. Initializers cannot be interfaces, so only single inheritance is possible. For example, an interface registered on org.eclipse.core.component.ExtensionInitializer would be visible both from a part and from its site since org.eclipse.core.component.ExtensionInitializer is a base class for both the part and site initializers.

The workbench supplies the following initializer types:

Initializer
Base class
Used for
org.eclipse.core.component.ExtensionInitializer
none
Dependencies used by any component created from an extension point.
org.eclipse.ui.part.PartInitializer
org.eclipse.core.component.ExtensionInitializer Interfaces that can be implemented by a part.
org.eclipse.ui.part.SiteInitializer org.eclipse.core.component.ExtensionInitializer Components available from a site (such as things a part can take in its constructor).
org.eclipse.ui.part.SiteMultiplexerInitializer
org.eclipse.ui.part.SiteInitializer Dependencies that only apply to site inside a multiplexer (used to override the default component implementation provided by a site).