Package org.eclipse.ui

## Interface IWorkbench

All Superinterfaces:
  `IAdaptable`, `IServiceLocator`

    public interface IWorkbench
    extends IAdaptable, IServiceLocator

A workbench is the root object for the Eclipse Platform user interface.

A workbench has one or more main windows which present to the end user information based on some underlying model, typically on resources in an underlying workspace. A workbench usually starts with a single open window, and automatically closes when its last window closes.

Each workbench window has a collection of pages; the active page is the one that is being presented to the end user; at most one page is active in a window at a time.

Each workbench page has a collection of workbench parts, of which there are two kinds: views and editors. A page's parts are arranged (tiled or stacked) for presentation on the screen. The arrangement is not fixed; the user can arrange the parts as they see fit. A perspective is a template for a page, capturing a collection of parts and their arrangement.

The platform creates a workbench when the workbench plug-in is activated; since this happens at most once during the life of the running platform, there is only one workbench instance. Due to its singular nature, it is commonly referred to as the workbench.

The workbench supports a few `services` by default. If these services are used to allocate resources, it is important to remember to clean up those resources after you are done with them. Otherwise, the resources will exist until the workbench shuts down. The supported services are:

- `IBindingService`
- `ICommandService`
- `IContextService`
- `IHandlerService`

This interface is not intended to be implemented by clients.

See Also:
  `PlatformUI.getWorkbench()`
Restriction:
  This interface is not intended to be implemented by clients.

### Method Summary

All Methods Instance Methods Abstract Methods Deprecated Methods
`void` `addWindowListener​(IWindowListener listener)` Adds a window listener.
`void` `addWorkbenchListener​(IWorkbenchListener listener)` Adds a workbench listener.
`boolean` `close()` Closes this workbench and all its open windows.
`ILocalWorkingSetManager` `createLocalWorkingSetManager()` Creates a new local working set manager.
`IWorkbenchWindow` `getActiveWorkbenchWindow()` Returns the currently active window for this workbench (if any).
`IWorkbenchActivitySupport` `getActivitySupport()` Returns an interface to manage activities at the workbench level.
`IWorkbenchBrowserSupport` `getBrowserSupport()` Return the browser support for this workbench.
`IWorkbenchCommandSupport` `getCommandSupport()` Deprecated. Please use `IServiceLocator.getService(Class)` instead.
`IWorkbenchContextSupport` `getContextSupport()` Deprecated. Please use `IServiceLocator.getService(Class)` instead.
`IDecoratorManager` `getDecoratorManager()` Returns the decorator manager.
`Display` `getDisplay()` Returns the display for this workbench.
`IEditorRegistry` `getEditorRegistry()` Returns the editor registry for the workbench.
`IElementFactory` `getElementFactory​(String factoryId)` Returns the element factory with the given id.
`IWizardRegistry` `getExportWizardRegistry()` Return the export wizard registry.
`IExtensionTracker` `getExtensionTracker()` Return the extension tracker for the workbench.
`IWorkbenchHelpSystem` `getHelpSystem()` Return the help system for this workbench.
`IWizardRegistry` `getImportWizardRegistry()` Return the import wizard registry.
`IIntroManager` `getIntroManager()` Return the intro manager for this workbench.
`IShellProvider` `getModalDialogShellProvider()` Return a shell provider that can be used to get the best parenting possible for a modal dialog.
`IWizardRegistry` `getNewWizardRegistry()` Return the new wizard registry.
`IWorkbenchOperationSupport` `getOperationSupport()` Returns the undoable operation support for the workbench.
`IPerspectiveRegistry` `getPerspectiveRegistry()` Returns the perspective registry for the workbench.
`PreferenceManager` `getPreferenceManager()` Returns the preference manager for the workbench.
`IPreferenceStore` `getPreferenceStore()` Deprecated. this returns the internal preference store for the workbench, which clients should not use.
`IProgressService` `getProgressService()` Returns the progress service for the workbench.
`ISharedImages` `getSharedImages()` Returns the shared images for the workbench.
`IThemeManager` `getThemeManager()` Return the theme manager for this workbench.
`IViewRegistry` `getViewRegistry()` Returns the view registry for the workbench.
`int` `getWorkbenchWindowCount()` Returns the number of open main windows associated with this workbench.
`IWorkbenchWindow[]` `getWorkbenchWindows()` Returns a list of the open main windows associated with this workbench.
`IWorkingSetManager` `getWorkingSetManager()` Returns the working set manager for the workbench.
`boolean` `isClosing()` Returns a boolean indicating whether the workbench is in the process of closing.
`boolean` `isStarting()` Returns a boolean indicating whether the workbench is in the process of starting.
`IWorkbenchWindow` `openWorkbenchWindow​(String perspectiveId, IAdaptable input)` Creates and opens a new workbench window with one page.
`IWorkbenchWindow` `openWorkbenchWindow​(IAdaptable input)` Creates and opens a new workbench window with one page.
`void` `removeWindowListener​(IWindowListener listener)` Removes a window listener.
`void` `removeWorkbenchListener​(IWorkbenchListener listener)` Removes a workbench listener.
`boolean` `restart()` Closes then restarts the workbench with the same command line as used for the previous launch.
`boolean` `restart​(boolean useCurrentWorkspace)` Closes then restarts this workbench using the current workspace if `useCurrentWorkspace` is `true`.
`boolean` `saveAll​(IShellProvider shellProvider, IRunnableContext runnableContext, ISaveableFilter filter, boolean confirm)` Save all dirty saveables in the workbench that match the given filter.
`boolean` `saveAllEditors​(boolean confirm)` Save all dirty editors in the workbench.
`IWorkbenchPage` `showPerspective​(String perspectiveId, IWorkbenchWindow window)` Shows the specified perspective to the user.
`IWorkbenchPage` `showPerspective​(String perspectiveId, IWorkbenchWindow window, IAdaptable input)` Shows the specified perspective to the user.

