Fixed: 1777191 - Interpreter is required even if remote debugging
authortoshihiro <toshihiro>
Wed, 22 Aug 2007 09:55:47 +0000 (09:55 +0000)
committertoshihiro <toshihiro>
Wed, 22 Aug 2007 09:55:47 +0000 (09:55 +0000)
net.sourceforge.phpeclipse.debug.ui/src/net/sourceforge/phpdt/internal/debug/ui/launcher/PHPEnvironmentTab.java
net.sourceforge.phpeclipse.launching/src/net/sourceforge/phpdt/internal/launching/PHPLaunchConfigurationDelegate.java

index 50d3212..cd7ae8f 100644 (file)
@@ -606,9 +606,7 @@ public class PHPEnvironmentTab extends AbstractLaunchConfigurationTab {
                } catch (CoreException ce) {
                        fRemoteDebugCheckBox.setSelection(DEFAULT_REMOTE_DEBUG);
                }
-               if (fRemoteDebugCheckBox.getSelection()) {
-                       tabFolder.setSelection(0);
-               }
+               tabFolder.setSelection(fRemoteDebugCheckBox.getSelection() ? 0 : 1);
                try {
                        fRemoteDebugTranslate.setSelection(configuration.getAttribute(
                                        PHPLaunchConfigurationAttribute.REMOTE_DEBUG_TRANSLATE,
@@ -727,8 +725,16 @@ public class PHPEnvironmentTab extends AbstractLaunchConfigurationTab {
                } catch (CoreException e) {
                        log(e);
                }
-               if (interpreterName != null && !interpreterName.equals(""))
+               if (interpreterName != null && !interpreterName.equals("")) {
                        interpreterCombo.select(interpreterCombo.indexOf(interpreterName));
+               }
+               if (interpreterCombo.getSelectionIndex() < 0) {
+                       // previous definition had been deleted
+                       ((ILaunchConfigurationWorkingCopy) configuration).setAttribute(
+                                       PHPLaunchConfigurationAttribute.SELECTED_INTERPRETER, "");
+                       setErrorMessage(PHPDebugUiMessages
+                                       .getString("LaunchConfigurationTab.PHPEnvironment.interpreter_not_selected_error_message"));
+               }
        }
 
        protected void initializeInterpreterCombo(Combo interpreterCombo) {
@@ -829,12 +835,15 @@ public class PHPEnvironmentTab extends AbstractLaunchConfigurationTab {
 
        public boolean isValid(ILaunchConfiguration launchConfig) {
                try {
-                       String selectedInterpreter = launchConfig.getAttribute(
-                                       PHPLaunchConfigurationAttribute.SELECTED_INTERPRETER, "");
-                       if (selectedInterpreter.length() == 0) {
-                               setErrorMessage(PHPDebugUiMessages
-                                               .getString("LaunchConfigurationTab.PHPEnvironment.interpreter_not_selected_error_message"));
-                               return false;
+                       if (launchConfig.getAttribute(
+                                       PHPLaunchConfigurationAttribute.SELECTED_INTERPRETER, "")
+                                       .equals("")) {
+                               if (!launchConfig.getAttribute(
+                                               PHPLaunchConfigurationAttribute.REMOTE_DEBUG, false)) {
+                                       setErrorMessage(PHPDebugUiMessages
+                                                       .getString("LaunchConfigurationTab.PHPEnvironment.interpreter_not_selected_error_message"));
+                                       return false;
+                               }
                        }
                } catch (CoreException e) {
                        log(e);
index d4c0680..1a7973f 100644 (file)
@@ -53,11 +53,19 @@ public class PHPLaunchConfigurationDelegate extends LaunchConfigurationDelegate
         */
        public void launch(ILaunchConfiguration configuration, String mode,
                        ILaunch launch, IProgressMonitor monitor) throws CoreException {
-               if (PHPRuntime.getDefault().getSelectedInterpreter() == null) {
-                       String pid = PHPLaunchingPlugin.PLUGIN_ID;
-                       String msg = "You must define an interpreter before running PHP.";
-                       IStatus s = new Status(IStatus.ERROR, pid, IStatus.OK, msg, null);
-                       throw new CoreException(s);
+               //if (PHPRuntime.getDefault().getSelectedInterpreter() == null) {
+               if (configuration.getAttribute(
+                               PHPLaunchConfigurationAttribute.SELECTED_INTERPRETER, "")
+                               .equals("")) {
+                       if (!configuration.getAttribute(
+                                       PHPLaunchConfigurationAttribute.REMOTE_DEBUG, false)
+                                       && mode.equals("debug") || mode.equals("run")) {
+                               String pid = PHPLaunchingPlugin.PLUGIN_ID;
+                               String msg = "You must define an interpreter before running PHP.";
+                               IStatus s = new Status(IStatus.ERROR, pid, IStatus.OK, msg,
+                                               null);
+                               throw new CoreException(s);
+                       }
                }
 
                InterpreterRunnerConfiguration conf = new InterpreterRunnerConfiguration(