| package org.eclipse.ui.internal; |
| |
| /* |
| * (c) Copyright IBM Corp. 2000, 2001. |
| * All Rights Reserved. |
| */ |
| import org.eclipse.core.runtime.IConfigurationElement; |
| import org.eclipse.core.runtime.IPluginDescriptor; |
| import org.eclipse.jface.action.MenuManager; |
| import org.eclipse.jface.viewers.ISelectionProvider; |
| import org.eclipse.swt.widgets.Shell; |
| import org.eclipse.ui.*; |
| /** |
| * <code>PartSite</code> is the general implementation for an |
| * <code>IWorkbenchPartSite</code>. A site maintains the context for a part, |
| * including the part, its pane, active contributions, selection provider, etc. |
| * Together, these components make up the complete behavior for a |
| * part as if it was implemented by one person. |
| * |
| * The <code>PartSite</code> lifecycle is as follows .. |
| * |
| * <ol> |
| * <li>a site is constructed </li> |
| * <li>a part is constructed and stored in the part </li> |
| * <li>the site calls part.init() </li> |
| * <li>a pane is constructed and stored in the site </li> |
| * <li>the action bars for a part are constructed and stored in the site </li> |
| * <li>the pane is added to a presentation </li> |
| * <li>the SWT widgets for the pane and part are created </li> |
| * <li>the site is activated, causing the actions to become visible </li> |
| * </ol> |
| */ |
| public class PartSite implements IWorkbenchPartSite { |
| private IWorkbenchPart part; |
| private IWorkbenchPage page; |
| private PartPane pane; |
| private IConfigurationElement configElement; |
| private String extensionID; |
| private String pluginID; |
| private String extensionName; |
| private ISelectionProvider selectionProvider; |
| private SubActionBars actionBars; |
| private KeyBindingService keyBindingService; |
| /** |
| * EditorContainer constructor comment. |
| */ |
| public PartSite(IWorkbenchPart part, IWorkbenchPage page) |
| { |
| this.part = part; |
| this.page = page; |
| extensionID = "org.eclipse.ui.UnknownID";//$NON-NLS-1$ |
| extensionName = "Unknown Name";//$NON-NLS-1$ |
| } |
| /** |
| * Dispose the contributions. |
| */ |
| public void dispose() { |
| if (keyBindingService != null) { |
| keyBindingService.dispose(); |
| } |
| } |
| /** |
| * Returns the action bars for the part. |
| * If this part is a view then it has exclusive use of the action bars. |
| * If this part is an editor then the action bars are shared among this editor and other editors of |
| * the same type. |
| */ |
| public IActionBars getActionBars() { |
| return actionBars; |
| } |
| /** |
| * Returns the configuration element for a part. |
| */ |
| public IConfigurationElement getConfigurationElement() { |
| return configElement; |
| } |
| |
| |
| /** |
| * Returns the part registry extension ID. |
| * |
| * @return the registry extension ID |
| */ |
| public String getId() { |
| return extensionID; |
| } |
| /** |
| * Returns the page containing this workbench site's part. |
| * |
| * @return the page containing this part |
| */ |
| public IWorkbenchPage getPage() { |
| return page; |
| } |
| /** |
| * Gets the part pane. |
| */ |
| public PartPane getPane() { |
| return pane; |
| } |
| /** |
| * Returns the part. |
| */ |
| public IWorkbenchPart getPart() { |
| return part; |
| } |
| /** |
| * Returns the part registry plugin ID. It cannot be <code>null</code>. |
| * |
| * @return the registry plugin ID |
| */ |
| public String getPluginId() { |
| return pluginID; |
| } |
| /** |
| * Returns the registered name for this part. |
| */ |
| public String getRegisteredName() { |
| return extensionName; |
| } |
| /** |
| * Returns the selection provider for a part. |
| */ |
| public ISelectionProvider getSelectionProvider() { |
| return selectionProvider; |
| } |
| /** |
| * Returns the shell containing this part. |
| * |
| * @return the shell containing this part |
| */ |
| public Shell getShell() { |
| return page.getWorkbenchWindow().getShell(); |
| } |
| /** |
| * Returns the workbench window containing this part. |
| * |
| * @return the workbench window containing this part |
| */ |
| public IWorkbenchWindow getWorkbenchWindow() { |
| return page.getWorkbenchWindow(); |
| } |
| /** |
| * Register a popup menu for extension. |
| */ |
| public void registerContextMenu(String menuID, MenuManager menuMgr, ISelectionProvider selProvider) { |
| new PopupMenuExtender(menuID, menuMgr, selProvider, part); |
| } |
| /** |
| * Register a popup menu with the default id for extension. |
| */ |
| public void registerContextMenu(MenuManager menuMgr, ISelectionProvider selProvider) { |
| registerContextMenu(getId(), menuMgr, selProvider); |
| } |
| /** |
| * Sets the action bars for the part. |
| */ |
| public void setActionBars(SubActionBars bars) { |
| actionBars = bars; |
| } |
| /** |
| * Sets the configuration element for a part. |
| */ |
| public void setConfigurationElement(IConfigurationElement configElement) { |
| // Save for external use. |
| this.configElement = configElement; |
| |
| // Get extension ID. |
| extensionID = configElement.getAttribute("id");//$NON-NLS-1$ |
| |
| // Get plugin ID. |
| IPluginDescriptor pd = configElement.getDeclaringExtension().getDeclaringPluginDescriptor(); |
| pluginID = pd.getUniqueIdentifier(); |
| |
| // Get extension name. |
| String name = configElement.getAttribute("name");//$NON-NLS-1$ |
| if (name != null) |
| extensionName = name; |
| } |
| /** |
| * Sets the part pane. |
| */ |
| public void setPane(PartPane pane) { |
| this.pane = pane; |
| } |
| /** |
| * Sets the part. |
| */ |
| public void setPart(IWorkbenchPart newPart) { |
| part = newPart; |
| } |
| /** |
| * Set the selection provider for a part. |
| */ |
| public void setSelectionProvider(ISelectionProvider provider) { |
| selectionProvider = provider; |
| } |
| |
| /* (non-Javadoc) |
| * Method declared on IEditorSite. |
| */ |
| public IKeyBindingService getKeyBindingService() { |
| if(keyBindingService == null) { |
| keyBindingService = new KeyBindingService(((WorkbenchWindow)getWorkbenchWindow()).getKeyBindingService(),this); |
| keyBindingService.setActiveAcceleratorScopeId(getInitialScopeId()); //$NON-NLS-1$ |
| } |
| return keyBindingService; |
| } |
| protected String getInitialScopeId() { |
| return IWorkbenchConstants.DEFAULT_ACCELERATOR_SCOPE_ID; |
| } |
| |
| } |