package org.testng.eclipse.ui;
import org.testng.eclipse.TestNGPlugin;
import org.eclipse.jface.layout.GridLayoutFactory;
import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CLabel;
import org.eclipse.swt.events.DisposeEvent;
import org.eclipse.swt.events.DisposeListener;
import org.eclipse.swt.graphics.Color;
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;
/**
* A panel presenting report info:
* 1st row: suite counters, test counters, method counters
* 2nd row: passed, failed, skipped and successPercentageFailed counters
* <P/>
* Original idea from org.eclipse.jdt.internal.junit.ui.CounterPanel.
*
* @author <a href='mailto:the_mindstorm@evolva.ro'>Alexandru Popescu</a>
*/
public class CounterPanel extends Composite {
private static final String TOTAL_MESSAGE_FORMAT = "{0}/{1} ";
private final Image m_successIcon = TestNGPlugin.getImageDescriptor("ovr16/success.gif").createImage(); //$NON-NLS-1$
private final Image m_failureIcon = TestNGPlugin.getImageDescriptor("ovr16/failure.gif").createImage(); //$NON-NLS-1$
private final Image m_skipIcon = TestNGPlugin.getImageDescriptor("ovr16/skip.gif").createImage(); //$NON-NLS-1$
// private final Image m_failPercentIcon = TestNGPlugin.getImageDescriptor("ovr16/failureOnPercentage.gif").createImage(); //$NON-NLS-1$
// protected Text m_suiteCountText;
// protected Text m_testCountText;
// protected Text m_methodCountText;
protected Text m_passedText;
protected CLabel m_passedLabel;
protected Text m_skippedText;
protected CLabel m_skippedLabel;
protected Text m_failedText;
protected CLabel m_failedLabel;
// protected Text m_successPercentageFailedText;
protected int m_suiteTotalCount;
protected int m_suiteCount = 0;
protected int m_testTotalCount;
protected int m_testCount = 0;
protected int m_methodTotalCount;
protected int m_methodCount = 0;
public CounterPanel(Composite parent) {
super(parent, SWT.NONE);
GridLayoutFactory.swtDefaults().margins(0, 0).spacing(0, 0).applyTo(this);
createReportUpperRow();
addDisposeListener(new DisposeListener() {
public void widgetDisposed(DisposeEvent e) {
disposeIcons();
}
});
}
private void disposeIcons() {
m_successIcon.dispose();
m_failureIcon.dispose();
m_skipIcon.dispose();
// m_failPercentIcon.dispose();
}
private void createReportUpperRow() {
Composite upperRow = new Composite(this, SWT.NONE);
GridLayout gridLayout = new GridLayout();
gridLayout.numColumns = 3;
gridLayout.makeColumnsEqualWidth = true;
gridLayout.marginWidth = 0;
gridLayout.verticalSpacing= 0;
// gridLayout.horizontalSpacing= 5;
upperRow.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
upperRow.setLayout(gridLayout);
Color backgroundColor = getDisplay().getSystemColor(SWT.COLOR_WIDGET_BACKGROUND);
// m_suiteCountText = createLabel(upperRow, "Suites:", null, "0/0 ", backgroundColor);
// m_testCountText = createLabel(upperRow, "Tests:", null, "0/0 ", backgroundColor);
// m_methodCountText = createLabel(upperRow, "Methods:", null, "0/0 ", backgroundColor);
// m_passedText = createLabel(upperRow, "Passed:", m_successIcon, " 0 ", backgroundColor); //$NON-NLS-1$ //$NON-NLS-2$
// m_failedText = createLabel(upperRow, "Failed:", m_failureIcon, " 0 ", backgroundColor); //$NON-NLS-1$ //$NON-NLS-2$
// m_skippedText = createLabel(upperRow, "Skipped:", m_skipIcon, " 0 ", backgroundColor); //$NON-NLS-1$ //$NON-NLS-2$
m_passedLabel = createLabel(upperRow, "Passed: 0", m_successIcon, " 0 ", backgroundColor); //$NON-NLS-1$ //$NON-NLS-2$
m_failedLabel = createLabel(upperRow, "Failed: 0", m_failureIcon, " 0 ", backgroundColor); //$NON-NLS-1$ //$NON-NLS-2$
m_skippedLabel = createLabel(upperRow, "Skipped: 0", m_skipIcon, " 0 ", backgroundColor); //$NON-NLS-1$ //$NON-NLS-2$
}
private Text createReportFor(Composite parent,
String labelText,
Color backColor,
String initialText) {
Composite cell = new Composite(parent, SWT.BORDER);
GridLayout gl = new GridLayout();
gl.numColumns = 2;
gl.makeColumnsEqualWidth = false;
gl.horizontalSpacing = 1;
cell.setLayout(gl);
cell.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
Label label = new Label(cell, SWT.NONE);
label.setText(labelText);
label.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_CENTER));
label.setFont(JFaceResources.getBannerFont());
Text text = new Text(cell, SWT.READ_ONLY);
text.setText(initialText);
text.setBackground(backColor);
text.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING | GridData.GRAB_HORIZONTAL));
return text;
}
/* private void createReportLowerRow() {
Composite lowerRow = new Composite(this, SWT.NONE);
GridLayout gridLayout = new GridLayout();
gridLayout.numColumns = 3;
gridLayout.makeColumnsEqualWidth = false;
gridLayout.marginWidth = 0;
gridLayout.verticalSpacing= 0;
gridLayout.horizontalSpacing= 5;
lowerRow.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
lowerRow.setLayout(gridLayout);
Color backgroundColor = getDisplay().getSystemColor(SWT.COLOR_WIDGET_BACKGROUND);
// m_passedText = createLabel(lowerRow, "Passed: 0", m_successIcon, "0", backgroundColor); //$NON-NLS-1$ //$NON-NLS-2$
// m_failedText = createLabel(lowerRow, "Failed: 0", m_failureIcon, "0", backgroundColor); //$NON-NLS-1$ //$NON-NLS-2$
// m_skippedText = createLabel(lowerRow, "Skipped: 0", m_skipIcon, "0", backgroundColor); //$NON-NLS-1$ //$NON-NLS-2$
// m_successPercentageFailedText = createLabel(lowerRow,
// "SPF:", //$NON-NLS-1$
// m_failPercentIcon,
// " 0 ", //$NON-NLS-1$
// backgroundColor);
}*/
private CLabel createLabel(Composite parent,
String name,
Image image,
String init,
Color backColor) {
// Label label = null;
// if(image != null) {
// label= new Label(parent, SWT.NONE);
// image.setBackground(label.getBackground());
// label.setImage(image);
// label.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING));
// }
CLabel label= new CLabel(parent, SWT.NONE);
if(null != image) {
label.setImage(image);
}
label.setText(name);
label.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING
| GridData.FILL_HORIZONTAL));
label.setFont(JFaceResources.getDialogFont());
// Text value = new Text(parent, SWT.READ_ONLY);
// value.setText(init);
// value.setBackground(backColor);
// value.setLayoutData(new GridData(GridData.FILL_HORIZONTAL
// | GridData.HORIZONTAL_ALIGN_BEGINNING));
//
// return value;
return label;
}
/**
* FIXME: too much redraw().
*/
public void reset() {
ppp("reset()");
m_suiteTotalCount = 0;
m_suiteCount = 0;
setSuiteTotalCount(0);
m_testTotalCount = 0;
m_testCount = 0;
setTestTotalCount(0);
m_methodTotalCount = 0;
m_methodCount = 0;
setMethodTotalCount(0);
setPassedCount(0);
setFailedCount(0);
setSkippedCount(0);
// setSuccessPercentageFailedCount(0);
redraw();
}
public void setSuiteTotalCount(int no) {
// m_suiteTotalCount = no;
// m_suiteCountText.setText(MessageFormat.format(TOTAL_MESSAGE_FORMAT,
// new Object[] {
// new Integer(m_suiteCount),
// new Integer(m_suiteTotalCount)
// }));
// m_suiteCountText.redraw();
// redraw();
}
public void setSuiteCount(int no) {
// m_suiteCount = no;
// m_suiteCountText.setText(MessageFormat.format(TOTAL_MESSAGE_FORMAT,
// new Object[] {
// new Integer(m_suiteCount),
// new Integer(m_suiteTotalCount)
// }));
// m_suiteCountText.redraw();
}
public void setTestTotalCount(int no) {
// m_testTotalCount = no;
// m_testCountText.setText(MessageFormat.format(TOTAL_MESSAGE_FORMAT,
// new Object[] {
// new Integer(m_testCount),
// new Integer(m_testTotalCount)
// }));
// m_testCountText.redraw();
// redraw();
}
public void setTestCount(int no) {
// m_testCount = no;
// m_testCountText.setText(MessageFormat.format(TOTAL_MESSAGE_FORMAT,
// new Object[] {
// new Integer(m_testCount),
// new Integer(m_testTotalCount)
// }));
// m_testCountText.redraw();
}
public void setMethodTotalCount(int no) {
// m_methodTotalCount = no;
// m_methodCountText.setText(MessageFormat.format(TOTAL_MESSAGE_FORMAT,
// new Object[] {
// new Integer(m_methodCount),
// new Integer(m_methodTotalCount)
// }));
// m_methodCountText.redraw();
// redraw();
}
public void setMethodCount(int no) {
// m_methodCount = no;
// m_methodCountText.setText(MessageFormat.format(TOTAL_MESSAGE_FORMAT,
// new Object[] {
// new Integer(m_methodCount),
// new Integer(m_methodTotalCount)
// }));
// m_methodCountText.redraw();
}
public void setPassedCount(int no) {
// m_passedText.setText(String.valueOf(no));
// m_passedText.redraw();
// redraw();
m_passedLabel.setText("Passed: " + no);
m_passedLabel.redraw();
}
public void setFailedCount(int no) {
// m_failedText.setText(String.valueOf(no));
// m_failedText.redraw();
// redraw();
m_failedLabel.setText("Failed: " + no);
m_failedLabel.redraw();
}
public void setSkippedCount(int no) {
// m_skippedText.setText(String.valueOf(no));
// m_skippedText.redraw();
// redraw();
m_skippedLabel.setText("Skipped: " + no);
m_skippedLabel.redraw();
}
/*public void setSuccessPercentageFailedCount(int no) {
m_successPercentageFailedText.setText(String.valueOf(no));
m_successPercentageFailedText.redraw();
redraw();
}*/
private static void ppp(Object msg) {
// System.out.println("[CounterPanel]:- " + msg);
}
}