From 30b00414b081f4068c56ec676ab2e3667bdfa655 Mon Sep 17 00:00:00 2001 From: Jonathan Williams Date: Wed, 23 Jul 2014 16:56:45 -0400 Subject: [PATCH] Bug 440272 - Autoselect Another Target If Active Target Is Removed Set another target to the active target if there is one available. Set activeTarget to null if the list is empty. Also fixed an NPE if setActiveLaunchTarget() was called with null. Change-Id: I79d0a9c8a6b6e93b403dfbdf0d8bf0c8ea441297 Signed-off-by: Jonathan Williams Reviewed-on: https://git.eclipse.org/r/30386 Tested-by: Hudson CI Reviewed-by: Doug Schaefer --- .../cdt/launchbar/core/internal/LaunchBarManager.java | 10 ++++++++-- 1 file changed, 8 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 70aeb46f446..b36ea138c5f 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 @@ -375,6 +375,13 @@ public class LaunchBarManager extends PlatformObject implements ILaunchBarManage public void setActiveLaunchTarget(ILaunchTarget target) { if (activeLaunchTarget == target) return; + if (target == null) { + // try and select another target + ILaunchTarget[] targets = getLaunchTargets(); + if (targets.length > 0) { + target = targets[0]; + } + } activeLaunchTarget = target; for (Listener listener : listeners) @@ -385,6 +392,7 @@ public class LaunchBarManager extends PlatformObject implements ILaunchBarManage Preferences store = InstanceScope.INSTANCE.getNode(Activator.PLUGIN_ID).node(activeLaunchDesc.getName()); if (target != null) { + target.setActive(); store.put(PREF_ACTIVE_LAUNCH_TARGET, target.getId()); } else { store.remove(PREF_ACTIVE_LAUNCH_TARGET); @@ -395,8 +403,6 @@ public class LaunchBarManager extends PlatformObject implements ILaunchBarManage // TODO log e.printStackTrace(); } - - target.setActive(); } @Override