Changes for the XDebugTab
[phpeclipse.git] / net.sourceforge.phpeclipse.xdebug.core / src / net / sourceforge / phpeclipse / xdebug / php / launching / PHPLaunchConfigurationDelegate.java
index 484f75a..be1286b 100644 (file)
@@ -52,42 +52,46 @@ public class PHPLaunchConfigurationDelegate extends LaunchConfigurationDelegate
                        phpInterpreter=XDebugCorePlugin.getDefault().getPreferenceStore().getString(IXDebugPreferenceConstants.PHP_INTERPRETER_PREFERENCE);
 
                File exe = new File(phpInterpreter);
+               // Just to get sure that the interpreter exists
                if (!exe.exists()) {
                        abort(MessageFormat.format("Specified PHP executable {0} does not exist. Check value of PHP-Interpreter.", new String[]{phpInterpreter}), null);
                }
                commandList.add(phpInterpreter);
                
-               // program name
+               // Project name
                String projectName = configuration.getAttribute(IXDebugConstants.ATTR_PHP_PROJECT, (String)null);
                IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName);
-
+//              Just to get sure that the project exists
                if (project == null) {
-                       abort("PHP-Script unspecified.", null);
+                       abort("Project does not exist.", null);
                }
                String fileName = configuration.getAttribute(IXDebugConstants.ATTR_PHP_FILE, (String)null);
 
-//             String program = project.getFile(fileName);
                IFile file = project.getFile(fileName);
-//             IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(program));
+               // Just to get sure that the script exists
                if (!file.exists()) {
                        abort(MessageFormat.format("PHP-Script {0} does not exist.", new String[] {file.getFullPath().toString()}), null);
                }
                
                commandList.add(file.getLocation().toOSString());
-//             Map nativeEnvVars = DebugPlugin.getDefault().getLaunchManager().getNativeEnvironment();
-               // Environment variables
                String[] envp=DebugPlugin.getDefault().getLaunchManager().getEnvironment(configuration);
-               //              Map envVars=configuration.getAttribute(ILaunchManager.ATTR_ENVIRONMENT_VARIABLES, nativeEnvVars);
-               int debugPort=XDebugCorePlugin.getDefault().getPreferenceStore().getInt(IXDebugPreferenceConstants.DEBUGPORT_PREFERENCE);
+
+               // Get de Debugport form the Launchconfiguration or from the preferences
+               int debugPort  = configuration.getAttribute(IXDebugConstants.ATTR_PHP_DEBUGPORT,-1);
+               boolean useDefaultPort= configuration.getAttribute(IXDebugConstants.ATTR_PHP_DEFAULT_DEBUGPORT, true);
+               if (useDefaultPort)
+                       debugPort=XDebugCorePlugin.getDefault().getPreferenceStore().getInt(IXDebugPreferenceConstants.DEBUGPORT_PREFERENCE);
                if (debugPort<1024)
                        debugPort=IXDebugPreferenceConstants.DEFAULT_DEBUGPORT;
-//             if (mode.equals(ILaunchManager.DEBUG_MODE)) {
-//                     nativeEnvVars.put("XDEBUG_CONFIG", "idekey=xdebug_test remote_enable=1");
-//             }
+               
                if (mode.equals(ILaunchManager.DEBUG_MODE)) {
-                       String[] env = new String[envp.length+1];
-                       for(int i=0;i<envp.length;i++)
-                               env[i+1]=envp[i];
+                       String[] env;
+                       if (envp!=null) {
+                               env = new String[envp.length+1];
+                               for(int i=0;i<envp.length;i++)
+                                       env[i+1]=envp[i];
+                       } else
+                               env = new String[1];
                        env[0]="XDEBUG_CONFIG=idekey=xdebug_test remote_enable=1";
                        envp=env;
                }