From b9764a20a4969a69f8d30ab2d1844d65dbc241af Mon Sep 17 00:00:00 2001 From: Jonathan Williams Date: Thu, 17 Jul 2014 14:42:04 -0400 Subject: [PATCH] Bug 439833 - Allow Launch Configuration Deletion from Launch Bar Also a slight refactoring of ILaunchConfigurationProvider for to enable this. Change-Id: I3e51e2277ee1a2b8875790d02ab6e5350595c946 Signed-off-by: Jonathan Williams Reviewed-on: https://git.eclipse.org/r/30078 Reviewed-by: Doug Schaefer Tested-by: Hudson CI --- .../core/ILaunchConfigurationProvider.java | 7 +++-- .../DefaultLaunchConfigurationProvider.java | 6 ++-- .../core/internal/LaunchBarManager.java | 29 +++++++++++++++---- 3 files changed, 30 insertions(+), 12 deletions(-) diff --git a/launch/org.eclipse.cdt.launchbar.core/src/org/eclipse/cdt/launchbar/core/ILaunchConfigurationProvider.java b/launch/org.eclipse.cdt.launchbar.core/src/org/eclipse/cdt/launchbar/core/ILaunchConfigurationProvider.java index a028221c710..52c12c60295 100644 --- a/launch/org.eclipse.cdt.launchbar.core/src/org/eclipse/cdt/launchbar/core/ILaunchConfigurationProvider.java +++ b/launch/org.eclipse.cdt.launchbar.core/src/org/eclipse/cdt/launchbar/core/ILaunchConfigurationProvider.java @@ -29,10 +29,10 @@ public interface ILaunchConfigurationProvider { * is properly constructed by sending in a launch object to the launch manager. * * @param configuration - * @return + * @return boolean - was the launch configuration added by this provider? * @throws CoreException */ - boolean ownsLaunchConfiguration(ILaunchConfiguration configuration) throws CoreException; + boolean launchConfigurationAdded(ILaunchConfiguration configuration) throws CoreException; /** * Returns the launch configuration type used to launch the descriptor on this target type. @@ -58,8 +58,9 @@ public interface ILaunchConfigurationProvider { * A launch configuration has been removed. * * @param configuration + * @return boolean - was the launch configuration removed by this provider? * @throws CoreException */ - void launchConfigurationRemoved(ILaunchConfiguration configuration) throws CoreException; + boolean launchConfigurationRemoved(ILaunchConfiguration configuration) throws CoreException; } diff --git a/launch/org.eclipse.cdt.launchbar.core/src/org/eclipse/cdt/launchbar/core/internal/DefaultLaunchConfigurationProvider.java b/launch/org.eclipse.cdt.launchbar.core/src/org/eclipse/cdt/launchbar/core/internal/DefaultLaunchConfigurationProvider.java index 83bbce1cec3..51803238587 100644 --- a/launch/org.eclipse.cdt.launchbar.core/src/org/eclipse/cdt/launchbar/core/internal/DefaultLaunchConfigurationProvider.java +++ b/launch/org.eclipse.cdt.launchbar.core/src/org/eclipse/cdt/launchbar/core/internal/DefaultLaunchConfigurationProvider.java @@ -15,7 +15,7 @@ public class DefaultLaunchConfigurationProvider implements ILaunchConfigurationP } @Override - public boolean ownsLaunchConfiguration(ILaunchConfiguration configuration) throws CoreException { + public boolean launchConfigurationAdded(ILaunchConfiguration configuration) throws CoreException { // We may own it but return false to let it percolate through to the descriptor type. return false; } @@ -37,8 +37,8 @@ public class DefaultLaunchConfigurationProvider implements ILaunchConfigurationP } @Override - public void launchConfigurationRemoved(ILaunchConfiguration configation) throws CoreException { - // The descriptor will handle the remove. + public boolean launchConfigurationRemoved(ILaunchConfiguration configation) throws CoreException { + return false; } } 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 97cbf581092..edf57176706 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 @@ -456,19 +456,19 @@ public class LaunchBarManager extends PlatformObject implements ILaunchBarManage @Override public void launchConfigurationAdded(ILaunchConfiguration configuration) { try { - boolean owned = false; + boolean added = false; // TODO filter by launch configuration type for (Map targetMap : configProviders.values()) { for (ILaunchConfigurationProvider configProvider : targetMap.values()) { - if (configProvider.ownsLaunchConfiguration(configuration)) { - owned = true; + if (configProvider.launchConfigurationAdded(configuration)) { + added = true; break; } } } - if (!owned) { + if (!added) { launchObjectAdded(configuration); } } catch (CoreException e) { @@ -484,8 +484,25 @@ public class LaunchBarManager extends PlatformObject implements ILaunchBarManage @Override public void launchConfigurationRemoved(ILaunchConfiguration configuration) { - // TODO Auto-generated method stub - + try { + boolean removed = false; + // TODO filter by launch configuration type + + for (Map targetMap : configProviders.values()) { + for (ILaunchConfigurationProvider configProvider : targetMap.values()) { + if (configProvider.launchConfigurationRemoved(configuration)) { + removed = true; + break; + } + } + } + + if (!removed) { + launchObjectRemoved(configuration); + } + } catch (CoreException e) { + Activator.log(e.getStatus()); + } } }