Package org.eclipse.ui.menus

# Class AbstractContributionFactory

java.lang.Object
org.eclipse.ui.menus.AbstractContributionFactory

Direct Known Subclasses:
  `ExtensionContributionFactory`

public abstract class AbstractContributionFactory extends Object
ContributionFactories are used by the IMenuService to populate ContributionManagers. In `createContributionItems(IServiceLocator, IContributionRoot)` you fill in the additions List with `IContributionItem` to be inserted at this factory's location. For example:

     AbstractContributionFactory contributions = new AbstractContributionFactory(
                    "menu:org.eclipse.ui.tests.api.MenuTestHarness?after=additions") {
            public void createContributionItems(IMenuService menuService, List additions) {
                    CommandContributionItem item = new CommandContributionItem("org.eclipse.ui.tests.menus.helloWorld",
                                    "org.eclipse.ui.tests.commands.enabledHelloWorld", null, null, "Say Hello", null);
                    additions.add(item);
                    item = new CommandContributionItem("org.eclipse.ui.tests.menus.refresh",
                                    "org.eclipse.ui.tests.commands.refreshView", null, null, "Refresh", null);
                    menuService.registerVisibleWhen(item, new MyActiveContextExpression("org.eclipse.ui.tests.myview.context"));
                    additions.add(item);
            }

            public void releaseContributionItems(IMenuService menuService, List items) {
                    // we have nothing to do
            }
     };
     IMenuService service = (IMenuService) PlatformUI.getWorkbench().getService(IMenuService.class);
     service.addContributionFactory(contributions);

Clients who are providing factories via the `org.eclipse.ui.menus` extension point should subclass `ExtensionContributionFactory` instead.

Only the abstract methods may be implemented.

Since:
  3.3
See Also:
  - `IMenuService`
  - `MenuManager`
  - `ToolBarManager`

## Constructor Summary

Constructors
Constructor
Description
`AbstractContributionFactory(String location, String namespace)`
The contribution factories must be instantiated with their location, which which specifies the contributions insertion location.

## Method Summary

Modifier and Type
Method
Description
`abstract void`
`createContributionItems(IServiceLocator serviceLocator, IContributionRoot additions)`
This factory should create the IContributionItems that it wants to contribute, and add them to the additions list.
`String`
`getLocation()`
Return the location as a String.
`String`
`getNamespace()`
Return the namespace for this cache.

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

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

## Constructor Details

### AbstractContributionFactory

public AbstractContributionFactory(String location, String namespace)
The contribution factories must be instantiated with their location, which which specifies the contributions insertion location.

Parameters:
  `location` - the addition location in Menu API URI format. It must not be `null`.
  `namespace` - the namespace for this contribution. May be `null`.
See Also:
  - `getNamespace()`

## Method Details

### getLocation

public String getLocation()
Return the location as a String.

Returns:
  the location - never `null`.

### createContributionItems

public abstract void createContributionItems(IServiceLocator serviceLocator, IContributionRoot additions)
This factory should create the IContributionItems that it wants to contribute, and add them to the additions list. The menu service will call this method at the appropriate time. It should always return new instances of its contributions in the additions list.

This method is not meant to be called by clients. It will be called by the menu service at the appropriate time.

Parameters:
  `serviceLocator` - a service locator that may be used in the construction of items created by this factory
  `additions` - A `IContributionRoot` supplied by the framework. It will never be `null`.
See Also:
  - `CommandContributionItem`
  - `MenuManager`

### getNamespace

public String getNamespace()
Return the namespace for this cache. This corresponds to the plug-in that is contributing this factory.

Returns:
  the namespace the namespace of this factory