### Methods inherited from interface org.eclipse.core.runtime.IAdaptable

`getAdapter`

### Methods inherited from interface org.eclipse.ui.services.IServiceLocator

`getService, hasService`

### Method Detail

#### getDisplay

    Display getDisplay()

Returns the display for this workbench.

Code should always ask the workbench for the display rather than rely on `Display.getDefault()`.

Returns:
  the display to be used for all UI interactions with this workbench
Since:
  3.0

#### getProgressService

    IProgressService getProgressService()

Returns the progress service for the workbench.

Returns:
  the progress service
Since:
  3.0

#### addWorkbenchListener

    void addWorkbenchListener​(IWorkbenchListener listener)

Adds a workbench listener.

Parameters:
  `listener` - the workbench listener to add
Since:
  3.2

#### removeWorkbenchListener

    void removeWorkbenchListener​(IWorkbenchListener listener)

Removes a workbench listener.

Parameters:
  `listener` - the workbench listener to remove
Since:
  3.2

#### addWindowListener

    void addWindowListener​(IWindowListener listener)

Adds a window listener.

Parameters:
  `listener` - the window listener to add
Since:
  2.0

#### removeWindowListener

    void removeWindowListener​(IWindowListener listener)

Removes a window listener.

Parameters:
  `listener` - the window listener to remove
Since:
  2.0

#### close

    boolean close()

Closes this workbench and all its open windows.

If the workbench has an open editor with unsaved content, the user will be given the opportunity to save it.

Returns:
  `true` if the workbench was successfully closed, and `false` if it is still open

#### getActiveWorkbenchWindow

    IWorkbenchWindow getActiveWorkbenchWindow()

Returns the currently active window for this workbench (if any). Returns `null` if there is no active workbench window. Returns `null` if called from a non-UI thread.

In the special case when there's no active workbench window and a workbench window is under construction this workbench window instance is returned.

Returns:
  the active workbench window, or `null` if there is no active workbench window or if called from a non-UI thread

#### getEditorRegistry

    IEditorRegistry getEditorRegistry()

Returns the editor registry for the workbench.

Returns:
  the workbench editor registry

#### getOperationSupport

    IWorkbenchOperationSupport getOperationSupport()

Returns the undoable operation support for the workbench.

Returns:
  the workbench operation support
Since:
  3.1

#### getPerspectiveRegistry

    IPerspectiveRegistry getPerspectiveRegistry()

Returns the perspective registry for the workbench.

Returns:
  the workbench perspective registry

#### getPreferenceManager

    PreferenceManager getPreferenceManager()

Returns the preference manager for the workbench.

Returns:
  the workbench preference manager

#### getPreferenceStore

    @Deprecated
    IPreferenceStore getPreferenceStore()

