package edu.ucsd.arcum.ui.views; import java.util.ArrayList; import java.util.List; import org.eclipse.jface.viewers.TreeViewer; public class EntityTableFolder extends EntityTableElement implements Comparable<EntityTableFolder> { private String traitName; private boolean isSingleton; private boolean isStatic; private List<EntityTableElement> elements; public EntityTableFolder(String traitName, boolean isSingleton, boolean isStatic) { this.traitName = traitName; this.isSingleton = isSingleton; this.isStatic = isStatic; this.elements = new ArrayList<EntityTableElement>(); } public String getTraitName() { return traitName; } // Lexically compares: // * singletons before non-singletons // * non-statics before statics // * trait names alphabetically @Override public int compareTo(EntityTableFolder that) { if (this.isSingleton != that.isSingleton) { return (this.isSingleton) ? -1 : 1; } if (this.isStatic != that.isStatic) { return (this.isStatic) ? 1 : -1; } return traitName.compareTo(that.traitName); } @Override public boolean hasChildren() { return elements.size() > 0; } @Override public Object[] getChildren() { return elements.toArray(); } public void addElements(List<? extends EntityTableElement> elements) { this.elements.addAll(elements); } public void addElement(EntityTableElement element) { this.elements.add(element); } @Override public String getColumnText(int columnIndex) { switch (columnIndex) { case 0: return getTraitName(); case 1: if (elements.size() == 1) { return String.format("%d fragment matched", elements.size()); } else { return String.format("%d fragments matched", elements.size()); } default: return ""; } } @Override public void handleDoubleClick(TreeViewer treeViewer) { boolean expanded = treeViewer.getExpandedState(this); treeViewer.setExpandedState(this, !expanded); } }