1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-08-09 17:25:38 +02:00

Bug 304384: Move logic to set default launch delegate to the tab of the DSF-GDB delegate. This is to allow the global preference for launch delegate not to be overridden unless DSF-GDB is also the global preference.

This commit is contained in:
Marc Khouzam 2010-05-14 02:18:31 +00:00
parent 845e51b0a5
commit eb382a9bee
2 changed files with 31 additions and 31 deletions

View file

@ -13,6 +13,8 @@
*******************************************************************************/
package org.eclipse.cdt.dsf.gdb.internal.ui.launching;
import java.util.HashSet;
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.model.IBinary;
import org.eclipse.cdt.core.model.ICElement;
@ -32,6 +34,8 @@ import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
import org.eclipse.debug.core.ILaunchDelegate;
import org.eclipse.debug.core.ILaunchManager;
import org.eclipse.debug.ui.DebugUITools;
import org.eclipse.debug.ui.IDebugUIConstants;
import org.eclipse.jface.dialogs.MessageDialog;
@ -512,6 +516,33 @@ public class CMainTab extends CAbstractMainTab {
* @see org.eclipse.debug.ui.ILaunchConfigurationTab#setDefaults(org.eclipse.debug.core.ILaunchConfigurationWorkingCopy)
*/
public void setDefaults(ILaunchConfigurationWorkingCopy config) {
// Workaround for bug 262840
try {
HashSet<String> set = new HashSet<String>();
set.add(ILaunchManager.DEBUG_MODE);
ILaunchDelegate preferredDelegate = config.getPreferredDelegate(set);
if (preferredDelegate == null) {
if (config.getType().getIdentifier().equals(ICDTLaunchConfigurationConstants.ID_LAUNCH_C_APP)) {
config.setPreferredLaunchDelegate(set, ICDTLaunchConfigurationConstants.PREFERRED_DEBUG_LOCAL_LAUNCH_DELEGATE);
} else if (config.getType().getIdentifier().equals(ICDTLaunchConfigurationConstants.ID_LAUNCH_C_ATTACH)) {
config.setPreferredLaunchDelegate(set, ICDTLaunchConfigurationConstants.PREFERRED_DEBUG_ATTACH_LAUNCH_DELEGATE);
} else if (config.getType().getIdentifier().equals(ICDTLaunchConfigurationConstants.ID_LAUNCH_C_POST_MORTEM)) {
config.setPreferredLaunchDelegate(set, ICDTLaunchConfigurationConstants.PREFERRED_DEBUG_POSTMORTEM_LAUNCH_DELEGATE);
}
}
} catch (CoreException e) {}
// We must also set the preferred delegate for Run mode, because this configuration
// can be used in Run mode.
try {
HashSet<String> set = new HashSet<String>();
set.add(ILaunchManager.RUN_MODE);
ILaunchDelegate preferredDelegate = config.getPreferredDelegate(set);
if (preferredDelegate == null) {
config.setPreferredLaunchDelegate(set, ICDTLaunchConfigurationConstants.PREFERRED_RUN_LAUNCH_DELEGATE);
}
} catch (CoreException e) {}
// We set empty attributes for project & program so that when one config is
// compared to another, the existence of empty attributes doesn't cause and
// incorrect result (the performApply() method can result in empty values

View file

@ -12,8 +12,6 @@
*******************************************************************************/
package org.eclipse.cdt.launch.ui;
import java.util.HashSet;
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.model.IBinary;
import org.eclipse.cdt.core.model.ICElement;
@ -34,8 +32,6 @@ import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
import org.eclipse.debug.core.ILaunchDelegate;
import org.eclipse.debug.core.ILaunchManager;
import org.eclipse.debug.ui.DebugUITools;
import org.eclipse.debug.ui.IDebugUIConstants;
import org.eclipse.jface.dialogs.MessageDialog;
@ -534,33 +530,6 @@ public class CMainTab extends CAbstractMainTab {
* @see org.eclipse.debug.ui.ILaunchConfigurationTab#setDefaults(org.eclipse.debug.core.ILaunchConfigurationWorkingCopy)
*/
public void setDefaults(ILaunchConfigurationWorkingCopy config) {
// Workaround for bug 262840
try {
HashSet<String> set = new HashSet<String>();
set.add(ILaunchManager.DEBUG_MODE);
ILaunchDelegate preferredDelegate = config.getPreferredDelegate(set);
if (preferredDelegate == null) {
if (config.getType().getIdentifier().equals(ICDTLaunchConfigurationConstants.ID_LAUNCH_C_APP)) {
config.setPreferredLaunchDelegate(set, ICDTLaunchConfigurationConstants.PREFERRED_DEBUG_LOCAL_LAUNCH_DELEGATE);
} else if (config.getType().getIdentifier().equals(ICDTLaunchConfigurationConstants.ID_LAUNCH_C_ATTACH)) {
config.setPreferredLaunchDelegate(set, ICDTLaunchConfigurationConstants.PREFERRED_DEBUG_ATTACH_LAUNCH_DELEGATE);
} else if (config.getType().getIdentifier().equals(ICDTLaunchConfigurationConstants.ID_LAUNCH_C_POST_MORTEM)) {
config.setPreferredLaunchDelegate(set, ICDTLaunchConfigurationConstants.PREFERRED_DEBUG_POSTMORTEM_LAUNCH_DELEGATE);
}
}
} catch (CoreException e) {}
// We must also set the preferred delegate for Run mode, because this configuration
// can be used in Run mode.
try {
HashSet<String> set = new HashSet<String>();
set.add(ILaunchManager.RUN_MODE);
ILaunchDelegate preferredDelegate = config.getPreferredDelegate(set);
if (preferredDelegate == null) {
config.setPreferredLaunchDelegate(set, ICDTLaunchConfigurationConstants.PREFERRED_RUN_LAUNCH_DELEGATE);
}
} catch (CoreException e) {}
// We set empty attributes for project & program so that when one config
// is