Deprecated.
this returns the internal preference store for the workbench, which clients should not use. Use `PlatformUI.getPreferenceStore()` instead. Note that these preference stores are not the same. If you were previously storing preferences in the store returned by this method you should move them to your own plugin preference store.
Returns the preference store for the workbench.

Returns:
  the workbench preference store
Since:
  2.0

#### getSharedImages

    ISharedImages getSharedImages()

Returns the shared images for the workbench.

Returns:
  the shared image manager

#### getWorkbenchWindowCount

    int getWorkbenchWindowCount()

Returns the number of open main windows associated with this workbench. Note that wizards and dialogs are not included in this list since they are not considered main windows.

Returns:
  the number of open windows
Since:
  3.0

#### getWorkbenchWindows

    IWorkbenchWindow[] getWorkbenchWindows()

Returns a list of the open main windows associated with this workbench. Note that wizards and dialogs are not included in this list since they are not considered main windows.

Returns:
  a list of open windows

#### getWorkingSetManager

    IWorkingSetManager getWorkingSetManager()

Returns the working set manager for the workbench.

Returns:
  the working set manager
Since:
  2.0

#### createLocalWorkingSetManager

    ILocalWorkingSetManager createLocalWorkingSetManager()

Creates a new local working set manager. Clients of local working set managers are responsible for calling `IWorkingSetManager.dispose()` when the working sets it manages are no longer needed.

Returns:
  the local working set manager
Since:
  3.1

#### openWorkbenchWindow

    IWorkbenchWindow openWorkbenchWindow​(String perspectiveId,
                                         IAdaptable input)
                                  throws WorkbenchException

Creates and opens a new workbench window with one page. The perspective of the new page is defined by the specified perspective ID. The new window and new page become active.

Note: The caller is responsible to ensure the action using this method will explicitly inform the user a new window will be opened. Otherwise, callers are strongly recommended to use the `openPerspective` APIs to programmatically show a perspective to avoid confusing the user.

In most cases where this method is used the caller is tightly coupled to a particular perspective. They define it in the registry and contribute some user interface action to open or activate it. In situations like this a static variable is often used to identify the perspective ID.

Parameters:
  `perspectiveId` - the perspective id for the window's initial page, or `null` for no initial page
  `input` - the page input, or `null` if there is no current input. This is used to seed the input for the new page's views.
Returns:
  the new workbench window
Throws:
  `WorkbenchException` - if a new window and page could not be opened
See Also:
  `showPerspective(String, IWorkbenchWindow, IAdaptable)`

#### openWorkbenchWindow

    IWorkbenchWindow openWorkbenchWindow​(IAdaptable input)
                                  throws WorkbenchException

Creates and opens a new workbench window with one page. The perspective of the new page is defined by the default perspective ID. The new window and new page become active.

Note: The caller is responsible to ensure the action using this method will explicitly inform the user a new window will be opened. Otherwise, callers are strongly recommended to use the `openPerspective` APIs to programmatically show a perspective to avoid confusing the user.

Parameters:
  `input` - the page input, or `null` if there is no current input. This is used to seed the input for the new page's views.
Returns:
  the new workbench window
Throws:
  `WorkbenchException` - if a new window and page could not be opened
See Also:
  `showPerspective(String, IWorkbenchWindow, IAdaptable)`

#### restart

    boolean restart()

Closes then restarts the workbench with the same command line as used for the previous launch.

If the workbench has an open editor with unsaved content, the user will be given the opportunity to save it.

Returns:
  `true` if the workbench was successfully closed, and `false` if it could not be closed
Since:
  2.0

#### restart

    boolean restart​(boolean useCurrentWorkspace)

Closes then restarts this workbench using the current workspace if `useCurrentWorkspace` is `true`. Otherwise, works as `restart()`.

If the workbench has an open editor with unsaved content, the user will be given the opportunity to save it.

Parameters:
  `useCurrentWorkspace` - `true` to use the current workspace while restarting this workbench, and `false` to restart the workbench with the same command line as used for the previous launch
Returns:
  `true` if the workbench was successfully closed, and `false` if it could not be closed
Since:
  3.107

#### showPerspective

    IWorkbenchPage showPerspective​(String perspectiveId,
                                   IWorkbenchWindow window)
                            throws WorkbenchException

