Package org.eclipse.handly.ui.callhierarchy

# Class CallHierarchyViewPart

java.lang.Object
org.eclipse.core.commands.common.EventManager
org.eclipse.ui.part.WorkbenchPart
org.eclipse.ui.part.ViewPart
org.eclipse.handly.ui.callhierarchy.CallHierarchyViewPart

All Implemented Interfaces:
  `org.eclipse.core.runtime.IAdaptable`, `org.eclipse.core.runtime.IExecutableExtension`, `org.eclipse.ui.IPersistable`, `org.eclipse.ui.IViewPart`, `org.eclipse.ui.IWorkbenchPart`, `org.eclipse.ui.IWorkbenchPart2`, `org.eclipse.ui.IWorkbenchPart3`, `org.eclipse.ui.part.IWorkbenchPartOrientation`

public abstract class CallHierarchyViewPart extends org.eclipse.ui.part.ViewPart
An abstract base implementation of a call hierarchy view.

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `protected static class`
  `CallHierarchyViewPart.HistoryEntry`
  Represents an entry of the call hierarchy view history list.

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected static final String`
  `GROUP_FOCUS`
  Pop-up menu: name of group for focus actions (value `"group.focus"`).

  ### Fields inherited from interface org.eclipse.ui.IWorkbenchPart

  `PROP_TITLE`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `CallHierarchyViewPart()`
  Constructs a call hierarchy view that supports all of the call hierarchy kinds.
  `CallHierarchyViewPart(EnumSet<CallHierarchyKind> supportedHierarchyKinds)`
  Constructs a call hierarchy view that supports the given call hierarchy kinds.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `protected void`
  `addHistoryDropDownAction(org.eclipse.jface.action.IAction action)`
  Contributes the 'show history list' action to this view.
  `protected void`
  `addPinAction(org.eclipse.jface.action.IAction action)`
  Contributes the 'pin' action to this view.
  `protected void`
  `addRefreshAction(org.eclipse.jface.action.IAction action)`
  Contributes the 'refresh' action to this view.
  `protected void`
  `addSetHierarchyKindAction(org.eclipse.jface.action.IAction action, CallHierarchyKind kind)`
  Contributes a 'set hierarchy kind' action to this view.
  `protected void`
  `addSetOrientationAction(org.eclipse.jface.action.IAction action, int orientation)`
  Contributes a 'set orientation' action to this view.
  `final boolean`
  `arePossibleInputElements(Object[] elements)`
  Returns whether the given elements are possible input elements for this view.
  `protected abstract String`
  `computeContentDescription()`
  Computes the content description for this view.
  `protected void`
  `configureHierarchyViewer(org.eclipse.jface.viewers.TreeViewer viewer)`
  Configures the newly created hierarchy viewer.
  `protected void`
  `configureLocationViewer(org.eclipse.jface.viewers.TableViewer viewer)`
  Configures the newly created location viewer.
  `protected EditorOpener`
  `createEditorOpener()`
  Creates and returns an editor opener for this view.
  `protected abstract ICallHierarchyNode[]`
  `createHierarchyRoots(Object[] inputElements)`
  Creates and returns the root nodes for a call hierarchy based on the given input elements and the current hierarchy kind.
  `protected org.eclipse.jface.viewers.TreeViewer`
  `createHierarchyViewer(org.eclipse.swt.widgets.Composite parent)`
  Creates and returns a tree viewer control that will be used for displaying the call hierarchy.
  `protected void`
  `createHierarchyViewerMenuGroups(org.eclipse.jface.action.IMenuManager manager)`
  Creates the menu groups for the hierarchy viewer's pop-up menu.
  `protected HistoryDropDownAction<CallHierarchyViewPart.HistoryEntry>`
  `createHistoryDropDownAction(HistoryDropDownAction.History<CallHierarchyViewPart.HistoryEntry> history)`
  Creates and returns a 'show history list' action for this view.
  `protected abstract CallHierarchyViewPart.HistoryEntry`
  `createHistoryEntry(Object[] inputElements)`
  Creates and returns a history entry for the given input elements.
  `protected void`
  `createLocationColumns(org.eclipse.swt.widgets.Table table)`
  Creates the table columns in the location viewer.
  `protected org.eclipse.jface.viewers.TableViewer`
  `createLocationViewer(org.eclipse.swt.widgets.Composite parent)`
  Creates and returns a table viewer control that will be used for displaying the call locations.
  `protected void`
  `createLocationViewerMenuGroups(org.eclipse.jface.action.IMenuManager manager)`
  Creates the menu groups for the location viewer's pop-up menu.
  `protected org.eclipse.swt.widgets.Control`
  `createNoHierarchyPage(org.eclipse.swt.widgets.Composite parent)`
  Creates and returns a control for the 'no hierarchy' page.
  `void`
  `createPartControl(org.eclipse.swt.widgets.Composite parent)`
  `protected org.eclipse.swt.custom.SashForm`
  `createSashForm(org.eclipse.swt.widgets.Composite parent)`
  Creates and returns a `SashForm` that will be used as the parent control for the hierarchy and location viewers.
  `void`
  `dispose()`
  `protected void`
  `doRefresh(IContext context)`
  Refreshes the content of this view according to options specified in the given context.
  `protected void`
  `fillHierarchyViewerMenu(org.eclipse.jface.action.IMenuManager manager)`
  Fills the pop-menu for the hierarchy viewer using the menu groups created by `createHierarchyViewerMenuGroups(IMenuManager)`.
  `protected void`
  `fillLocationViewerMenu(org.eclipse.jface.action.IMenuManager manager)`
  Fills the pop-menu for the location viewer using the menu groups created by `createLocationViewerMenuGroups(IMenuManager)`.
  `protected final EditorOpener`
  `getEditorOpener()`
  Returns the editor opener used by this view.
  `protected final org.eclipse.jface.action.IAction`
  `getFocusOnSelectionAction()`
  Returns the 'focus on selection' action used by this view.
  `protected org.eclipse.jface.viewers.ViewerComparator`
  `getHierarchyComparator()`
  Returns a comparator for the hierarchy viewer.
  `final CallHierarchyKind`
  `getHierarchyKind()`
  Returns the current hierarchy kind for this view.
  `protected ICallHierarchyNode[]`
  `getHierarchyRoots()`
  Returns the root nodes for the current call hierarchy.
  `protected final org.eclipse.jface.viewers.TreeViewer`
  `getHierarchyViewer()`
  Returns the hierarchy tree viewer.
  `protected List<CallHierarchyViewPart.HistoryEntry>`
  `getHistory()`
  Returns the history used by this view; the history is represented by a "live" list of history entries.
  `final Object[]`
  `getInputElements()`
  Returns the current input elements for this view.
  `protected ColumnDescription[]`
  `getLocationColumnDescriptions()`
  Returns the column descriptions for the call location table.
  `protected final org.eclipse.jface.viewers.TableViewer`
  `getLocationViewer()`
  Returns the location table viewer.
  `protected final org.eclipse.jface.action.IAction`
  `getRefreshElementAction()`
  Returns the 'refresh element' action used by this view.
  `protected final org.eclipse.jface.action.IAction`
  `getRemoveFromViewAction()`
  Returns the 'remove from view' action used by this view.
  `protected final org.eclipse.swt.custom.SashForm`
  `getSashForm()`
  Returns the parent `SashForm` for the hierarchy and location viewers.
  `protected abstract CallHierarchyViewManager`
  `getViewManager()`
  Returns a `CallHierarchyViewManager` for this view.
  `protected void`
  `handleCannotRevealCallLocation(org.eclipse.ui.IEditorPart editor, ICallLocation callLocation, IContext context)`
  Handles the case when a call location cannot be revealed in the editor.
  `protected void`
  `hierarchySelectionChanged(org.eclipse.jface.viewers.ISelection selection)`
  This method is called on each selection change in the hierarchy viewer.
  `protected void`
  `historyUpdated()`
  A callback that is invoked when the history has been updated.
  `void`
  `init(org.eclipse.ui.IViewSite site, org.eclipse.ui.IMemento memento)`
  `final boolean`
  `isPinned()`
  Returns whether this view is pinned.
  `protected abstract boolean`
  `isPossibleInputElement(Object element)`
  Returns whether the given element is a possible input element for this view.
  `protected void`
  `locationSelectionChanged(org.eclipse.jface.viewers.ISelection selection)`
  This method is called on each selection change in the location viewer.
  `protected void`
  `notifyHistoryUpdated()`
  Notifies that the history has been updated by this view.
  `final void`
  `refresh()`
  Performs a full refresh of the content of this view.
  `protected final void`
  `refresh(IContext context)`
  Performs a refresh of the content of this view according to options specified in the given context.
  `protected void`
  `revealCallLocation(org.eclipse.ui.IEditorPart editor, ICallLocation callLocation, IContext context)`
  Attempts to reveal the given call location in the given editor.
  `protected void`
  `revealInEditor(Object element, boolean activate, boolean mayOpenNewEditor)`
  Reveals the given element in an appropriate editor on a best effort basis.
  `void`
  `saveState(org.eclipse.ui.IMemento memento)`
  `void`
  `setFocus()`
  `void`
  `setHierarchyKind(CallHierarchyKind kind)`
  Sets the current hierarchy kind for this view.
  `void`
  `setInputElements(Object[] elements)`
  Sets the current input elements for this view.
  `void`
  `setOrientation(int orientation)`
  Sets the orientation of this view, which may be one of the constants `SWT.HORIZONTAL` or `SWT.VERTICAL`; this method may also be called with `SWT.HORIZONTAL|SWT.VERTICAL` for automatic orientation.
  `void`
  `setPinned(boolean pinned)`
  Marks this view as pinned.
  `final boolean`
  `supportsHierarchyKind(CallHierarchyKind kind)`
  Returns whether this view supports the given hierarchy kind.
  `protected void`
  `updateStatusLine(org.eclipse.jface.action.IStatusLineManager manager, org.eclipse.jface.viewers.IStructuredSelection selection)`
  Updates the status line based on the given selection in this view.

  ### Methods inherited from class org.eclipse.ui.part.ViewPart

  `checkSite, getViewSite, init, setContentDescription, setInitializationData, setPartName`

  ### Methods inherited from class org.eclipse.ui.part.WorkbenchPart

  `addPartPropertyListener, addPropertyListener, firePartPropertyChanged, firePropertyChange, getAdapter, getConfigurationElement, getContentDescription, getDefaultImage, getOrientation, getPartName, getPartProperties, getPartProperty, getSite, getTitle, getTitleImage, getTitleToolTip, removePartPropertyListener, removePropertyListener, setPartProperty, setSite, setTitle, setTitleImage, setTitleToolTip, showBusy`

  ### Methods inherited from class org.eclipse.core.commands.common.EventManager

  `addListenerObject, clearListeners, getListeners, isListenerAttached, removeListenerObject`

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

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

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

  `getAdapter`

  ### Methods inherited from interface org.eclipse.ui.IWorkbenchPart

  `addPropertyListener, getSite, getTitle, getTitleImage, getTitleToolTip, removePropertyListener`

- ## Field Details

  - ### GROUP_FOCUS

    protected static final String GROUP_FOCUS
    Pop-up menu: name of group for focus actions (value `"group.focus"`).
    See Also:
      - Constant Field Values

- ## Constructor Details

  - ### CallHierarchyViewPart

    public CallHierarchyViewPart()
    Constructs a call hierarchy view that supports all of the call hierarchy kinds.
    See Also:
      - `CallHierarchyKind`
      - `CallHierarchyViewPart(EnumSet)`

  - ### CallHierarchyViewPart

    public CallHierarchyViewPart(EnumSet<CallHierarchyKind> supportedHierarchyKinds)
    Constructs a call hierarchy view that supports the given call hierarchy kinds.
    Parameters:
      `supportedHierarchyKinds` - not `null` and not empty

- ## Method Details

  - ### arePossibleInputElements

    public final boolean arePossibleInputElements(Object[] elements)
    Returns whether the given elements are possible input elements for this view. This method invokes `isPossibleInputElement(Object)` for each of the given elements until `false` is returned for an element (in which case this method will return `false`) or all elements have been checked (in which case it will return `true`).
    Parameters:
      `elements` - may be `null` or may contain null elements, in which case `false` will be returned; may be empty, in which case `true` will be returned
    Returns:
      `true` if the given elements are possible input elements for this view, and `false` otherwise

  - ### isPossibleInputElement

    protected abstract boolean isPossibleInputElement(Object element)
    Returns whether the given element is a possible input element for this view.
    Parameters:
      `element` - may be `null`, in which case `false` will be returned
    Returns:
      `true` if the given element is a possible input element for this view, and `false` otherwise
    See Also:
      - `arePossibleInputElements(Object[])`

  - ### setInputElements

    public void setInputElements(Object[] elements)
    Sets the current input elements for this view. Clients must not modify the given array afterwards.

    Default implementation invokes `refresh()` after the input elements have been set.

    Parameters:
      `elements` - not `null`, must not contain null elements; may be empty
    Throws:
      `IllegalArgumentException` - if `arePossibleInputElements(Object[])` returns `false` for the given elements

  - ### getInputElements

    public final Object[] getInputElements()
    Returns the current input elements for this view.
    Returns:
      the current input elements (never `null`, may be empty). Clients must not modify the returned array.

  - ### getHierarchyKind

    public final CallHierarchyKind getHierarchyKind()
    Returns the current hierarchy kind for this view. If the hierarchy kind has not been explicitly set, returns the first of the supported hierarchy kinds.
    Returns:
      the current hierarchy kind (never `null`)
    See Also:
      - `setHierarchyKind(CallHierarchyKind)`

  - ### setHierarchyKind

    public void setHierarchyKind(CallHierarchyKind kind)
    Sets the current hierarchy kind for this view.

    Default implementation invokes `refresh()` if the view hierarchy kind has changed; it also adjusts the checked state of the 'set hierarchy kind' actions accordingly.

    Parameters:
      `kind` - not `null`
    Throws:
      `IllegalArgumentException` - if the given kind is not `supported` by this view

  - ### supportsHierarchyKind

    public final boolean supportsHierarchyKind(CallHierarchyKind kind)
    Returns whether this view supports the given hierarchy kind.
    Parameters:
      `kind` - may be `null`, in which case `false` will be returned
    Returns:
      `true` if this view supports the given kind, and `false` otherwise

  - ### setOrientation

    public void setOrientation(int orientation)
    Sets the orientation of this view, which may be one of the constants `SWT.HORIZONTAL` or `SWT.VERTICAL`; this method may also be called with `SWT.HORIZONTAL|SWT.VERTICAL` for automatic orientation.
    Parameters:
      `orientation` - new orientation
    Throws:
      `IllegalArgumentException` - if the value of orientation is invalid

  - ### setPinned

    public void setPinned(boolean pinned)
    Marks this view as pinned.
    Parameters:
      `pinned` - whether the view is pinned

  - ### isPinned

    public final boolean isPinned()
    Returns whether this view is pinned.
    Returns:
      `true` if the view is pinned, and `false` otherwise

  - ### refresh

    public final void refresh()
    Performs a full refresh of the content of this view. This method invokes `refresh(IContext)` with an empty context.

  - ### refresh

    protected final void refresh(IContext context)
    Performs a refresh of the content of this view according to options specified in the given context. This method does nothing if the SWT controls for this view have not been created or have been disposed. Otherwise, it invokes `doRefresh(IContext)`.
    Parameters:
      `context` - the operation context (never `null`)

  - ### init

    public void init(org.eclipse.ui.IViewSite site, org.eclipse.ui.IMemento memento) throws org.eclipse.ui.PartInitException
    Specified by:
      `init` in interface `org.eclipse.ui.IViewPart`
    Overrides:
      `init` in class `org.eclipse.ui.part.ViewPart`
    Throws:
      `org.eclipse.ui.PartInitException`

  - ### saveState

    public void saveState(org.eclipse.ui.IMemento memento)
    Specified by:
      `saveState` in interface `org.eclipse.ui.IPersistable`
    Specified by:
      `saveState` in interface `org.eclipse.ui.IViewPart`
    Overrides:
      `saveState` in class `org.eclipse.ui.part.ViewPart`

  - ### createPartControl

    public void createPartControl(org.eclipse.swt.widgets.Composite parent)
    Specified by:
      `createPartControl` in interface `org.eclipse.ui.IWorkbenchPart`
    Specified by:
      `createPartControl` in class `org.eclipse.ui.part.WorkbenchPart`

  - ### dispose

    public void dispose()
    Specified by:
      `dispose` in interface `org.eclipse.ui.IWorkbenchPart`
    Overrides:
      `dispose` in class `org.eclipse.ui.part.WorkbenchPart`

  - ### setFocus

    public void setFocus()
    Specified by:
      `setFocus` in interface `org.eclipse.ui.IWorkbenchPart`
    Specified by:
      `setFocus` in class `org.eclipse.ui.part.WorkbenchPart`

  - ### getViewManager

    protected abstract CallHierarchyViewManager getViewManager()
    Returns a `CallHierarchyViewManager` for this view. The same manager instance is returned for each call.
    Returns:
      the view manager (never `null`)

  - ### getHierarchyRoots

    protected ICallHierarchyNode[] getHierarchyRoots()
    Returns the root nodes for the current call hierarchy.

    Default implementation invokes `createHierarchyRoots(Object[])` with the current input elements.

    Returns:
      the root nodes for the current call hierarchy (never `null`, may be empty)

  - ### createHierarchyRoots

    protected abstract ICallHierarchyNode[] createHierarchyRoots(Object[] inputElements)
    Creates and returns the root nodes for a call hierarchy based on the given input elements and the current hierarchy kind.
    Parameters:
      `inputElements` - never `null`, may be empty
    Returns:
      the created nodes (not `null`, may be empty)

  - ### getHierarchyComparator

    protected org.eclipse.jface.viewers.ViewerComparator getHierarchyComparator()
    Returns a comparator for the hierarchy viewer.

    Default implementation returns a `LabelComparator` if the current hierarchy kind is `CallHierarchyKind.CALLER`, and `null` otherwise.

    Returns:
      a `ViewerComparator`, or `null` for no sorting

  - ### computeContentDescription

    protected abstract String computeContentDescription()
    Computes the content description for this view.
    Returns:
      the computed content description (not `null`)
    See Also:
      - `WorkbenchPart.getContentDescription()`

  - ### updateStatusLine

    protected void updateStatusLine(org.eclipse.jface.action.IStatusLineManager manager, org.eclipse.jface.viewers.IStructuredSelection selection)
    Updates the status line based on the given selection in this view.

    Default implementation clears the status line message if the selection is empty or if exactly one element is selected; sets a generic message of the form "(x) items selected" otherwise. It always clears the error message.

    Parameters:
      `manager` - the status line manager (never `null`)
      `selection` - the current selection (never `null`)

  - ### doRefresh

    protected void doRefresh(IContext context)
    Refreshes the content of this view according to options specified in the given context. This method may only be called after the SWT controls for this view have been created and before they have been disposed.
    Parameters:
      `context` - the operation context (never `null`)

  - ### createNoHierarchyPage

    protected org.eclipse.swt.widgets.Control createNoHierarchyPage(org.eclipse.swt.widgets.Composite parent)
    Creates and returns a control for the 'no hierarchy' page. This method is called once, when the part's control is created.

    Default implementation returns a `Label` telling, in general terms, that there is no call hierarchy to display. Subclasses may override this method (e.g., to give details on what the user needs to do to display a call hierarchy).

    Parameters:
      `parent` - the parent composite (never `null`)
    Returns:
      the created control (not `null`)

  - ### getSashForm

    protected final org.eclipse.swt.custom.SashForm getSashForm()
    Returns the parent `SashForm` for the hierarchy and location viewers.
    Returns:
      the `SashForm`, or `null` if it has yet to be created
    See Also:
      - `createSashForm(Composite)`

  - ### createSashForm

    protected org.eclipse.swt.custom.SashForm createSashForm(org.eclipse.swt.widgets.Composite parent)
    Creates and returns a `SashForm` that will be used as the parent control for the hierarchy and location viewers. This method only creates the control; it does not configure it. This method is called once, when the part's control is created.
    Parameters:
      `parent` - the parent composite (never `null`)
    Returns:
      the created control (not `null`)

  - ### getHierarchyViewer

    protected final org.eclipse.jface.viewers.TreeViewer getHierarchyViewer()
    Returns the hierarchy tree viewer.
    Returns:
      the hierarchy tree viewer, or `null` if it has yet to be created
    See Also:
      - `createHierarchyViewer(Composite)`

  - ### createHierarchyViewer

    protected org.eclipse.jface.viewers.TreeViewer createHierarchyViewer(org.eclipse.swt.widgets.Composite parent)
    Creates and returns a tree viewer control that will be used for displaying the call hierarchy. This method only creates the control; it does not configure it. This method is called once, when the part's control is created.
    Parameters:
      `parent` - the parent composite (never `null`)
    Returns:
      the created control (not `null`)
    See Also:
      - `configureHierarchyViewer(TreeViewer)`

  - ### configureHierarchyViewer

    protected void configureHierarchyViewer(org.eclipse.jface.viewers.TreeViewer viewer)
    Configures the newly created hierarchy viewer. This method has to set as least a content provider and a label provider. This method is called once, just after the viewer is created.

    Default implementation sets a `CallHierarchyContentProvider` as the content provider, and a `CallHierarchyLabelProvider` backed by a `WorkbenchLabelProvider` as the label provider. Subclasses usually need to extend this method and replace the default label provider; they may also override this method completely, but there is usually no need to.

    Parameters:
      `viewer` - the viewer to configure (never `null`)

  - ### createHierarchyViewerMenuGroups

    protected void createHierarchyViewerMenuGroups(org.eclipse.jface.action.IMenuManager manager)
    Creates the menu groups for the hierarchy viewer's pop-up menu. This method is called each time the pop-up menu is about to show, just before `fillHierarchyViewerMenu(IMenuManager)` is called.

    Default implementation adds groups named `GROUP_FOCUS` and `IWorkbenchActionConstants.MB_ADDITIONS`. Subclasses may extend or override this method, but should usually keep the default groups.

    Parameters:
      `manager` - the menu manager (never `null`)

  - ### fillHierarchyViewerMenu

    protected void fillHierarchyViewerMenu(org.eclipse.jface.action.IMenuManager manager)
    Fills the pop-menu for the hierarchy viewer using the menu groups created by `createHierarchyViewerMenuGroups(IMenuManager)`. This method is called each time the pop-up menu is about to show.

    Default implementation adds generic actions such as 'focus on selection', 'refresh element', and 'remove from view'. Subclasses may extend or override this method.

    Parameters:
      `manager` - the menu manager (never `null`)

  - ### hierarchySelectionChanged

    protected void hierarchySelectionChanged(org.eclipse.jface.viewers.ISelection selection)
    This method is called on each selection change in the hierarchy viewer.

    Default implementation changes the input of the location viewer accordingly and tries to reveal the selected hierarchy node in an open editor with `revealInEditor`. Subclasses may extend or even override this method, but there is usually no need to.

    Parameters:
      `selection` - the new selection (never `null`)

  - ### getLocationViewer

    protected final org.eclipse.jface.viewers.TableViewer getLocationViewer()
    Returns the location table viewer.
    Returns:
      the location table viewer, or `null` if it has yet to be created
    See Also:
      - `createLocationViewer(Composite)`

  - ### createLocationViewer

    protected org.eclipse.jface.viewers.TableViewer createLocationViewer(org.eclipse.swt.widgets.Composite parent)
    Creates and returns a table viewer control that will be used for displaying the call locations. This method only creates the control; it does not configure it. This method is called once, when the part's control is created.
    Parameters:
      `parent` - the parent composite (never `null`)
    Returns:
      the created control (not `null`)
    See Also:
      - `configureLocationViewer(TableViewer)`

  - ### configureLocationViewer

    protected void configureLocationViewer(org.eclipse.jface.viewers.TableViewer viewer)
    Configures the newly created location viewer. This method has to set as least a content provider and a label provider. This method is called once, just after the viewer is created.

    Default implementation sets an `ArrayContentProvider` as the content provider, and a `LocationTableLabelProvider` as the label provider. Also, it invokes `createLocationColumns(Table)`. Subclasses may extend or even override this method, but there is usually no need to.

    Parameters:
      `viewer` - the viewer to configure (never `null`)

  - ### createLocationColumns

    protected void createLocationColumns(org.eclipse.swt.widgets.Table table)
    Creates the table columns in the location viewer.

    Default implementation creates the columns based on descriptions returned by `getLocationColumnDescriptions()`. Subclasses may override this method, but there is usually no need to.

    Parameters:
      `table` - the table to create columns in (never `null`)

  - ### getLocationColumnDescriptions

    protected ColumnDescription[] getLocationColumnDescriptions()
    Returns the column descriptions for the call location table.

    Default implementation returns descriptions for the 'icon' column, the 'line number' column, and the 'call info' column. Subclasses may override this method, but there is usually no need to.

    Returns:
      the column descriptions (not `null`)

  - ### createLocationViewerMenuGroups

    protected void createLocationViewerMenuGroups(org.eclipse.jface.action.IMenuManager manager)
    Creates the menu groups for the location viewer's pop-up menu. This method is called each time the pop-up menu is about to show, just before `fillLocationViewerMenu(IMenuManager)` is called.

    Default implementation adds a group named `IWorkbenchActionConstants.MB_ADDITIONS`. Subclasses may extend or override this method.

    Parameters:
      `manager` - the menu manager (never `null`)

  - ### fillLocationViewerMenu

    protected void fillLocationViewerMenu(org.eclipse.jface.action.IMenuManager manager)
    Fills the pop-menu for the location viewer using the menu groups created by `createLocationViewerMenuGroups(IMenuManager)`. This method is called each time the pop-up menu is about to show.

    Default implementation does nothing. Subclasses may extend or override this method.

    Parameters:
      `manager` - the menu manager (never `null`)

  - ### locationSelectionChanged

    protected void locationSelectionChanged(org.eclipse.jface.viewers.ISelection selection)
    This method is called on each selection change in the location viewer.

    Default implementation tries to reveal the selected call location in an open editor with `revealInEditor`. Subclasses may extend or even override this method, but there is usually no need to.

    Parameters:
      `selection` - the new selection (never `null`)

  - ### revealInEditor

    protected void revealInEditor(Object element, boolean activate, boolean mayOpenNewEditor) throws org.eclipse.ui.PartInitException
    Reveals the given element in an appropriate editor on a best effort basis.

    Default implementation uses the `editor opener` and specifically supports revealing an `ICallLocation` and an `ICallHierarchyNode` (other elements are handled generically). To reveal a call location in an open editor, it invokes `revealCallLocation`.

    Parameters:
      `element` - not `null`
      `activate` - whether to activate the editor
      `mayOpenNewEditor` - whether a new editor may be opened when the element cannot be revealed in an existing editor
    Throws:
      `org.eclipse.ui.PartInitException` - if a new editor could not be created or initialized

  - ### revealCallLocation

    protected void revealCallLocation(org.eclipse.ui.IEditorPart editor, ICallLocation callLocation, IContext context)
    Attempts to reveal the given call location in the given editor.

    Default implementation uses the `editor utility` of the `editor opener` for revealing the call range in the given editor and invokes `handleCannotRevealCallLocation` if the call location cannot be revealed for whatever reason.

    Parameters:
      `editor` - never `null`
      `callLocation` - never `null`
      `context` - never `null`

  - ### handleCannotRevealCallLocation

    protected void handleCannotRevealCallLocation(org.eclipse.ui.IEditorPart editor, ICallLocation callLocation, IContext context)
    Handles the case when a call location cannot be revealed in the editor.

    Default implementation displays a generic error message on the status line and attempts to reveal the caller element in the given editor.

    Parameters:
      `editor` - never `null`
      `callLocation` - never `null`
      `context` - never `null`

  - ### getEditorOpener

    protected final EditorOpener getEditorOpener()
    Returns the editor opener used by this view.
    Returns:
      the editor opener, or `null` if it has yet to be created
    See Also:
      - `createEditorOpener()`

  - ### createEditorOpener

    protected EditorOpener createEditorOpener()
    Creates and returns an editor opener for this view. This method is called once, when the part's control is created.

    Subclasses may override this method if they require a specific editor opener.

    Returns:
      the created editor opener (not `null`)

  - ### getFocusOnSelectionAction

    protected final org.eclipse.jface.action.IAction getFocusOnSelectionAction()
    Returns the 'focus on selection' action used by this view.
    Returns:
      the 'focus on selection' action

  - ### getRefreshElementAction

    protected final org.eclipse.jface.action.IAction getRefreshElementAction()
    Returns the 'refresh element' action used by this view.
    Returns:
      the 'refresh element' action

  - ### getRemoveFromViewAction

    protected final org.eclipse.jface.action.IAction getRemoveFromViewAction()
    Returns the 'remove from view' action used by this view.
    Returns:
      the 'remove from view' action

  - ### addRefreshAction

    protected void addRefreshAction(org.eclipse.jface.action.IAction action)
    Contributes the 'refresh' action to this view. This method is called once, when the part's control is created.

    Default implementation adds the given action to the view tool bar. Subclasses may extend or override this method.

    Parameters:
      `action` - the 'refresh' action (never `null`)

  - ### addSetHierarchyKindAction

    protected void addSetHierarchyKindAction(org.eclipse.jface.action.IAction action, CallHierarchyKind kind)
    Contributes a 'set hierarchy kind' action to this view. This method is called once for each of the 'set hierarchy kind' actions, when the part's control is created. If this view supports only one hierarchy kind, no 'set hierarchy kind' action is created and this method is not called.

    Default implementation adds the given action to the view tool bar as well as to the view menu. Subclasses may extend or override this method.

    Parameters:
      `action` - a 'set hierarchy kind' action (never `null`)
      `kind` - the hierarchy kind set by the given action (never `null`)

  - ### addSetOrientationAction

    protected void addSetOrientationAction(org.eclipse.jface.action.IAction action, int orientation)
    Contributes a 'set orientation' action to this view. This method is called once for each of the 'set orientation' actions, when the part's control is created.

    Default implementation adds the given action to the 'Layout' sub-menu of the view menu. The sub-menu is created if necessary. Subclasses may extend or override this method.

    Parameters:
      `action` - a 'set orientation' action (never `null`)
      `orientation` - the orientation set by the given action

  - ### createHistoryDropDownAction

    protected HistoryDropDownAction<CallHierarchyViewPart.HistoryEntry> createHistoryDropDownAction(HistoryDropDownAction.History<CallHierarchyViewPart.HistoryEntry> history)
    Creates and returns a 'show history list' action for this view. This method is called once, when the part's control is created.

    Subclasses need to override this method if they extend `HistoryDropDownAction`.

    Parameters:
      `history` - never `null`
    Returns:
      the created action (not `null`)

  - ### addHistoryDropDownAction

    protected void addHistoryDropDownAction(org.eclipse.jface.action.IAction action)
    Contributes the 'show history list' action to this view. This method is called once, when the part's control is created.

    Default implementation adds the given action to the view tool bar. Subclasses may extend or override this method.

    Parameters:
      `action` - the 'show history list' action (never `null`)

  - ### addPinAction

    protected void addPinAction(org.eclipse.jface.action.IAction action)
    Contributes the 'pin' action to this view. This method is called once, when the part's control is created.

    Default implementation adds the given action to the view tool bar. Subclasses may extend or override this method.

    Parameters:
      `action` - the 'pin' action (never `null`)

  - ### getHistory

    protected List<CallHierarchyViewPart.HistoryEntry> getHistory()
    Returns the history used by this view; the history is represented by a "live" list of history entries.

    Default implementation returns a history that is shared between all views managed by the same `view manager`.

    Returns:
      the view history (never `null`)

  - ### createHistoryEntry

    protected abstract CallHierarchyViewPart.HistoryEntry createHistoryEntry(Object[] inputElements)
    Creates and returns a history entry for the given input elements.
    Parameters:
      `inputElements` - never `null`; never empty
    Returns:
      the created history entry (not `null`)

  - ### notifyHistoryUpdated

    protected void notifyHistoryUpdated()
    Notifies that the history has been updated by this view.

    Default implementation calls `historyUpdated()` for each view managed by the same `view manager`.

    See Also:
      - `getHistory()`

  - ### historyUpdated

    protected void historyUpdated()
    A callback that is invoked when the history has been updated.

    Default implementation sets the enabled state of the 'show history list' action according to whether the history is empty and, if the history is empty, clears the view input.

    See Also:
      - `getHistory()`
      - `notifyHistoryUpdated()`