misc
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpeclipse / actions / PHPStartApacheAction.java
index 997768b..72e579e 100644 (file)
@@ -6,15 +6,14 @@ 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
+               Klaus Hartlage - www.eclipseproject.de
 **********************************************************************/
 package net.sourceforge.phpeclipse.actions;
 
-import java.io.IOException;
-import java.io.InputStream;
 import java.text.MessageFormat;
 
+import net.sourceforge.phpdt.externaltools.launchConfigurations.ExternalToolsUtil;
 import net.sourceforge.phpeclipse.PHPeclipsePlugin;
 import net.sourceforge.phpeclipse.views.PHPConsole;
 
@@ -28,43 +27,57 @@ public class PHPStartApacheAction implements IWorkbenchWindowActionDelegate {
   protected IWorkbenchWindow activeWindow = null;
 
   public void run(IAction action) {
-    final IPreferenceStore store = PHPeclipsePlugin.getDefault().getPreferenceStore();
+    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), "Start Apache: ");
+    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));
   }
 
-  public static String execute(String command, String consoleMessage) {
-    //         MessageDialog.openInformation(activeWindow.getShell(), "Exec command: ", command);
-    try {
-      PHPConsole.write(consoleMessage+command+"\n");
-      Runtime runtime = Runtime.getRuntime();
-
-          // runs the command
-      Process p = runtime.exec(command);
-
-      // gets the input stream to have the post-compile-time information
-      InputStream stream = p.getInputStream();
-
-      // get the string from Stream
-      String consoleOutput = PHPConsole.getStringFromStream(stream);
-
-      // prints out the information
-      PHPConsole.write(consoleOutput);
-      return consoleOutput;
-
-    } catch (IOException e) {
-     
-      System.err.println("Problem");
-      e.printStackTrace();
-
+  /**
+        * 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;
     }
-    return "";
-  }
+    console.write(consoleMessage + "\n");
 
+    ExternalToolsUtil.execute(command, executable, arguments, background);
+  }
+  
   public void selectionChanged(IAction action, ISelection selection) {
 
   }
@@ -76,4 +89,5 @@ public class PHPStartApacheAction implements IWorkbenchWindowActionDelegate {
   public void dispose() {
 
   }
+
 }