Created a separated 'externaltools' plugin
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpdt / externaltools / internal / program / launchConfigurations / ProgramLaunchDelegate.java
diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/externaltools/internal/program/launchConfigurations/ProgramLaunchDelegate.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/externaltools/internal/program/launchConfigurations/ProgramLaunchDelegate.java
deleted file mode 100644 (file)
index 7df974e..0000000
+++ /dev/null
@@ -1,138 +0,0 @@
-package net.sourceforge.phpdt.externaltools.internal.program.launchConfigurations;
-
-/**********************************************************************
-Copyright (c) 2002 IBM Corp. and others. All rights reserved.
-This file is made available under the terms of the Common Public License v1.0
-which accompanies this distribution, and is available at
-http://www.eclipse.org/legal/cpl-v10.html
-Contributors:
-**********************************************************************/
-
-import java.io.File;
-
-import net.sourceforge.phpdt.externaltools.launchConfigurations.ExternalToolsUtil;
-import net.sourceforge.phpdt.externaltools.variable.ExpandVariableContext;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.debug.core.ILaunch;
-import org.eclipse.debug.core.ILaunchConfiguration;
-import org.eclipse.debug.core.model.ILaunchConfigurationDelegate;
-import org.eclipse.debug.core.model.IProcess;
-
-/**
- * Launch delegate for a program.
- */
-public class ProgramLaunchDelegate implements ILaunchConfigurationDelegate {
-
-       /**
-        * Constructor for ProgramLaunchDelegate.
-        */
-       public ProgramLaunchDelegate() {
-               super();
-       }
-
-       /**
-        * @see org.eclipse.debug.core.model.ILaunchConfigurationDelegate#launch(org.eclipse.debug.core.ILaunchConfiguration, java.lang.String, org.eclipse.debug.core.ILaunch, org.eclipse.core.runtime.IProgressMonitor)
-        */
-       public void launch(ILaunchConfiguration configuration, String mode, ILaunch launch, IProgressMonitor monitor) throws CoreException {
-               
-               if (monitor.isCanceled()) {
-                       return;
-               }
-               
-               // get variable context
-               ExpandVariableContext resourceContext = ExternalToolsUtil.getVariableContext();
-
-               if (monitor.isCanceled()) {
-                       return;
-               }
-               
-               // resolve location
-               IPath location = ExternalToolsUtil.getLocation(configuration, resourceContext);
-               
-               if (monitor.isCanceled()) {
-                       return;
-               }               
-               
-               // resolve working directory
-               IPath workingDirectory = ExternalToolsUtil.getWorkingDirectory(configuration, resourceContext);
-               
-               if (monitor.isCanceled()) {
-                       return;
-               }
-               
-               // resolve arguments
-               String[] arguments = ExternalToolsUtil.getArguments(configuration, resourceContext);
-               
-               if (monitor.isCanceled()) {
-                       return;
-               }
-               
-               int cmdLineLength = 1;
-               if (arguments != null) {
-                       cmdLineLength += arguments.length;
-               }
-               String[] cmdLine = new String[cmdLineLength];
-               cmdLine[0] = location.toOSString();
-               if (arguments != null) {
-                       System.arraycopy(arguments, 0, cmdLine, 1, arguments.length);
-               }
-               
-               File workingDir = null;
-               if (workingDirectory != null) {
-                       workingDir = workingDirectory.toFile();
-               }
-               
-               if (monitor.isCanceled()) {
-                       return;
-               }
-                               
-               Process p = DebugPlugin.exec(cmdLine, workingDir);
-               IProcess process = null;
-               if (p != null) {
-                       process = DebugPlugin.newProcess(launch, p, location.toOSString());
-               }
-               process.setAttribute(IProcess.ATTR_CMDLINE, renderCommandLine(cmdLine));
-               
-               if (ExternalToolsUtil.isBackground(configuration)) {
-                       // refresh resources after process finishes
-                       if (ExternalToolsUtil.getRefreshScope(configuration) != null) {
-                               BackgroundResourceRefresher refresher = new BackgroundResourceRefresher(configuration, process, resourceContext);
-                               refresher.startBackgroundRefresh();
-                       }                               
-               } else {
-                       // wait for process to exit
-                       while (!process.isTerminated()) {
-                               try {
-                                       if (monitor.isCanceled()) {
-                                               process.terminate();
-                                               break;
-                                       }
-                                       Thread.sleep(50);
-                               } catch (InterruptedException e) {
-                               }
-                       }
-                       
-                       // refresh resources
-                       ExternalToolsUtil.refreshResources(configuration, resourceContext, monitor);
-               }
-               
-       
-       }
-       
-       protected static String renderCommandLine(String[] commandLine) {
-               if (commandLine.length < 1)
-                       return ""; //$NON-NLS-1$
-               StringBuffer buf= new StringBuffer(commandLine[0]);
-               for (int i= 1; i < commandLine.length; i++) {
-                       buf.append(' ');
-                       buf.append(commandLine[i]);
-               }       
-               return buf.toString();
-       }       
-       
-}