- package junit.swingui;
-
- import java.util.Vector;
-
- import javax.swing.*;
- import javax.swing.event.*;
- import javax.swing.tree.TreePath;
- import junit.framework.*;
-
- /**
- * A hierarchical view of a test run.
- * The contents of a test suite is shown
- * as a tree.
- */
- public class TestHierarchyRunView implements TestRunView {
- TestSuitePanel fTreeBrowser;
- TestRunContext fTestContext;
-
- public TestHierarchyRunView(TestRunContext context) {
- fTestContext= context;
- fTreeBrowser= new TestSuitePanel();
- fTreeBrowser.getTree().addTreeSelectionListener(
- new TreeSelectionListener() {
- public void valueChanged(TreeSelectionEvent e) {
- testSelected();
- }
- }
- );
- }
-
- public void addTab(JTabbedPane pane) {
- Icon treeIcon= TestRunner.getIconResource(getClass(), "icons/hierarchy.gif");
- pane.addTab("Test Hierarchy", treeIcon, fTreeBrowser, "The test hierarchy");
- }
-
- public Test getSelectedTest() {
- return fTreeBrowser.getSelectedTest();
- }
-
- public void activate() {
- testSelected();
- }
-
- public void revealFailure(Test failure) {
- JTree tree= fTreeBrowser.getTree();
- TestTreeModel model= (TestTreeModel)tree.getModel();
- Vector vpath= new Vector();
- int index= model.findTest(failure, (Test)model.getRoot(), vpath);
- if (index >= 0) {
- Object[] path= new Object[vpath.size()+1];
- vpath.copyInto(path);
- Object last= path[vpath.size()-1];
- path[vpath.size()]= model.getChild(last, index);
- TreePath selectionPath= new TreePath(path);
- tree.setSelectionPath(selectionPath);
- tree.makeVisible(selectionPath);
- }
- }
-
- public void aboutToStart(Test suite, TestResult result) {
- fTreeBrowser.showTestTree(suite);
- result.addListener(fTreeBrowser);
- }
-
- public void runFinished(Test suite, TestResult result) {
- result.removeListener(fTreeBrowser);
- }
-
- protected void testSelected() {
- fTestContext.handleTestSelected(getSelectedTest());
- }
- }