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()); + } } }