/*
   * (non-Javadoc)
   *
   * @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
   */
  @Override
  public void createPartControl(Composite parent) {
    GridLayout gridLayout = new GridLayout(1, true);
    parent.setLayout(gridLayout);
    createTitle(parent);
    stViewer = createAbstractSTViewer(parent);

    // create the actions before the input is set on the viewer but after
    // the sorter and filter are set so the actions will be enabled correctly.
    createActions();

    final MenuManager mgr = initContextMenu();
    final Menu menu = mgr.createContextMenu(parent);
    stViewer.getViewer().getControl().setMenu(menu);

    getSite().registerContextMenu(mgr, stViewer.getViewer());

    // the selection provider registered
    getSite().setSelectionProvider(stViewer.getViewer());

    IActionBars actionBars = getViewSite().getActionBars();

    initMenu(actionBars.getMenuManager());
    initToolBar(actionBars.getToolBarManager());
  }
  /**
   * Resort the table based on field.
   *
   * @param column the column being updated
   * @param field
   */
  private void resortTable(final Item column, final ISTDataViewersField field) {
    STDataViewersComparator sorter = stViewer.getTableSorter();

    if (column.equals(sorter.getTopColumn())) {
      sorter.reverseTopPriority();
    } else {
      sorter.setTopPriority(column, field);
    }

    BusyIndicator.showWhile(
        null,
        () -> {
          stViewer.getViewer().refresh();
          stViewer.updateDirectionIndicator(column);
        });
  }
 /**
  * Fills the context menu (mouse right-click)
  *
  * <p>Subclasses may extend it. don't forget to call <code>super.fillContextMenu(...)</code>
  *
  * @param manager
  */
 private void fillContextMenu(IMenuManager manager) {
   Control control = stViewer.getViewer().getControl();
   if (control instanceof Tree) {
     Tree tree = (Tree) control;
     TreeItem[] selection = tree.getSelection();
     if (selection != null && selection.length > 0) {
       if (collapseSelectionAction != null) {
         manager.add(collapseSelectionAction);
       }
       if (expandSelectionAction != null) {
         manager.add(expandSelectionAction);
       }
       manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
       if (copyToAction != null) {
         manager.add(copyToAction);
       }
     }
   }
   manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
 }
 /**
  * Shortcut for getViewer().setInput(input) See {@link TreeViewer#setInput(Object)}
  *
  * @param input
  */
 public void setInput(Object input) {
   stViewer.getViewer().setInput(input);
 }
 /**
  * Return the input of the viewer.
  *
  * @return Object
  */
 public Object getViewerInput() {
   return stViewer.getViewer().getInput();
 }
 /**
  * Gets the selection provider.
  *
  * @return the selection provider
  */
 protected ISelectionProvider getSelectionProvider() {
   return stViewer.getViewer();
 }
 /**
  * Return the tree for the receiver.
  *
  * @return Control
  */
 public Control getControl() {
   return stViewer.getViewer().getControl();
 }