Class CommonViewer

All Implemented Interfaces:
IInputProvider, IInputSelectionProvider, IPostSelectionProvider, ISelectionProvider

public class CommonViewer extends TreeViewer
Provides the Tree Viewer for the Common Navigator. Content and labels are provided by an instance of INavigatorContentService  which uses the ID supplied in the constructor CommonViewer(String, Composite, int) or through NavigatorContentServiceFactory.createContentService(String, org.eclipse.jface.viewers.StructuredViewer).

Clients may extend this class.

Note that as of 3.2.1 and 3.3, the common viewer caches its selection. Clients must not set the selection of the viewer's tree control directly.

Since:
3.2
  • Constructor Details

    • CommonViewer

      public CommonViewer(String aViewerId, Composite aParent, int aStyle)

      Constructs the Tree Viewer for the Common Navigator and the corresponding NavigatorContentService. The NavigatorContentService will provide the Content Provider and Label Provider -- these need not be supplied by clients.

      For the valid bits to supply in the style mask (aStyle), see documentation provided by TreeViewer.

      Parameters:
      aViewerId - An id tied to the extensions that is used to focus specific content to a particular instance of the Common Navigator
      aParent - A Composite parent to contain the actual SWT widget
      aStyle - A style mask that will be used to create the TreeViewer Composite.
  • Method Details

    • init

      protected void init()

      Initializes the content provider, label provider, and drag and drop support. Should not be called by clients -- this method is invoked when the constructor is invoked.

    • setMapper

      public void setMapper(ICommonViewerMapper mapper)
      Sets the ICommonViewerMapper to work with this viewer.
      Parameters:
      mapper - the mapper
      Since:
      3.4
    • getMapper

      public ICommonViewerMapper getMapper()
      Gets the ICommonViewerMapper assigned to this viewer.
      Returns:
      the mapper
      Since:
      3.4
    • getCommonNavigator

      public CommonNavigator getCommonNavigator()
      Returns:
      the CommonNavigator
      Since:
      3.4
    • removeWithoutRefresh

      protected void removeWithoutRefresh(Object[] elements)
    • initDragAndDrop

      protected void initDragAndDrop()

      Adds DND support to the Navigator. Uses hooks into the extensible framework for DND.

      By default, the following Transfer types are supported:

      • LocalSelectionTransfer.getInstance(),
      • PluginTransfer.getInstance()
      See Also:
    • createDragAdapter

      protected CommonDragAdapter createDragAdapter()
      Creates the CommonDragAdapter, this is used to provide a subclass if desired.
      Returns:
      the CommonDragAdapter
      Since:
      3.4
    • createDropAdapter

      protected CommonDropAdapter createDropAdapter()
      Creates the CommonDropAdapter, this is used to provide a subclass if desired.
      Returns:
      the CommonDropAdapter
      Since:
      3.4
    • handleLabelProviderChanged

      protected void handleLabelProviderChanged(LabelProviderChangedEvent event)
      Description copied from class: StructuredViewer
      The StructuredViewer implementation of this ContentViewer method calls update if the event specifies that the label of a given element has changed, otherwise it calls super. Subclasses may reimplement or extend.
      Overrides:
      handleLabelProviderChanged in class StructuredViewer
      Parameters:
      event - the event that generated this update
    • handleDispose

      protected void handleDispose(DisposeEvent event)
      Description copied from class: ContentViewer
      Handles a dispose event on this viewer's control.

      The ContentViewer implementation of this method disposes of this viewer's label provider and content provider (if it has one). Subclasses should override this method to perform any additional cleanup of resources; however, overriding methods must invoke super.handleDispose.

      Overrides:
      handleDispose in class ColumnViewer
      Parameters:
      event - a dispose event
    • dispose

      public void dispose()

      Disposes of the NavigatorContentService, which will dispose the Content and Label providers.

    • setSorter

      public void setSorter(ViewerSorter sorter)
      Sets this viewer's sorter and triggers refiltering and resorting of this viewer's element. Passing null turns sorting off.
      Overrides:
      setSorter in class StructuredViewer
      Parameters:
      sorter - a viewer sorter, or null if none
    • getNavigatorContentService

      public INavigatorContentService getNavigatorContentService()

      The INavigatorContentServiceprovides the hook into the framework to provide content from the various extensions.

      Returns:
      The INavigatorContentServicethat was created when the viewer was created.
    • add

      public void add(Object parentElement, Object... childElements)
      Description copied from class: AbstractTreeViewer
      Adds the given child elements to this viewer as children of the given parent element. If this viewer does not have a sorter, the elements are added at the end of the parent's list of children in the order given; otherwise, the elements are inserted at the appropriate positions. If a child already exists under the given parent, the child gets refreshed and not added twice.

      This method should be called (by the content provider) when elements have been added to the model, in order to cause the viewer to accurately reflect the model. This method only affects the viewer, not the model.

      Overrides:
      add in class AbstractTreeViewer
      Parameters:
      parentElement - the parent element
      childElements - the child elements to add
    • remove

      public void remove(Object... elements)

      Removals are handled by refreshing the parents of each of the given elements. The parents are determined via calls ot the contentProvider.

      Overrides:
      remove in class AbstractTreeViewer
      Parameters:
      elements - the elements to remove
      See Also:
    • refresh

      public void refresh(Object element, boolean updateLabels)
      Description copied from class: StructuredViewer
      Refreshes this viewer starting with the given element. Labels are updated as described in refresh(boolean updateLabels).

      Unlike the update methods, this handles structural changes to the given element (e.g. addition or removal of children). If only the given element needs updating, it is more efficient to use the update methods.

      Overrides:
      refresh in class ColumnViewer
      Parameters:
      element - the element
      updateLabels - true to update labels for existing elements, false to only update labels as needed, assuming that labels for existing elements are unchanged.
    • setSelection

      public void setSelection(ISelection selection, boolean reveal)
      Description copied from class: TreeViewer
      Sets a new selection for this viewer and optionally makes it visible.

      Currently the reveal parameter is not honored because Tree does not provide an API to only select an item without scrolling it into view

      Overrides:
      setSelection in class TreeViewer
      Parameters:
      selection - the new selection
      reveal - true if the selection is to be made visible, and false otherwise
    • hookControl

      protected void hookControl(Control control)
      Description copied from class: ContentViewer
      Adds event listener hooks to the given control.

      All subclasses must call this method when their control is first established.

      The ContentViewer implementation of this method hooks dispose events for the given control. Subclasses may override if they need to add other control hooks; however, super.hookControl must be invoked.

      Overrides:
      hookControl in class TreeViewer
      Parameters:
      control - the control
    • doUpdateItem

      public void doUpdateItem(Widget item)
      Update an item in the tree.
      Parameters:
      item - the item in the tree to update
      Since:
      3.4
    • mapElement

      protected void mapElement(Object element, Widget item)
      Description copied from class: StructuredViewer
      Adds the element item pair to the element map.

      This method is internal to the framework; subclassers should not call this method.

      Overrides:
      mapElement in class TreeViewer
      Parameters:
      element - the element
      item - the corresponding widget
    • unmapElement

      protected void unmapElement(Object element, Widget item)
      Description copied from class: StructuredViewer
      Removes the given association from the internal element to widget map. Does nothing if mapping is disabled, or if the given element does not map to the given item.

      This method is internal to the framework; subclassers should not call this method.

      Overrides:
      unmapElement in class StructuredViewer
      Parameters:
      element - the element
      item - the item to unmap
    • unmapAllElements

      protected void unmapAllElements()
      Description copied from class: StructuredViewer
      Removes all elements from the map.

      This method is internal to the framework; subclassers should not call this method.

      Overrides:
      unmapAllElements in class ColumnViewer
    • setSelectionToWidget

      protected void setSelectionToWidget(List v, boolean reveal)
      Description copied from class: AbstractTreeViewer
      This implementation of setSelectionToWidget accepts a list of elements or a list of tree paths.
      Overrides:
      setSelectionToWidget in class AbstractTreeViewer
      Parameters:
      v - list of selected elements (element type: Object) or null if the selection is to be cleared
      reveal - true if the selection is to be made visible, and false otherwise
    • handleDoubleSelect

      protected void handleDoubleSelect(SelectionEvent event)
      Description copied from class: StructuredViewer
      Handles a double-click select event from the widget.

      This method is internal to the framework; subclassers should not call this method.

      Overrides:
      handleDoubleSelect in class AbstractTreeViewer
      Parameters:
      event - the SWT selection event
    • handleOpen

      protected void handleOpen(SelectionEvent event)
      Description copied from class: StructuredViewer
      Handles an open event from the OpenStrategy.

      This method is internal to the framework; subclassers should not call this method.

      Overrides:
      handleOpen in class StructuredViewer
      Parameters:
      event - the SWT selection event
    • handlePostSelect

      protected void handlePostSelect(SelectionEvent e)
      Description copied from class: StructuredViewer
      Handles a post select event from the widget.

      This method is internal to the framework; subclassers should not call this method.

      Overrides:
      handlePostSelect in class StructuredViewer
      Parameters:
      e - the SWT selection event
    • handleSelect

      protected void handleSelect(SelectionEvent event)
      Description copied from class: StructuredViewer
      Handles a select event from the widget.

      This method is internal to the framework; subclassers should not call this method.

      Overrides:
      handleSelect in class StructuredViewer
      Parameters:
      event - the SWT selection event
    • getSelection

      public ISelection getSelection()
      Returns the current selection.

      Note that as of 3.2.1 and 3.3, the common viewer caches its selection. Clients must not set the selection of the viewer's tree control directly.

      Specified by:
      getSelection in interface ISelectionProvider
      Overrides:
      getSelection in class AbstractTreeViewer
      Returns:
      ISelection
      See Also:
    • refresh

      public void refresh(Object element)
      Description copied from class: StructuredViewer
      Refreshes this viewer starting with the given element.

      Unlike the update methods, this handles structural changes to the given element (e.g. addition or removal of children). If only the given element needs updating, it is more efficient to use the update methods.

      Overrides:
      refresh in class ColumnViewer
      Parameters:
      element - the element
    • update

      public void update(Object element, String[] properties)
      Description copied from class: StructuredViewer
      Updates the given element's presentation when one or more of its properties changes. Only the given element is updated.

      This does not handle structural changes (e.g. addition or removal of elements), and does not update any other related elements (e.g. child elements). To handle structural changes, use the refresh methods instead.

      This should be called when an element has changed in the model, in order to have the viewer accurately reflect the model. This method only affects the viewer, not the model.

      Specifying which properties are affected may allow the viewer to optimize the update. For example, if the label provider is not affected by changes to any of these properties, an update may not actually be required. Specifying properties as null forces a full update of the element.

      If the viewer has a sorter which is affected by a change to one of the properties, the element's position is updated to maintain the sort order. Note that resorting may not happen if properties is null.

      If the viewer has a filter which is affected by a change to one of the properties, the element may appear or disappear if the change affects whether or not the element is filtered out. Note that filtering may not happen if properties is null.

      Overrides:
      update in class ColumnViewer
      Parameters:
      element - the element
      properties - the properties that have changed, or null to indicate unknown
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • internalRefresh

      protected void internalRefresh(Object element, boolean updateLabels)
      Description copied from class: StructuredViewer
      Refreshes this viewer starting at the given element. Labels are updated as described in refresh(boolean updateLabels).

      The default implementation simply calls internalRefresh(element), ignoring updateLabels.

      If this method is overridden to do the actual refresh, then internalRefresh(Object element) should simply call internalRefresh(element, true).

      Overrides:
      internalRefresh in class AbstractTreeViewer
      Parameters:
      element - the element
      updateLabels - true to update labels for existing elements, false to only update labels as needed, assuming that labels for existing elements are unchanged.
    • createFrameList

      public void createFrameList()
      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.
    • getFrameList

      public org.eclipse.ui.internal.navigator.framelist.FrameList getFrameList()
      Returns:
      a FrameList
      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.