package edu.ualberta.med.biobank.widgets.trees.infos;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.core.runtime.Assert;
import org.eclipse.swt.widgets.Composite;
import edu.ualberta.med.biobank.common.wrappers.SpecimenTypeWrapper;
import edu.ualberta.med.biobank.gui.common.widgets.BgcLabelProvider;
import edu.ualberta.med.biobank.treeview.Node;
import edu.ualberta.med.biobank.widgets.infotables.BiobankCollectionModel;
import edu.ualberta.med.biobank.widgets.infotables.BiobankTableSorter;
public class SpecimenTypeInfoTree extends InfoTreeWidget<SpecimenTypeWrapper> {
private static final String[] HEADINGS = new String[] {
Messages.SpecimenTypeInfoTree_name_label,
Messages.SpecimenTypeInfoTree_nameShort_label };
protected List<SpecimenTypeWrapper> needReload = new ArrayList<SpecimenTypeWrapper>();
public SpecimenTypeInfoTree(Composite parent,
List<SpecimenTypeWrapper> specimenCollection) {
super(parent, specimenCollection, HEADINGS, 20);
}
@Override
protected BgcLabelProvider getLabelProvider() {
return new BgcLabelProvider() {
@Override
public String getColumnText(Object element, int columnIndex) {
SpecimenTypeWrapper item = null;
if (element instanceof SpecimenTypeWrapper)
item = (SpecimenTypeWrapper) element;
else
item = (SpecimenTypeWrapper) ((BiobankCollectionModel) element).o;
if (item == null) {
if (columnIndex == 0) {
return Messages.SpecimenTypeInfoTree_loading;
}
return ""; //$NON-NLS-1$
}
switch (columnIndex) {
case 0:
return item.getName();
case 1:
return item.getNameShort();
default:
return null;
}
}
};
}
@Override
protected String getCollectionModelObjectToString(Object o) {
if (o == null)
return null;
return ((SpecimenTypeWrapper) o).toString();
}
@Override
public SpecimenTypeWrapper getSelection() {
BiobankCollectionModel item = getSelectionInternal();
if (item == null)
return null;
SpecimenTypeWrapper source = (SpecimenTypeWrapper) item.o;
Assert.isNotNull(source);
return source;
}
@Override
protected BiobankTableSorter getComparator() {
return null;
}
@Override
protected List<Node> getNodeChildren(Node node) throws Exception {
if (node != null && node instanceof BiobankCollectionModel) {
BiobankCollectionModel model = (BiobankCollectionModel) node;
Object obj = model.o;
if (obj != null) {
SpecimenTypeWrapper spc = (SpecimenTypeWrapper) obj;
if (needReload.contains(spc)) {
spc.reload();
needReload.remove(spc);
}
return createNodes(node,
spc.getChildSpecimenTypeCollection(true));
}
}
return super.getNodeChildren(node);
}
}