Shows the specified perspective to the user. The caller should use this method when the perspective to be shown is not dependent on the page's input. That is, the perspective can open in any page depending on user preferences.

The perspective may be shown in the specified window, in another existing window, or in a new window depending on user preferences. The exact policy is controlled by the workbench to ensure consistency to the user. The policy is subject to change. The current policy is as follows:

- If the specified window has the requested perspective open, then the window is given focus and the perspective is shown. The page's input is ignored.
- If another window that has the workspace root as input and the requested perspective open and active, then the window is given focus.
- Otherwise the requested perspective is opened and shown in the specified window or in a new window depending on the current user preference for opening perspectives, and that window is given focus.

The workbench also defines a number of menu items to activate or open each registered perspective. A complete list of these perspectives is available from the perspective registry found on `IWorkbench`.

Parameters:
  `perspectiveId` - the perspective ID to show
  `window` - the workbench window of the action calling this method.
Returns:
  the workbench page that the perspective was shown
Throws:
  `WorkbenchException` - if the perspective could not be shown
Since:
  2.0

#### showPerspective

    IWorkbenchPage showPerspective​(String perspectiveId,
                                   IWorkbenchWindow window,
                                   IAdaptable input)
                            throws WorkbenchException

Shows the specified perspective to the user. The caller should use this method when the perspective to be shown is dependent on the page's input. That is, the perspective can only open in any page with the specified input.

The perspective may be shown in the specified window, in another existing window, or in a new window depending on user preferences. The exact policy is controlled by the workbench to ensure consistency to the user. The policy is subject to change. The current policy is as follows:

- If the specified window has the requested perspective open and the same requested input, then the window is given focus and the perspective is shown.
- If another window has the requested input and the requested perspective open and active, then that window is given focus.
- If the specified window has the same requested input but not the requested perspective, then the window is given focus and the perspective is opened and shown on condition that the user preference is not to open perspectives in a new window.
- Otherwise the requested perspective is opened and shown in a new window, and the window is given focus.

The workbench also defines a number of menu items to activate or open each registered perspective. A complete list of these perspectives is available from the perspective registry found on `IWorkbench`.

Parameters:
  `perspectiveId` - the perspective ID to show
  `window` - the workbench window of the action calling this method.
  `input` - the page input, or `null` if there is no current input. This is used to seed the input for the page's views
Returns:
  the workbench page that the perspective was shown
Throws:
  `WorkbenchException` - if the perspective could not be shown
Since:
  2.0

#### getDecoratorManager

    IDecoratorManager getDecoratorManager()

Returns the decorator manager.

