@Override
 public void dispose() {
   super.dispose();
   if (browseStrategy != null) {
     browseStrategy.dispose();
   }
   if (revealStrategy != null) {
     revealStrategy.dispose();
   }
 }
  @Override
  public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
    super.inputChanged(viewer, oldInput, newInput);
    if (viewer instanceof StructuredViewer) {
      this.viewer = (StructuredViewer) viewer;
    } else {
      this.viewer = null;
    }

    revealStrategy.inputChanged(viewer, oldInput, newInput);
    browseStrategy.inputChanged(viewer, oldInput, newInput);
  }