View Javadoc

1   package junit.swingui;
2   
3   import java.util.Vector;
4   
5   import javax.swing.*;
6   import javax.swing.event.*;
7   import javax.swing.tree.TreePath;
8   import junit.framework.*;
9   
10  /***
11   * A hierarchical view of a test run.
12   * The contents of a test suite is shown
13   * as a tree.
14   */
15  public class TestHierarchyRunView implements TestRunView {
16  	TestSuitePanel fTreeBrowser;
17  	TestRunContext fTestContext;
18  	
19  	public TestHierarchyRunView(TestRunContext context) {
20  		fTestContext= context;
21  		fTreeBrowser= new TestSuitePanel();
22  		fTreeBrowser.getTree().addTreeSelectionListener(
23  			new TreeSelectionListener() {
24  				public void valueChanged(TreeSelectionEvent e) {
25  					testSelected();
26  				}
27  			}
28  		);
29  	}
30  	
31  	public void addTab(JTabbedPane pane) { 
32  		Icon treeIcon= TestRunner.getIconResource(getClass(), "icons/hierarchy.gif");
33  		pane.addTab("Test Hierarchy", treeIcon, fTreeBrowser, "The test hierarchy");
34  	}
35  	
36  	public Test getSelectedTest() {
37  		return fTreeBrowser.getSelectedTest();
38  	}
39  	
40  	public void activate() {
41  		testSelected();
42  	}
43  	
44  	public void revealFailure(Test failure) {
45  		JTree tree= fTreeBrowser.getTree();
46  		TestTreeModel model= (TestTreeModel)tree.getModel();
47  		Vector vpath= new Vector();
48  		int index= model.findTest(failure, (Test)model.getRoot(), vpath);
49  		if (index >= 0) {
50  			Object[] path= new Object[vpath.size()+1];
51  			vpath.copyInto(path);
52  			Object last= path[vpath.size()-1];
53  			path[vpath.size()]= model.getChild(last, index);
54  			TreePath selectionPath= new TreePath(path);
55  			tree.setSelectionPath(selectionPath);
56  			tree.makeVisible(selectionPath);
57  		}
58  	}
59  	
60  	public void aboutToStart(Test suite, TestResult result) {
61  		fTreeBrowser.showTestTree(suite);
62  		result.addListener(fTreeBrowser);
63  	}
64  
65  	public void runFinished(Test suite, TestResult result) {
66  		result.removeListener(fTreeBrowser);
67  	}
68  
69  	protected void testSelected() {
70  		fTestContext.handleTestSelected(getSelectedTest());
71  	}
72  }