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

diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/actions/PHPStartApacheAction.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/actions/PHPStartApacheAction.java
index 7f69883..5d47f96 100644
--- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/actions/PHPStartApacheAction.java
+++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/actions/PHPStartApacheAction.java
@@ -6,57 +6,89 @@ which accompanies this distribution, and is available at
 http://www.eclipse.org/legal/cpl-v10.html
 
 Contributors:
-    IBM Corporation - Initial implementation
-    Klaus Hartlage - www.eclipseproject.de
+		IBM Corporation - Initial implementation
+		www.phpeclipse.de
 **********************************************************************/
 package net.sourceforge.phpeclipse.actions;
 
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStreamReader;
 import java.text.MessageFormat;
 
+import net.sourceforge.phpdt.externaltools.launchConfigurations.ExternalToolsUtil;
 import net.sourceforge.phpeclipse.PHPeclipsePlugin;
+import net.sourceforge.phpeclipse.ui.WebUI;
+import net.sourceforge.phpeclipse.views.PHPConsole;
+
 import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.jface.preference.IPreferenceStore;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.ui.IWorkbenchWindow;
 import org.eclipse.ui.IWorkbenchWindowActionDelegate;
 
 public class PHPStartApacheAction implements IWorkbenchWindowActionDelegate {
-	protected IWorkbenchWindow activeWindow = null;
-
-	public void run(IAction action) {
-		final IPreferenceStore store = PHPeclipsePlugin.getDefault().getPreferenceStore();
-		String documentRoot = store.getString(PHPeclipsePlugin.DOCUMENTROOT_PREF);
-		// replace backslash with slash in the DocumentRoot under Windows
-		documentRoot = documentRoot.replace('\\', '/');
-		String[] arguments = { documentRoot };
-		MessageFormat form = new MessageFormat(store.getString(PHPeclipsePlugin.APACHE_START_PREF));
-		execute(form.format(arguments));
-	}
-
-	public void execute(String command) {
-//		MessageDialog.openInformation(activeWindow.getShell(), "Exec command: ", command);
-		try {
-			Runtime runtime = Runtime.getRuntime();
-			//	Process process = runtime.exec(new String[] { "c:\\apache\\apache.exe" });
-			Process process = runtime.exec(command);
-		} catch (IOException e) {
-			MessageDialog.openInformation(activeWindow.getShell(), "IOException: ", e.getMessage());
-		}
-	}
-
-	public void selectionChanged(IAction action, ISelection selection) {
-
-	}
-
-	public void init(IWorkbenchWindow window) {
-		this.activeWindow = window;
-	}
-
-	public void dispose() {
-
-	}
+  protected IWorkbenchWindow activeWindow = null;
+
+  public void run(IAction action) {
+    final IPreferenceStore store =
+      PHPeclipsePlugin.getDefault().getPreferenceStore();
+    String documentRoot = store.getString(WebUI.PHP_DOCUMENTROOT_PREF);
+    // replace backslash with slash in the DocumentRoot under Windows
+    documentRoot = documentRoot.replace('\\', '/');
+    String[] arguments = { documentRoot };
+    MessageFormat form =
+      new MessageFormat(store.getString(PHPeclipsePlugin.APACHE_START_PREF));
+    execute(
+      "apache_start",
+      store.getString(PHPeclipsePlugin.APACHE_RUN_PREF),
+      form.format(arguments),
+      store.getBoolean(PHPeclipsePlugin.APACHE_START_BACKGROUND));
+  }
+
+  /**
+  	 * Executes an external progam and saves the LaunchConfiguration under external tools 
+  	 * @param command external tools command name
+  	 * @param executable executable path i.e.c:\apache\apache.exe
+  	 * @param arguments arguments for this configuration
+  	 * @param background run this configuration in background mode
+  	 */
+  public static void execute(
+    String command,
+    String executable,
+    String arguments,
+    boolean background) {
+    PHPConsole console = PHPConsole.getInstance();
+    String consoleMessage;
+    if (background) {
+      consoleMessage =
+        "run in background mode-"
+          + command
+          + ": "
+          + executable
+          + " "
+          + arguments;
+    } else {
+      consoleMessage =
+        "run in foreground mode-"
+          + command
+          + ": "
+          + executable
+          + " "
+          + arguments;
+    }
+    console.write(consoleMessage + "\n");
+
+    ExternalToolsUtil.execute(command, executable, arguments, background);
+  }
+  
+  public void selectionChanged(IAction action, ISelection selection) {
+
+  }
+
+  public void init(IWorkbenchWindow window) {
+    this.activeWindow = window;
+  }
+
+  public void dispose() {
+
+  }
+
 }