package edu.ualberta.med.biobank.views; import java.util.List; import org.eclipse.swt.widgets.Composite; import edu.ualberta.med.biobank.common.wrappers.ModelWrapper; import edu.ualberta.med.biobank.gui.common.BgcPlugin; import edu.ualberta.med.biobank.treeview.AbstractSearchedNode; import edu.ualberta.med.biobank.treeview.AbstractTodayNode; public abstract class AbstractTodaySearchAdministrationView extends AbstractAdministrationView { protected AbstractTodayNode<?> todayNode; protected AbstractSearchedNode searchedNode; protected abstract String getString(); @Override public void createPartControl(Composite parent) { super.createPartControl(parent); searchedNode = createSearchedNode(); searchedNode.setParent(rootNode); rootNode.addChild(searchedNode); } protected abstract AbstractTodayNode<?> createTodayNode(); protected abstract AbstractSearchedNode createSearchedNode(); public AbstractTodayNode<?> getTodayNode() { return todayNode; } public AbstractSearchedNode getSearchedNode() { return searchedNode; } @Override protected void internalSearch() { String text = treeText.getText(); try { List<? extends ModelWrapper<?>> searchedObject = search(text); if (searchedObject == null || searchedObject.size() == 0) { notFound(text); } else { showSearchedObjectsInTree(searchedObject, true); getTreeViewer().expandToLevel(searchedNode, 3); } } catch (Exception e) { BgcPlugin .openAsyncError( Messages.AbstractTodaySearchAdministrationView_search_error_title, e); } } protected abstract void showSearchedObjectsInTree( List<? extends ModelWrapper<?>> searchedObject, boolean b); protected abstract List<? extends ModelWrapper<?>> search(String text) throws Exception; protected abstract void notFound(String text); @Override public void reload() { if (todayNode != null) todayNode.performExpand(); if (searchedNode != null) searchedNode.performExpand(); super.reload(); } @Override public void clear() { todayNode.removeAll(); searchedNode.clear(); } }