Any client using the decorator manager should come up with the text and image for the element (including any of the part's own decorations) before calling the decorator manager. It should also add a listener to be notified when decorations change.

Note that if the element implements `IAdaptable`, decorators may use this mechanism to obtain an adapter (for example an `IResource`), and derive the decoration from the adapter rather than the element. Since the adapter may differ from the original element, those using the decorator manager should be prepared to handle notification that the decoration for the adapter has changed, in addition to handling notification that the decoration for the element has changed. That is, it needs to be able to map back from the adapter to the element.

Returns:
  the decorator manager

#### saveAllEditors

    boolean saveAllEditors​(boolean confirm)

Save all dirty editors in the workbench. Opens a dialog to prompt the user if `confirm` is true. Return true if successful. Return false if the user has canceled the command.

Parameters:
  `confirm` - `true` to ask the user before saving unsaved changes (recommended), and `false` to save unsaved changes without asking
Returns:
  `true` if the command succeeded, and `false` if the operation was canceled by the user or an error occurred while saving

#### getElementFactory

    IElementFactory getElementFactory​(String factoryId)

Returns the element factory with the given id.

Parameters:
  `factoryId` - the id of the element factory
Returns:
  the element factory, or `null` if none
Since:
  3.0
See Also:
  `IElementFactory`

#### getActivitySupport

    IWorkbenchActivitySupport getActivitySupport()

Returns an interface to manage activities at the workbench level.

Returns:
  an interface to manage activities at the workbench level. Guaranteed not to be `null`.
Since:
  3.0

#### getCommandSupport

    @Deprecated
    IWorkbenchCommandSupport getCommandSupport()

Deprecated.
Please use `IServiceLocator.getService(Class)` instead.
Returns an interface to manage commands at the workbench level.

Returns:
  an interface to manage commands at the workbench level. Guaranteed not to be `null`.
Since:
  3.0
See Also:
  `ICommandService`, `IHandlerService`

#### getContextSupport

    @Deprecated
    IWorkbenchContextSupport getContextSupport()

Deprecated.
Please use `IServiceLocator.getService(Class)` instead.
Returns an interface to manage contexts at the workbench level.

Returns:
  an interface to manage contexts at the workbench level. Guaranteed not to be `null`.
Since:
  3.0
See Also:
  `IContextService`

#### getThemeManager

    IThemeManager getThemeManager()

Return the theme manager for this workbench.

Returns:
  the theme manager for this workbench.Guaranteed not to be `null`.
Since:
  3.0

#### getIntroManager

    IIntroManager getIntroManager()

Return the intro manager for this workbench.

Returns:
  the intro manager for this workbench. Guaranteed not to be `null`.
Since:
  3.0

#### getHelpSystem

    IWorkbenchHelpSystem getHelpSystem()

Return the help system for this workbench.

Returns:
  the help system
Since:
  3.1

#### getBrowserSupport

    IWorkbenchBrowserSupport getBrowserSupport()

Return the browser support for this workbench.

Returns:
  the browser support system
Since:
  3.1

#### isStarting

    boolean isStarting()

Returns a boolean indicating whether the workbench is in the process of starting. During this phase, it is not safe to make calls to other methods of the workbench, or of objects owned by the workbench. To delay work until after the workbench has been initialized, use `IStartup` or `Display.asyncExec(Runnable)`.

Returns:
  `true` if the workbench is in the process of starting, `false` otherwise
Since:
  3.5

#### isClosing

    boolean isClosing()

Returns a boolean indicating whether the workbench is in the process of closing.

Returns:
  `true` if the workbench is in the process of closing, `false` otherwise
Since:
  3.1

#### getExtensionTracker

    IExtensionTracker getExtensionTracker()

Return the extension tracker for the workbench. This tracker may be used by plug-ins to ensure responsiveness to changes to the plug-in registry.

The tracker at this level of the workbench is typically used to track elements that persist for the life of the workbench. For example, `IEditorDescriptor` objects fall into this category.

Returns:
  the extension tracker
Since:
  3.1
See Also:
  `IWorkbenchWindow.getExtensionTracker()`, `IWorkbenchPage.getExtensionTracker()`

#### getViewRegistry

    IViewRegistry getViewRegistry()

Returns the view registry for the workbench.

Returns:
  the workbench view registry
Since:
  3.1

#### getNewWizardRegistry

    IWizardRegistry getNewWizardRegistry()

Return the new wizard registry.

Returns:
  the new wizard registry
Since:
  3.1

#### getImportWizardRegistry

    IWizardRegistry getImportWizardRegistry()

Return the import wizard registry.

Returns:
  the import wizard registry
Since:
  3.1

#### getExportWizardRegistry

    IWizardRegistry getExportWizardRegistry()

Return the export wizard registry.

Returns:
  the export wizard registry
Since:
  3.1

#### saveAll

    boolean saveAll​(IShellProvider shellProvider,
                    IRunnableContext runnableContext,
                    ISaveableFilter filter,
                    boolean confirm)

Save all dirty saveables in the workbench that match the given filter. Opens a dialog to prompt the user if `confirm` is true. Return true if successful. Return false if the user has canceled the command.

Parameters:
  `shellProvider` - the provider used to obtain a shell in prompting is required. Clients can use a workbench window for this.
  `runnableContext` - a runnable context that will be used to provide a progress monitor while the save is taking place. Clients can use a workbench window for this.
  `filter` - the filter used to determine if a particular dirty saveable needs to be saved or `null` if all dirty saveables should be saved.
  `confirm` - `true` to ask the user before saving unsaved changes (recommended), and `false` to save unsaved changes without asking
Returns:
  `true` if the command succeeded, and `false` if the operation was canceled by the user or an error occurred while saving
Since:
  3.3

#### getModalDialogShellProvider

    IShellProvider getModalDialogShellProvider()

Return a shell provider that can be used to get the best parenting possible for a modal dialog. If modal shells are already created, use the topmost modal shell as the parent to avoid two modal dialogs. If there are no modal shells, use the shell of the active workbench window.

Returns:
  a shell provider that provides the best parenting possible for a modal dialog.
Since:
  3.6