blob: 547bf99fe197b66ebb9707aeaa055ceccc690aec [file] [log] [blame]
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());
}
}