| package junit.swingui; |
| |
| import javax.swing.*; |
| import javax.swing.event.*; |
| import javax.swing.tree.TreePath; |
| import java.util.Vector; |
| |
| import junit.framework.*; |
| |
| /** |
| * A hierarchical view of a test run. |
| * The contents of a test suite is shown |
| * as a tree. |
| */ |
| 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()); |
| } |
| |
| } |