CounterPanel.java revision 58a8b0aba2dec5695628a2bf25a3fae42c2c3533
1package junit.swingui;
2
3import java.awt.Component;
4import java.awt.GridBagConstraints;
5import java.awt.GridBagLayout;
6import java.awt.Insets;
7
8import javax.swing.BorderFactory;
9import javax.swing.Icon;
10import javax.swing.JLabel;
11import javax.swing.JPanel;
12import javax.swing.JTextField;
13import javax.swing.SwingConstants;
14
15/**
16 * A panel with test run counters
17 */
18public class CounterPanel extends JPanel {
19	private JTextField fNumberOfErrors;
20	private JTextField fNumberOfFailures;
21	private JTextField fNumberOfRuns;
22	private Icon fFailureIcon= TestRunner.getIconResource(getClass(), "icons/failure.gif");
23	private Icon fErrorIcon= TestRunner.getIconResource(getClass(), "icons/error.gif");
24
25	private int fTotal;
26
27	public CounterPanel() {
28		super(new GridBagLayout());
29		fNumberOfErrors= createOutputField(5);
30		fNumberOfFailures= createOutputField(5);
31		fNumberOfRuns= createOutputField(9);
32
33      addToGrid(new JLabel("Runs:", SwingConstants.CENTER),
34          0, 0, 1, 1, 0.0, 0.0,
35          GridBagConstraints.CENTER, GridBagConstraints.NONE,
36          new Insets(0, 0, 0, 0));
37     addToGrid(fNumberOfRuns,
38          1, 0, 1, 1, 0.33, 0.0,
39          GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL,
40          new Insets(0, 8, 0, 0));
41
42     addToGrid(new JLabel("Errors:", fErrorIcon, SwingConstants.LEFT),
43          2, 0, 1, 1, 0.0, 0.0,
44          GridBagConstraints.CENTER, GridBagConstraints.NONE,
45          new Insets(0, 8, 0, 0));
46      addToGrid(fNumberOfErrors,
47          3, 0, 1, 1, 0.33, 0.0,
48          GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL,
49          new Insets(0, 8, 0, 0));
50
51      addToGrid(new JLabel("Failures:", fFailureIcon, SwingConstants.LEFT),
52          4, 0, 1, 1, 0.0, 0.0,
53          GridBagConstraints.CENTER, GridBagConstraints.NONE,
54          new Insets(0, 8, 0, 0));
55      addToGrid(fNumberOfFailures,
56          5, 0, 1, 1, 0.33, 0.0,
57          GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL,
58          new Insets(0, 8, 0, 0));
59	}
60
61	private JTextField createOutputField(int width) {
62		JTextField field= new JTextField("0", width);
63		// force a fixed layout to avoid accidental hiding on relayout
64		field.setMinimumSize(field.getPreferredSize());
65		field.setMaximumSize(field.getPreferredSize());
66		field.setHorizontalAlignment(SwingConstants.LEFT);
67		field.setFont(StatusLine.BOLD_FONT);
68		field.setEditable(false);
69		field.setBorder(BorderFactory.createEmptyBorder());
70		return field;
71	}
72
73	public void addToGrid(Component comp,
74	    	int gridx, int gridy, int gridwidth, int gridheight,
75			double weightx, double weighty,
76			int anchor, int fill,
77			Insets insets) {
78
79		GridBagConstraints constraints= new GridBagConstraints();
80		constraints.gridx= gridx;
81		constraints.gridy= gridy;
82		constraints.gridwidth= gridwidth;
83		constraints.gridheight= gridheight;
84		constraints.weightx= weightx;
85		constraints.weighty= weighty;
86		constraints.anchor= anchor;
87		constraints.fill= fill;
88		constraints.insets= insets;
89		add(comp, constraints);
90	}
91
92	public void reset() {
93		setLabelValue(fNumberOfErrors, 0);
94		setLabelValue(fNumberOfFailures, 0);
95		setLabelValue(fNumberOfRuns, 0);
96		fTotal= 0;
97	}
98
99	public void setTotal(int value) {
100		fTotal= value;
101	}
102
103	public void setRunValue(int value) {
104		fNumberOfRuns.setText(Integer.toString(value) + "/" + fTotal);
105	}
106
107	public void setErrorValue(int value) {
108		setLabelValue(fNumberOfErrors, value);
109	}
110
111	public void setFailureValue(int value) {
112		setLabelValue(fNumberOfFailures, value);
113	}
114
115	private void setLabelValue(JTextField label, int value) {
116		label.setText(Integer.toString(value));
117	}
118}