/**
   * Creates the control ie. creates all the stuff that matters and is visible in the outline.
   *
   * <p>Actions must be created before menus and toolbars.
   *
   * @param parent
   */
  @Override
  public void createControl(Composite parent) {
    super.createControl(parent);
    NddlContentProvider provider = editor.getNddlContentProvider();

    // initialize the tree viewers
    TreeViewer viewer = getTreeViewer();
    viewer.setContentProvider(provider);
    viewer.addFilter(new FileViewerFilter());
    viewer.setLabelProvider(new NddlLabelProvider());

    // set the selection listener
    viewer.addSelectionChangedListener(this);

    // finally set the input
    if (this.input != null) viewer.setInput(this.input);
    else provider.reload(editor.getFile());
  }
  /**
   * Focuses the editor to the text of the selected item.
   *
   * @param event the selection event
   */
  @Override
  public void selectionChanged(SelectionChangedEvent event) {
    super.selectionChanged(event);
    ISelection selection = event.getSelection();
    if (selection.isEmpty()) {
      editor.resetHighlightRange();
    } else {
      OutlineNode node = (OutlineNode) ((IStructuredSelection) selection).getFirstElement();
      IDocument doc = editor.getDocumentProvider().getDocument(editor.getEditorInput());

      Position position = computePosition(node.getAst(), doc);
      if (position != null) {
        try {
          editor.setHighlightRange(position.getOffset(), position.getLength(), true);
          editor.getViewer().revealRange(position.getOffset(), position.getLength());
        } catch (IllegalArgumentException x) {
          editor.resetHighlightRange();
        }
      } else {
        editor.resetHighlightRange();
      }
    }
  }
 private String getFileName() {
   return editor.getFile().getLocation().toString();
 }