X-Git-Url: http://git.phpeclipse.com

diff --git a/net.sourceforge.phpeclipse.phpunit/src/net/sourceforge/phpeclipse/phpunit/PHPUnitView.java b/net.sourceforge.phpeclipse.phpunit/src/net/sourceforge/phpeclipse/phpunit/PHPUnitView.java
index 94605d5..6510e34 100644
--- a/net.sourceforge.phpeclipse.phpunit/src/net/sourceforge/phpeclipse/phpunit/PHPUnitView.java
+++ b/net.sourceforge.phpeclipse.phpunit/src/net/sourceforge/phpeclipse/phpunit/PHPUnitView.java
@@ -1,7 +1,17 @@
 package net.sourceforge.phpeclipse.phpunit;
 
 
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.net.ServerSocket;
+import java.net.Socket;
+
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ControlEvent;
+import org.eclipse.swt.events.ControlListener;
+import org.eclipse.swt.events.MouseEvent;
+import org.eclipse.swt.events.MouseListener;
+import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Text;
@@ -54,6 +64,8 @@ public class PHPUnitView extends ViewPart {
 	
 	Text reportArea; // TODO: replace with Tree display like JUnit
 
+	Button startButton;
+
 	public PHPUnitView() {
 		
 	}
@@ -79,6 +91,30 @@ public class PHPUnitView extends ViewPart {
 		reportArea = new Text(parent, SWT.MULTI | SWT.BORDER |
 		SWT.WRAP | SWT.V_SCROLL | SWT.READ_ONLY);
 		
+		startButton = new Button(parent, SWT.CENTER);
+		startButton.setText("Start Tests");
+		startButton.addMouseListener( new MouseListener() {
+
+			public void mouseDoubleClick(MouseEvent arg0) {
+				// TODO Auto-generated method stub
+				
+			}
+
+			public void mouseDown(MouseEvent arg0) {
+				// TODO Auto-generated method stub
+				startTests();
+			}
+
+			public void mouseUp(MouseEvent arg0) {
+				// TODO Auto-generated method stub
+				
+			}
+
+
+			
+			
+			}); // end add action listener.
+		
 		// TODO layout!
 	}
 
@@ -86,7 +122,7 @@ public class PHPUnitView extends ViewPart {
 	 * @see org.eclipse.ui.IWorkbenchPart#setFocus()
 	 */
 	public void setFocus() {
-		markTestPass("hello");
+		//markTestPass("hello");
 	}
 
 	/**
@@ -107,7 +143,73 @@ public class PHPUnitView extends ViewPart {
 	
 	
 	
+	// action to start tests:
+	private void startTests() {
+		
+		// preparation:
+		// take the full test suite (could containt other test suites).
+		// create temp php file that starts that suite and uses socketTestReport 
+		// as a test result reporter.
+		// add listener: localhost , port 13579
+		// start listening at port.
+		
+		reportArea.append("Tests started \n");
+		listenForReports();
+		
+		
+		
+	}
+	
+	private void listenForReports() {
+		
+		ServerSocket sSocket = null;
+		Socket serviceSocket = null;	
+		
+		try {
+			
+			reportArea.append("listening at port 12345");
+			
+			sSocket = new ServerSocket(12345);
+			
+			// accept connection from test reporter.
+			serviceSocket = sSocket.accept();
+	
+		
+			InputStreamReader reader = new InputStreamReader(serviceSocket.getInputStream());			
+			BufferedReader in = new BufferedReader(reader);
+			String report = null;
+			
+			// keep listening until the 
+			while ( (report = in.readLine()) != null && (report != "end_all_tests") ) { 			
+				
+				handleReport(report);			
+			}			
+			
+			reportArea.append("Finished!");
+			
+			sSocket.close();
+			serviceSocket.close();		
+			
+		} catch (Exception e) {
+			
+			e.printStackTrace();
+			
+		} 
+		
+		
+				
+		
+	}
 	
+	/**
+	 * handle this report: test passed, faile, end of all.
+	 * @param report
+	 */
+	private void handleReport(String report) {
+		
+		reportArea.append("msg: " + report + "\n");
+		
+	}
 	
 
 }