From 93a926385fa93b75c81dc77c3ba6b84f809d7b53 Mon Sep 17 00:00:00 2001 From: Alena Laskavaia Date: Tue, 26 May 2015 13:05:56 -0400 Subject: [PATCH] launch bar: API for config added/changed we missing API to notify provider that configs are added/changed. it required to keep internal provider map in sync, i.e. restore the state of config/descriptor map on startup for example. Change-Id: I3af24a21d5d41084f85731f6da2f7aca2df81f1c --- .../core/DefaultLaunchConfigProvider.java | 11 +++++++++++ .../core/ILaunchConfigurationProvider.java | 16 ++++++++++++++++ .../core/PerTargetLaunchConfigProvider.java | 11 +++++++++++ .../launchbar/core/ProjectLaunchDescriptor.java | 4 ++++ .../core/internal/LaunchBarManager.java | 11 ++++++++++- 5 files changed, 52 insertions(+), 1 deletion(-) diff --git a/bundles/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/DefaultLaunchConfigProvider.java b/bundles/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/DefaultLaunchConfigProvider.java index c8537607dfc..5022250ea84 100644 --- a/bundles/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/DefaultLaunchConfigProvider.java +++ b/bundles/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/DefaultLaunchConfigProvider.java @@ -52,4 +52,15 @@ public class DefaultLaunchConfigProvider implements ILaunchConfigurationProvider // nothing to do } + @Override + public boolean launchConfigurationAdded(ILaunchConfiguration configuration) throws CoreException { + // catch any left over configs + return true; + } + + @Override + public boolean launchConfigurationChanged(ILaunchConfiguration configuration) throws CoreException { + // catch any left over configs + return true; + } } diff --git a/bundles/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/ILaunchConfigurationProvider.java b/bundles/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/ILaunchConfigurationProvider.java index f0b833981fb..8094d185ada 100644 --- a/bundles/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/ILaunchConfigurationProvider.java +++ b/bundles/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/ILaunchConfigurationProvider.java @@ -81,6 +81,21 @@ public interface ILaunchConfigurationProvider { */ boolean launchConfigurationRemoved(ILaunchConfiguration configuration) throws CoreException; + /** + * A launch configuration has been added. Provider can inspect it and associate with internal map. + * Provider should make sure it owns this launch configuration or it can modify it to take over. + * + * @return true of provider owns this launch configuration + */ + boolean launchConfigurationAdded(ILaunchConfiguration configuration) throws CoreException; + + /** + * A launch configuration has been changed. Provider can inspect it to re-evaluate its internal map. + * Provider should make sure it owns this launch configuration or it can modify it to take over. + * + * @return true of provider owns this launch configuration + */ + boolean launchConfigurationChanged(ILaunchConfiguration configuration) throws CoreException; /** * A launch descriptor has been removed. Remove any launch configurations that were * created for it. @@ -99,4 +114,5 @@ public interface ILaunchConfigurationProvider { */ void launchTargetRemoved(IRemoteConnection target) throws CoreException; + } diff --git a/bundles/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/PerTargetLaunchConfigProvider.java b/bundles/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/PerTargetLaunchConfigProvider.java index 7867d4942c3..b8d7a6fc363 100644 --- a/bundles/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/PerTargetLaunchConfigProvider.java +++ b/bundles/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/PerTargetLaunchConfigProvider.java @@ -83,6 +83,17 @@ public abstract class PerTargetLaunchConfigProvider extends AbstractLaunchConfig return false; } + @Override + public boolean launchConfigurationAdded(ILaunchConfiguration configuration) throws CoreException { + // TODO re-create map + return false; + } + + @Override + public boolean launchConfigurationChanged(ILaunchConfiguration configuration) throws CoreException { + return false; + } + @Override public void launchDescriptorRemoved(ILaunchDescriptor descriptor) throws CoreException { configMap.remove(descriptor); diff --git a/bundles/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/ProjectLaunchDescriptor.java b/bundles/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/ProjectLaunchDescriptor.java index b2ce2c871f1..4796f9d0b61 100644 --- a/bundles/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/ProjectLaunchDescriptor.java +++ b/bundles/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/ProjectLaunchDescriptor.java @@ -45,4 +45,8 @@ public class ProjectLaunchDescriptor extends PlatformObject implements ILaunchDe return type; } + @Override + public String toString() { + return getName(); // for debugging purposes + } } diff --git a/bundles/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/LaunchBarManager.java b/bundles/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/LaunchBarManager.java index 6db5f6b157d..5887f548f44 100644 --- a/bundles/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/LaunchBarManager.java +++ b/bundles/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/LaunchBarManager.java @@ -745,6 +745,7 @@ public class LaunchBarManager implements ILaunchBarManager, ILaunchConfiguration for (LaunchDescriptorTypeInfo descTypeInfo : orderedDescriptorTypes) { for (LaunchConfigProviderInfo providerInfo : configProviders.get(descTypeInfo.getId())) { try { + providerInfo.getProvider().launchConfigurationAdded(configuration); if (providerInfo.getProvider().ownsLaunchConfiguration(configuration)) { return; } @@ -781,7 +782,15 @@ public class LaunchBarManager implements ILaunchBarManager, ILaunchConfiguration @Override public void launchConfigurationChanged(ILaunchConfiguration configuration) { - // Nothing to do on changes + for (LaunchDescriptorTypeInfo descTypeInfo : orderedDescriptorTypes) { + for (LaunchConfigProviderInfo providerInfo : configProviders.get(descTypeInfo.getId())) { + try { + providerInfo.getProvider().launchConfigurationChanged(configuration); + } catch (Throwable e) { + Activator.log(e); + } + } + } } public void dispose() {