Class CommonNavigator

  • All Implemented Interfaces:
    IAdaptable, IExecutableExtension, IPersistable, ISaveablePart, ISaveablesSource, IViewPart, IWorkbenchPart, IWorkbenchPart2, IWorkbenchPart3, ISetSelectionTarget, IShowInTarget, IWorkbenchPartOrientation
    Direct Known Subclasses:
    ProjectExplorer

    public class CommonNavigator
    extends ViewPart
    implements ISetSelectionTarget, ISaveablePart, ISaveablesSource, IShowInTarget

    This class provides the IViewPart for the Common Navigator framework in the Eclipse workbench. This class also serves as the backbone for navigational viewers. The following types are used by this class to render the Common Navigator:

    • CommonViewer: The viewer that renders the extensible tree. Creates and manages the lifecycle of the Navigator Content Service (described below).

    • NavigatorActionService: Manages instances of CommonActionProviders provided by individual extensions and content extensions.

    • INavigatorContentService: Manages instances of Navigator Content Extensions. Instances are created as needed, and disposed of upon the disposal of the Navigator Content Service.

    Clients that wish to define their own custom extensible navigator view using CommonNavigator need to specify an instance of the org.eclipse.ui.views extension point:

              <extension point="org.eclipse.ui.views">
                    <view
                            name="My Custom View"
                            icon="relative/path/to/icon.gif"
                            category="org.acme.mycategory"
                            class="org.eclipse.ui.navigator.CommonNavigator"
                            id="org.acme.MyCustomNavigatorID">
                    </view>
              </extension>
     

    CommonNavigator gets its initial input (during initialization) from the Workbench by calling getSite().getPage().getInput(). This is done in getInitialInput(). Clients may create a subclass of CommonNavigator to provide their own means of getting the initial input. Or they may access the CommonViewer and set its input directly after startup.

    In the IDE scenario, the default page input is IWorkspaceRoot, in the RCP scenario it is null and can be configured in the WorkbenchAdvisor.

    Clients that wish to extend the view menu provided via the org.eclipse.ui.popupMenus extension may specify the the popupMenuId specified by org.eclipse.ui.navigator.viewer (or a nested popupMenu element) of their target viewer as their target menu id.

    This class may be instantiated or subclassed

    Since:
    3.2
    • Constructor Detail

      • CommonNavigator

        public CommonNavigator()
    • Method Detail

      • updateTitle

        public void updateTitle()

        Updates the title text and title tool tip. Called whenever the input of the viewer changes.

        Since:
        3.4
      • getFrameToolTipText

        public String getFrameToolTipText​(Object anElement)

        Returns the tool tip text for the given element. Used as the tool tip text for the current frame, and for the view title tooltip.

        Parameters:
        anElement - element to get text for
        Returns:
        the tool tip text
        Since:
        3.4
      • dispose

        public void dispose()

        Note: This method is for internal use only. Clients should not call this method.

        This method will be invoked when the DisposeListener is notified of the disposal of the Eclipse view part.

        Specified by:
        dispose in interface IWorkbenchPart
        Overrides:
        dispose in class WorkbenchPart
        See Also:
        WorkbenchPart.dispose()
      • setLinkingEnabled

        public final void setLinkingEnabled​(boolean toEnableLinking)

        Linking is handled by an action which listens for changes to the IS_LINKING_ENABLED_PROPERTY. Custom implementations that wish to override this functionality, need to override the action used by the default ActionGroup and listen for changes to the above property.

        Parameters:
        toEnableLinking - True enables linking the current selection with open editors
      • isLinkingEnabled

        public final boolean isLinkingEnabled()
        Returns:
        Whether linking the current selection with open editors is enabled.
      • getCommonViewer

        public CommonViewer getCommonViewer()

        Provides access to the commonViewer used by the current CommonNavigator. The field will not be valid until after init(IViewSite, IMemento) has been called by the Workbench.

        Returns:
        The (already created) instance of Common Viewer.
      • getNavigatorContentService

        public INavigatorContentService getNavigatorContentService()
        Returns:
        The Navigator Content Service which populates this instance of Common Navigator
      • getAdapter

        public <T> T getAdapter​(Class<T> adapter)
        Returns an object which is an instance of the given class associated with this object. Returns null if no such object can be found.
        Specified by:
        getAdapter in interface IAdaptable
        Overrides:
        getAdapter in class WorkbenchPart
        Type Parameters:
        T - the class type
        Parameters:
        adapter - the adapter class to look up
        Returns:
        a object castable to the given class, or null if this object does not have an adapter for the given class
      • getNavigatorActionService

        public NavigatorActionService getNavigatorActionService()
        Returns:
        The Navigator Action Service which populates this instance of Common Navigator
      • createCommonViewer

        protected CommonViewer createCommonViewer​(Composite aParent)
        Creates and initializes an instance of CommonViewer. The ID of the Eclipse view part will be used to create the viewer. The ID is important as some extensions indicate they should only be used with a particular viewer ID.
        Parameters:
        aParent - A composite parent to contain the Common Viewer
        Returns:
        An initialized instance of CommonViewer
      • createCommonViewerObject

        protected CommonViewer createCommonViewerObject​(Composite aParent)
        Constructs and returns an instance of CommonViewer. The ID of the Eclipse view part will be used to create the viewer. Override this method if you want a subclass of the CommonViewer
        Parameters:
        aParent - A composite parent to contain the CommonViewer
        Returns:
        An instance of CommonViewer
        Since:
        3.4
      • initListeners

        protected void initListeners​(TreeViewer viewer)

        Adds the listeners to the Common Viewer.

        Parameters:
        viewer - The viewer
        Since:
        2.0
      • handleDoubleClick

        protected void handleDoubleClick​(DoubleClickEvent anEvent)

        Note: This method is for internal use only. Clients should not call this method.

        Parameters:
        anEvent - Supplied by the DoubleClick listener.
      • createCommonManager

        protected CommonNavigatorManager createCommonManager()

        The Common Navigator Manager handles the setup of the Common Navigator Menu, manages updates to the ActionBars from CommonActionProvider  extensions as the user's selection changes, and also updates the status bar based on the current selection.

        Returns:
        The Common Navigator Manager class which handles menu population and ActionBars
        Since:
        3.4
      • createCommonActionGroup

        protected ActionGroup createCommonActionGroup()

        The ActionGroup is used to populate the ActionBars of Common Navigator View Part, and the returned implementation will have an opportunity to fill the ActionBars of the view as soon as it is created. (ActionGroup.fillActionBars(org.eclipse.ui.IActionBars).

        The default implementation returns an action group which will add the following actions:

        • Link with editor support. Allows the user to toggling linking the current selection with the active editors.

        • Collapse all. Collapses all expanded nodes.

        • Select Filters. Provides access to the "Select Filters" dialog that allows users to enable/disable filters and also the Content Extension activations.

        Returns:
        The Action Group to be associated with the Common Navigator View Part.
      • getInitialInput

        protected Object getInitialInput()
        Used to provide the initial input for the CommonViewer. By default getSite().getPage().getInput() is used. Subclass this to return your desired input.
        Returns:
        The initial input for the viewer. Defaults to getSite().getPage().getInput()
        Since:
        3.4
      • getActiveSaveables

        public Saveable[] getActiveSaveables()
        Description copied from interface: ISaveablesSource
        Returns the saveables currently active in the workbench part.

        Certain workbench actions, such as Save, target only the active saveables in the active part. For example, the active saveables could be determined based on the current selection in the part.

        Specified by:
        getActiveSaveables in interface ISaveablesSource
        Returns:
        the saveables currently active in the workbench part
      • hasSaveablesProvider

        protected boolean hasSaveablesProvider()
        Since:
        3.9
      • doSave

        public void doSave​(IProgressMonitor monitor)
        Description copied from interface: ISaveablePart
        Saves the contents of this part.

        If the save is successful, the part should fire a property changed event reflecting the new dirty state (PROP_DIRTY property).

        If the save is cancelled through user action, or for any other reason, the part should invoke setCancelled on the IProgressMonitor to inform the caller.

        This method is long-running; progress and cancellation are provided by the given progress monitor.

        Specified by:
        doSave in interface ISaveablePart
        Parameters:
        monitor - the progress monitor
      • doSaveAs

        public void doSaveAs()
        Description copied from interface: ISaveablePart
        Saves the contents of this part to another object.

        Implementors are expected to open a "Save As" dialog where the user will be able to select a new name for the contents. After the selection is made, the contents should be saved to that new name. During this operation a IProgressMonitor should be used to indicate progress.

        If the save is successful, the part fires a property changed event reflecting the new dirty state (PROP_DIRTY property).

        Specified by:
        doSaveAs in interface ISaveablePart
      • isDirty

        public boolean isDirty()
        Description copied from interface: ISaveablePart
        Returns whether the contents of this part have changed since the last save operation. If this value changes the part must fire a property listener event with PROP_DIRTY.

        Note: this method is called often on a part open or part activation switch, for example by actions to determine their enabled status.

        Specified by:
        isDirty in interface ISaveablePart
        Returns:
        true if the contents have been modified and need saving, and false if they have not changed since the last save
      • isSaveAsAllowed

        public boolean isSaveAsAllowed()
        Description copied from interface: ISaveablePart
        Returns whether the "Save As" operation is supported by this part.
        Specified by:
        isSaveAsAllowed in interface ISaveablePart
        Returns:
        true if "Save As" is supported, and false if not supported
      • isSaveOnCloseNeeded

        public boolean isSaveOnCloseNeeded()
        Description copied from interface: ISaveablePart
        Returns whether the contents of this part should be saved when the part is closed.
        Specified by:
        isSaveOnCloseNeeded in interface ISaveablePart
        Returns:
        true if the contents of the part should be saved on close, and false if the contents are expendable
      • show

        public boolean show​(ShowInContext context)
        Description copied from interface: IShowInTarget
        Shows the given context in this target. The target should check the context's selection for elements to show. If there are no relevant elements in the selection, then it should check the context's input.
        Specified by:
        show in interface IShowInTarget
        Parameters:
        context - the context to show
        Returns:
        true if the context could be shown, false otherwise
      • getLinkHelperService

        protected LinkHelperService getLinkHelperService()
        Since:
        3.4
      • getMemento

        protected IMemento getMemento()
        Since:
        3.4
      • setRootMode

        public void setRootMode​(int mode)
        Parameters:
        mode - new root mode
        Since:
        3.4
        Restriction:
        This method is not intended to be referenced by clients.
        Restriction:
        This method is not intended to be re-implemented or extended by clients.
      • getRootMode

        public int getRootMode()
        Returns:
        the root mode
        Since:
        3.4
        Restriction:
        This method is not intended to be referenced by clients.
        Restriction:
        This method is not intended to be re-implemented or extended by clients.
      • setWorkingSetLabel

        public void setWorkingSetLabel​(String label)
        Parameters:
        label - new working set label
        Since:
        3.4
        Restriction:
        This method is not intended to be referenced by clients.
        Restriction:
        This method is not intended to be re-implemented or extended by clients.
      • getWorkingSetLabel

        public String getWorkingSetLabel()
        Returns:
        the working set label
        Since:
        3.4
        Restriction:
        This method is not intended to be referenced by clients.
        Restriction:
        This method is not intended to be re-implemented or extended by clients.