- package junit.swingui;
-
- import java.awt.*;
-
- import javax.swing.*;
- import javax.swing.event.*;
- import junit.framework.*;
- import junit.runner.BaseTestRunner;
-
-
- /**
- * A view presenting the test failures as a list.
- */
- public class FailureRunView implements TestRunView {
- JList fFailureList;
- TestRunContext fRunContext;
-
- /**
- * Renders TestFailures in a JList
- */
- static class FailureListCellRenderer extends DefaultListCellRenderer {
- private Icon fFailureIcon;
- private Icon fErrorIcon;
-
- FailureListCellRenderer() {
- super();
- loadIcons();
- }
-
- void loadIcons() {
- fFailureIcon= TestRunner.getIconResource(getClass(), "icons/failure.gif");
- fErrorIcon= TestRunner.getIconResource(getClass(), "icons/error.gif");
- }
-
- public Component getListCellRendererComponent(
- JList list, Object value, int modelIndex,
- boolean isSelected, boolean cellHasFocus) {
-
- Component c= super.getListCellRendererComponent(list, value, modelIndex, isSelected, cellHasFocus);
- TestFailure failure= (TestFailure)value;
- String text= failure.failedTest().toString();
- String msg= failure.exceptionMessage();
- if (msg != null)
- text+= ":" + BaseTestRunner.truncate(msg);
-
- if (failure.isFailure()) {
- if (fFailureIcon != null)
- setIcon(fFailureIcon);
- } else {
- if (fErrorIcon != null)
- setIcon(fErrorIcon);
- }
- setText(text);
- setToolTipText(text);
- return c;
- }
- }
-
- public FailureRunView(TestRunContext context) {
- fRunContext= context;
- fFailureList= new JList(fRunContext.getFailures());
- fFailureList.setFont(new Font("Dialog", Font.PLAIN, 12));
-
- fFailureList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
- fFailureList.setCellRenderer(new FailureListCellRenderer());
- fFailureList.setVisibleRowCount(5);
-
- fFailureList.addListSelectionListener(
- new ListSelectionListener() {
- public void valueChanged(ListSelectionEvent e) {
- testSelected();
- }
- }
- );
- }
-
- public Test getSelectedTest() {
- int index= fFailureList.getSelectedIndex();
- if (index == -1)
- return null;
-
- ListModel model= fFailureList.getModel();
- TestFailure failure= (TestFailure)model.getElementAt(index);
- return failure.failedTest();
- }
-
- public void activate() {
- testSelected();
- }
-
- public void addTab(JTabbedPane pane) {
- JScrollPane scrollPane= new JScrollPane(fFailureList, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
- Icon errorIcon= TestRunner.getIconResource(getClass(), "icons/error.gif");
- pane.addTab("Failures", errorIcon, scrollPane, "The list of failed tests");
- }
-
- public void revealFailure(Test failure) {
- fFailureList.setSelectedIndex(0);
- }
-
- public void aboutToStart(Test suite, TestResult result) {
- }
-
- public void runFinished(Test suite, TestResult result) {
- }
-
- protected void testSelected() {
- fRunContext.handleTestSelected(getSelectedTest());
- }
- }