From 947b25009ae9506e5c8c4f9b49b0b2f16ad5e3a4 Mon Sep 17 00:00:00 2001 From: Jonathan Williams Date: Mon, 21 Jul 2014 10:03:15 -0400 Subject: [PATCH] Bug 440015 - Fix NPE On Launch Configuration Edit Prompt user with error dialog when they attempt to edit a launch configuration with no active target selected. Change-Id: I3b0a649312259beba73437223e5b96e99396d31e Signed-off-by: Jonathan Williams Reviewed-on: https://git.eclipse.org/r/30184 Tested-by: Hudson CI Reviewed-by: Doug Schaefer --- .../cdt/launchbar/core/internal/LaunchBarManager.java | 2 +- .../cdt/launchbar/ui/internal/controls/ConfigSelector.java | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/launch/org.eclipse.cdt.launchbar.core/src/org/eclipse/cdt/launchbar/core/internal/LaunchBarManager.java b/launch/org.eclipse.cdt.launchbar.core/src/org/eclipse/cdt/launchbar/core/internal/LaunchBarManager.java index edf57176706..5a1d410e3dc 100644 --- a/launch/org.eclipse.cdt.launchbar.core/src/org/eclipse/cdt/launchbar/core/internal/LaunchBarManager.java +++ b/launch/org.eclipse.cdt.launchbar.core/src/org/eclipse/cdt/launchbar/core/internal/LaunchBarManager.java @@ -430,7 +430,7 @@ public class LaunchBarManager extends PlatformObject implements ILaunchBarManage @Override public ILaunchConfiguration getLaunchConfiguration(ILaunchDescriptor descriptor, ILaunchTarget target) throws CoreException { - if (activeLaunchDesc == null) + if (activeLaunchDesc == null || target == null) return null; Map targetMap = configProviders.get(descriptor.getType().getId()); diff --git a/launch/org.eclipse.cdt.launchbar.ui/src/org/eclipse/cdt/launchbar/ui/internal/controls/ConfigSelector.java b/launch/org.eclipse.cdt.launchbar.ui/src/org/eclipse/cdt/launchbar/ui/internal/controls/ConfigSelector.java index 2b0a4ddbeca..e6857822d55 100644 --- a/launch/org.eclipse.cdt.launchbar.ui/src/org/eclipse/cdt/launchbar/ui/internal/controls/ConfigSelector.java +++ b/launch/org.eclipse.cdt.launchbar.ui/src/org/eclipse/cdt/launchbar/ui/internal/controls/ConfigSelector.java @@ -30,6 +30,7 @@ import org.eclipse.debug.core.ILaunchMode; import org.eclipse.debug.internal.ui.DebugUIPlugin; import org.eclipse.debug.internal.ui.launchConfigurations.LaunchGroupExtension; import org.eclipse.debug.ui.ILaunchGroup; +import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.IStructuredContentProvider; import org.eclipse.jface.viewers.LabelProvider; @@ -146,12 +147,16 @@ public class ConfigSelector extends CSelector { @Override public void handleEdit(Object element) { try { + Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(); ILaunchDescriptor desc = (ILaunchDescriptor) element; ILaunchMode mode = getManager().getActiveLaunchMode(); ILaunchTarget target = getManager().getActiveLaunchTarget(); + if (target == null) { + MessageDialog.openError(shell, "No Active Target", "You must create a target to edit this launch configuration."); + return; + } ILaunchConfigurationType configType = getManager().getLaunchConfigurationType(desc, target); ILaunchGroup group = DebugUIPlugin.getDefault().getLaunchConfigurationManager().getLaunchGroup(configType, mode.getIdentifier()); - Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(); LaunchGroupExtension groupExt = DebugUIPlugin.getDefault().getLaunchConfigurationManager().getLaunchGroup(group.getIdentifier()); if (groupExt != null) { ILaunchConfiguration config = getManager().getLaunchConfiguration(desc, target);