/**
* Copyright (c) 2005-2011 by Appcelerator, Inc. All Rights Reserved.
* Licensed under the terms of the Eclipse Public License (EPL).
* Please see the license.txt included with this distribution for details.
* Any modifications to this file must keep this entire header intact.
*/
package org.python.pydev.debug.pyunit;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
import org.python.pydev.debug.core.PydevDebugPlugin;
/**
* A panel with counters for the number of Runs, Errors and Failures.
*
* Copied from org.eclipse.jdt.internal.junit.ui.CounterPanel (but without totals)
*/
public class CounterPanel extends Composite {
public final Text fNumberOfErrors;
public final Text fNumberOfFailures;
public final Text fNumberOfRuns;
private final Image fErrorIcon;
private final Image fFailureIcon;
public CounterPanel(Composite parent) {
super(parent, SWT.WRAP);
//Note: don't dispose of icons in the cache
fErrorIcon = PydevDebugPlugin.getImageCache().get("icons/ovr16/error_ovr.gif"); //$NON-NLS-1$
fFailureIcon = PydevDebugPlugin.getImageCache().get("icons/ovr16/failed_ovr.gif"); //$NON-NLS-1$
GridLayout gridLayout = new GridLayout();
gridLayout.numColumns = 6;
gridLayout.makeColumnsEqualWidth = false;
gridLayout.marginWidth = 0;
setLayout(gridLayout);
fNumberOfRuns = createLabel("Runs: ", null, "0/0", "Test Run/Tests Collected"); //$NON-NLS-1$
fNumberOfErrors = createLabel("", fErrorIcon, "0", "Errors"); //$NON-NLS-1$
fNumberOfFailures = createLabel("", fFailureIcon, "0", "Failures"); //$NON-NLS-1$
}
private Text createLabel(String name, Image image, String init, String tooltip) {
Label label;
if (image != null) {
label = new Label(this, SWT.NONE);
if (image != null) {
image.setBackground(label.getBackground());
label.setImage(image);
}
label.setToolTipText(tooltip);
GridData gridData = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
gridData.minimumWidth = 14;
label.setLayoutData(gridData);
}
if (name.length() > 0) {
label = new Label(this, SWT.NONE);
label.setText(name);
GridData data = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
data.minimumWidth = 20;
label.setLayoutData(data);
}
//label.setFont(JFaceResources.getBannerFont());
Text value = new Text(this, SWT.READ_ONLY);
value.setToolTipText(tooltip);
value.setText(init);
// bug: 39661 Junit test counters do not repaint correctly [JUnit]
value.setBackground(getDisplay().getSystemColor(SWT.COLOR_WIDGET_BACKGROUND));
GridData data = new GridData(GridData.FILL_HORIZONTAL | GridData.HORIZONTAL_ALIGN_BEGINNING);
data.minimumWidth = 25;
value.setLayoutData(data);
return value;
}
public void reset() {
setErrorValue(0);
setFailureValue(0);
setRunValue(0, "0");
}
public void setRunValue(int value, String total) {
String runString = Integer.toString(value) + " / " + total;
fNumberOfRuns.setText(runString);
fNumberOfRuns.redraw();
redraw();
}
public void setErrorValue(int value) {
fNumberOfErrors.setText(Integer.toString(value));
redraw();
}
public void setFailureValue(int value) {
fNumberOfFailures.setText(Integer.toString(value));
redraw();
}
}