/*************************************************************************
 * @author Ali Echihabi (ali_echihabi@ieee.org, ali.echihabi@souss.ca)
 *
 * Plugin for PHP unit Testing.
 * www.phpeclipse.de
 * 
 *************************************************************************/


package net.sourceforge.phpeclipse.phpunit;

import net.sourceforge.phpeclipse.phpunit.testpool.TestPool;

import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FillLayout;
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.ProgressBar;


public class ProgressInfoComposite extends Composite {


	private Label labelRuns, labelRunsVal; // Runs: 12
	private Label labelErrors, labelErrorsImage, labelErrorsVal;
	private Label labelFailures, labelFailuresImage, labelFailuresVal;
	
		
	private ProgressBar progressBar;

	/**
	 * @param arg0
	 * @param arg1
	 */
	public ProgressInfoComposite(Composite parent) {
		
		super(parent, SWT.NONE);
		
		GridLayout gridLayout = new GridLayout();
		gridLayout.numColumns = 1;
		
		// set title and layout
		setLayout(gridLayout);
		

		// set the progress bar
		progressBar = new ProgressBar(this, SWT.HORIZONTAL);
		progressBar.setLayoutData(
			new GridData(GridData.GRAB_HORIZONTAL | GridData.FILL_HORIZONTAL));
		progressBar.setMinimum(0);
			

		Composite labelsComposite =
			new Composite(this, SWT.NONE);
		
		labelsComposite.setLayoutData(
			new GridData(GridData.GRAB_HORIZONTAL | GridData.FILL_HORIZONTAL));

		labelsComposite.setLayout(new FillLayout(SWT.HORIZONTAL));

		labelRuns = new Label(labelsComposite, SWT.NONE);
		labelRuns.setText("Runs: ");
		labelRunsVal = new Label(labelsComposite, SWT.NONE);
		labelRunsVal.setText("0 / 0");

		labelFailuresImage = new Label(labelsComposite, SWT.NONE);
		labelFailuresImage.setImage(PHPUnitImages.DESC_FAILURE.createImage());
		labelFailures = new Label(labelsComposite, SWT.NONE);
		labelFailures.setText("Failures: ");
		labelFailuresVal = new Label(labelsComposite, SWT.NONE);
		labelFailuresVal.setText("0");


		labelErrorsImage = new Label(labelsComposite, SWT.NONE);
		labelErrorsImage.setImage(PHPUnitImages.DESC_ERROR.createImage());
		labelErrors = new Label(labelsComposite, SWT.NONE);
		labelErrors.setText("Errors: ");
		labelErrorsVal = new Label(labelsComposite, SWT.NONE);
		labelErrorsVal.setText("0");		
	}

	public void resetInfo() {
	
		labelErrorsVal.setText("0");
		labelFailuresVal.setText("0");
		labelRunsVal.setText("0 / 0");
		progressBar.setSelection(0);	
	
	}

	public void updateInfo(TestPool testPool) {
		
		int numTestsOverall = testPool.getNumTestsOverall();
		int numTestsRun = testPool.getNumTestsRun();
		
		//update progress bar
		progressBar.setMaximum(numTestsOverall);
		progressBar.setSelection(numTestsRun);
	
	
		//update labels
		labelRunsVal.setText(numTestsRun + " / " + numTestsOverall);
		labelFailuresVal.setText("" + testPool.getNumFailures());
		labelErrorsVal.setText("" + testPool.getNumErrors());
		
		//TODO: change Failures label to red if some exist.
		
		
		
	}

}