package name.graf.emanuel.testfileeditor.ui; import org.eclipse.jface.viewers.*; import java.util.*; import org.eclipse.swt.widgets.*; public class OutlineTreeViewer extends TreeViewer { private Vector<Integer> expanded; public OutlineTreeViewer(final Composite parent) { super(parent); this.expanded = new Vector<Integer>(); } public OutlineTreeViewer(final Composite parent, final int style) { super(parent, style); this.expanded = new Vector<Integer>(); } public OutlineTreeViewer(final Tree tree) { super(tree); this.expanded = new Vector<Integer>(); } public void saveExpandedState() { final Object[] exo = this.getExpandedElements(); this.expanded.clear(); Object[] array; for (int length = (array = exo).length, i = 0; i < length; ++i) { final Object object = array[i]; this.expanded.add(object.hashCode()); } } public void loadExpandedState() { this.expandToLevel(2); final Object[] exp = this.getExpandedElements(); Object[] array; for (int length = (array = exp).length, i = 0; i < length; ++i) { final Object object = array[i]; if (this.isExpandable(object) && this.expanded.contains(object.hashCode())) { this.setExpandedState(object, true); this.expandPath(object); } else { this.setExpandedState(object, false); } } } private void expandPath(final Object root) { final Object[] childs = this.getRawChildren(root); Object[] array; for (int length = (array = childs).length, i = 0; i < length; ++i) { final Object object = array[i]; if (this.isExpandable(object) && this.expanded.contains(object.hashCode())) { this.setExpandedState(object, true); this.expandPath(object); } else { this.setExpandedState(object, false); } } } public int getAutoExpandLevel() { return 2; } }