package edu.ualberta.med.biobank.treeview;
import java.util.List;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.Tree;
// FIXME see code commented below. Need to know what is still needed for the new adapters
public abstract class NewAbstractSearchedNode extends AbstractNewAdapterBase {
public NewAbstractSearchedNode(AbstractAdapterBase parent, int id) {
super(parent, id, Messages.AbstractSearchedNode_searched, null, false);
}
@Override
public void popupMenu(TreeViewer tv, Tree tree, Menu menu) {
MenuItem mi = new MenuItem(menu, SWT.PUSH);
mi.setText(Messages.AbstractSearchedNode_clear);
mi.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent event) {
clear();
}
});
}
// @Override
// public void performExpand() {
// List<ModelWrapper<?>> alreadyHasListener = new
// ArrayList<ModelWrapper<?>>();
// try {
// for (AbstractAdapterBase child : getChildren()) {
// if (child instanceof AdapterBase) {
// ModelWrapper<?> childWrapper = ((AdapterBase) child)
// .getModelObject();
// if (childWrapper != null) {
// childWrapper.reload();
// }
// }
// List<AbstractAdapterBase> subChildren = new
// ArrayList<AbstractAdapterBase>(
// child.getChildren());
// List<AbstractAdapterBase> toRemove = new
// ArrayList<AbstractAdapterBase>();
// for (AbstractAdapterBase subChild : subChildren) {
// ModelWrapper<?> wrapper = null;
// if (subChild instanceof AdapterBase) {
// Object subChildObj = ((AdapterBase) subChild)
// .getModelObject();
// if (subChildObj instanceof ModelWrapper) {
// wrapper = (ModelWrapper<?>) subChildObj;
// wrapper.reload();
// }
// }
// Integer subChildId = subChild.getId();
// if (!searchedObjectIds.contains(subChildId)) {
// toRemove.add(subChild);
// } else {
// // subChild.rebuild();
// if (wrapper != null) {
// alreadyHasListener.add(wrapper);
// }
// }
// }
// for (AbstractAdapterBase subChild : toRemove)
// child.removeChild(subChild);
// }
// // add searched objects is not yet there
// for (final Object o : searchedObjects) {
// if (o instanceof ModelWrapper) {
// ModelWrapper<?> w = (ModelWrapper<?>) o;
// if (!alreadyHasListener.contains(w)) {
// w.addWrapperListener(new WrapperListenerAdapter() {
// @Override
// public void deleted(WrapperEvent event) {
// searchedObjects.remove(o);
// performExpand();
// }
// });
// }
// }
// addNode(o);
// }
//
// // if (!keepDirectLeafChild) {
// // remove sub children without any children
// List<AbstractAdapterBase> children = new ArrayList<AbstractAdapterBase>(
// getChildren());
// for (AbstractAdapterBase child : children) {
// if (!(child instanceof DispatchAdapter)
// && child.getChildren().size() == 0) {
// removeChild(child);
// }
// }
// // }
// } catch (final RemoteAccessException exp) {
// BgcPlugin.openRemoteAccessErrorMessage(exp);
// } catch (Exception e) {
// logger.error("Error while refreshing searched elements", e); //$NON-NLS-1$
// }
// }
@Override
protected void executeDoubleClick() {
performExpand();
}
@Override
public String getViewFormId() {
return null;
}
@Override
public String getTooltipTextInternal() {
return null;
}
@Override
public String getEntryFormId() {
return null;
}
@Override
public List<AbstractAdapterBase> search(Class<?> searchedClass,
Integer objectId) {
return searchChildren(searchedClass, objectId);
}
public void clear() {
removeAll();
}
}