package edu.ualberta.med.biobank.views; import java.util.List; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.swt.widgets.Display; import org.eclipse.ui.part.ViewPart; import edu.ualberta.med.biobank.treeview.AbstractAdapterBase; public abstract class AbstractViewWithTree<T> extends ViewPart { public abstract TreeViewer getTreeViewer(); @Override public abstract void setFocus(); @SuppressWarnings("unchecked") public T getSelectedNode() { if (getTreeViewer() != null) { IStructuredSelection treeSelection = (IStructuredSelection) getTreeViewer() .getSelection(); if (treeSelection != null && treeSelection.size() > 0) { return (T) treeSelection.getFirstElement(); } } return null; } public void setSelectedNode(final T node) { if (getTreeViewer() != null) { getTreeViewer().setSelection(new StructuredSelection(node)); } } // FIXME: converted this to asyncExec call due to issue #1039. // not sure if this is the right solution public void setSelectedNodeAsync(final T node) { if (getTreeViewer() == null) return; Display.getDefault().asyncExec(new Runnable() { @Override public void run() { getTreeViewer().setSelection(new StructuredSelection(node)); } }); } public abstract List<AbstractAdapterBase> searchNode( Class<?> searchedClass, Integer objectId); }