improved layout for view.
[phpeclipse.git] / net.sourceforge.phpeclipse.phpunit / src / net / sourceforge / phpeclipse / phpunit / PHPUnitView.java
index 341c218..1d146a3 100644 (file)
@@ -4,9 +4,14 @@ package net.sourceforge.phpeclipse.phpunit;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.MouseEvent;
 import org.eclipse.swt.events.MouseListener;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Group;
 import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.ProgressBar;
 import org.eclipse.swt.widgets.Text;
 import org.eclipse.ui.part.ViewPart;
 
@@ -67,25 +72,55 @@ public class PHPUnitView extends ViewPart {
                handler = new XMLReportHandler();
        }
        
+
+       
        public void createPartControl(Composite parent) {
                
-//             //viewer = new TreeViewer(parent);
-//             labelRuns = new Label(parent, SWT.WRAP);
-//             labelRuns.setText("Runs: ");
-//             labelRunsVal = new Label(parent, SWT.WRAP);
-//             labelRunsVal.setText("0 / 0");
-//             
-//             labelFailures = new Label(parent, SWT.WRAP);
-//             labelFailures.setText("Failures: ");
-//             labelFailuresVal = new Label(parent, SWT.WRAP);
-//             labelFailuresVal.setText("0");
-//             
-//             labelErrors = new Label(parent, SWT.WRAP);
-//             labelErrors.setText("Errors: ");
-//             labelErrorsVal = new Label(parent, SWT.WRAP);
-//             labelErrorsVal.setText("0");
-
-               reportArea = new Text(parent, SWT.MULTI | SWT.BORDER |
+               
+               //layout: 
+               FillLayout fillLayout = new FillLayout(SWT.VERTICAL);
+               parent.setLayout(fillLayout);
+               
+               Group progressInfoComposite = new Group(parent, SWT.SHADOW_ETCHED_IN);
+               Group resultsInfoComposite = new Group(parent, SWT.NONE);
+               
+               
+               //Build the progress info Composite             
+               progressInfoComposite.setText("Progress:");
+               GridLayout gridLayout = new GridLayout();
+               gridLayout.numColumns = 1;
+               
+               progressInfoComposite.setLayout(gridLayout);
+               
+               
+               ProgressBar progressBar = new ProgressBar(progressInfoComposite, SWT.HORIZONTAL);
+               progressBar.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL|GridData.FILL_HORIZONTAL));
+               
+               Composite labelsComposite = new Composite(progressInfoComposite, 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");
+               
+               labelFailures = new Label(labelsComposite, SWT.NONE);
+               labelFailures.setText("Failures: ");
+               labelFailuresVal = new Label(labelsComposite, SWT.NONE);
+               labelFailuresVal.setText("0");
+               
+               labelErrors = new Label(labelsComposite, SWT.NONE);
+               labelErrors.setText("Errors: ");
+               labelErrorsVal = new Label(labelsComposite, SWT.NONE);
+               labelErrorsVal.setText("0");
+
+               //Build the result info composite
+               resultsInfoComposite.setText("Results:");
+               resultsInfoComposite.setLayout(fillLayout);
+               
+               reportArea = new Text(resultsInfoComposite, SWT.MULTI | SWT.BORDER |
                SWT.WRAP | SWT.V_SCROLL | SWT.READ_ONLY);
                
                startButton = new Button(parent, SWT.CENTER);
@@ -111,8 +146,7 @@ public class PHPUnitView extends ViewPart {
                        
                        
                        }); // end add action listener.
-               
-               // TODO layout!
+
        }
 
        /* (non-Javadoc)
@@ -134,22 +168,22 @@ public class PHPUnitView extends ViewPart {
                
                
                //for now:
-               reportArea.append("test passed \n");
+               reportArea.append("test : " + testID + " passed \n");
        }
 
        public void markTestStarted(String testID) {
                
-               reportArea.append("test started \n");
+               reportArea.append("test started: " + testID + " \n");
        }
         
        public void createNewTest(String testName, String testID) {
          
-               reportArea.append("new test: " + testName + " - testID \n");    
+               reportArea.append("new test: " + testName + " - testID " + testID + " \n");     
        
        }
        
        public void markTestFail(String testID) {
-               reportArea.append("test failed \n");
+               reportArea.append("test "  + testID + " failed \n");
        }
        
        public void markTestingFinished() {
@@ -175,12 +209,15 @@ public class PHPUnitView extends ViewPart {
                
        }
        
+       /**
+        * 
+        */
        private void listenForReports() {
 
 
 
                ConnectionListener conListener = new ConnectionListener();
-               conListener.start();
+               conListener.start(this);
 
        } //end of method
        
@@ -188,22 +225,62 @@ public class PHPUnitView extends ViewPart {
         * handle this report: test passed, faile, end of all.
         * @param report
         */
-       private void handleReport(String report) {
-               
-               reportArea.append("msg: " + report + "\n");
-               
-               String event = report.substring(0, report.indexOf(" "));
-               
-               System.out.println(event);
+       public void handleReport(String report) {
 
+               //delegate to the XML report handler.           
+               //reportArea.append("msg: " + report + "\n");
                handler.handle(report, this);
 
        
                
        }
        
+       /**
+        * @param command
+        * @param testCount
+        * @param testID
+        */
        public void handleCommand(String command, String testCount, String testID) {
+
+               if (command.equals("testStarted")) {
+                               
+                       createNewTest("testName", testID);
+                       markTestStarted(testID);
+                               
+               } else if (command.equals("testFinished")) {
+                       
+                               
+                       // do nothing wait for verdict
+               } else if (command.equals("endAll")) {
+                               
+                       markTestingFinished();
+               }
+                                       
+               
+       }
+
+       /**
+        * @param currentTestID
+        * @param verdict
+        */
+       public void setTestVerdict(String currentTestID, String verdict) {
+
+               if( verdict.equals("passed")) 
+                       markTestPassed(currentTestID);
+               else
+                       markTestFail(currentTestID);
+
+
+       }
+
+       /**
+        * @param currentTestID
+        * @param exception
+        */
+       public void addTestException(String currentTestID, String exception) {
                
+               //TODO: decide how to show exceptions. don't show them for now.
+               //reportArea.append("   test " + currentTestID + " exception: " + exception + "\n");
                
        }