diff options
author | Simeon Andreev | 2018-11-06 12:15:38 +0000 |
---|---|---|
committer | Simeon Andreev | 2018-11-06 14:00:20 +0000 |
commit | 6100ecd8a9da560a70f7f5eed283dc1002551715 (patch) | |
tree | f7a0616012158a161c06404de44ef45ac207c81e | |
parent | 41e56139f31670455d0c982d3baceb314c0a5cc5 (diff) | |
download | eclipse.platform.ua-6100ecd8a9da560a70f7f5eed283dc1002551715.tar.gz eclipse.platform.ua-6100ecd8a9da560a70f7f5eed283dc1002551715.tar.xz eclipse.platform.ua-6100ecd8a9da560a70f7f5eed283dc1002551715.zip |
Bug 540662 - [Tips] Preference to unsubscribe from a Tip ProviderI20181107-0200
This change adds a preference which can disable specific tip providers.
The preference then lists tip provider ids separated by commas. The
preference can be specified via product customization, with the
following line:
org.eclipse.tips.ide/disabled_providers=org.eclipse.tips.ide.internal.provider.TipsTipProvider,org.eclipse.tips.ide.internal.provider.TwitterTipProvider
Change-Id: I133e4ef90b6272254d10ef0c76149d7c04385d8c
Signed-off-by: Simeon Andreev <Simeon.Andreev@NashTech.com>
4 files changed, 37 insertions, 4 deletions
diff --git a/org.eclipse.tips.ide/META-INF/MANIFEST.MF b/org.eclipse.tips.ide/META-INF/MANIFEST.MF index 8ee1c1528..767eadb39 100644 --- a/org.eclipse.tips.ide/META-INF/MANIFEST.MF +++ b/org.eclipse.tips.ide/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %Bundle-Name Bundle-SymbolicName: org.eclipse.tips.ide;singleton:=true -Bundle-Version: 0.1.200.qualifier +Bundle-Version: 0.1.300.qualifier Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Require-Bundle: org.eclipse.ui;bundle-version="3.108.0", org.eclipse.core.runtime;bundle-version="3.12.0", diff --git a/org.eclipse.tips.ide/pom.xml b/org.eclipse.tips.ide/pom.xml index 43856bf81..2b10abecf 100644 --- a/org.eclipse.tips.ide/pom.xml +++ b/org.eclipse.tips.ide/pom.xml @@ -22,6 +22,6 @@ </parent> <groupId>org.eclipse.ui</groupId> <artifactId>org.eclipse.tips.ide</artifactId> - <version>0.1.200-SNAPSHOT</version> + <version>0.1.300-SNAPSHOT</version> <packaging>eclipse-plugin</packaging> </project> diff --git a/org.eclipse.tips.ide/src/org/eclipse/tips/ide/internal/Startup.java b/org.eclipse.tips.ide/src/org/eclipse/tips/ide/internal/Startup.java index 0298efcaf..3b5232c14 100644 --- a/org.eclipse.tips.ide/src/org/eclipse/tips/ide/internal/Startup.java +++ b/org.eclipse.tips.ide/src/org/eclipse/tips/ide/internal/Startup.java @@ -13,6 +13,9 @@ *******************************************************************************/ package org.eclipse.tips.ide.internal; +import java.util.HashSet; +import java.util.Set; + import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IConfigurationElement; import org.eclipse.core.runtime.IProgressMonitor; @@ -57,6 +60,7 @@ public class Startup implements IStartup { } public static void loadProviders() { + Set<String> disabledProviders = new HashSet<>(TipsPreferences.getDisabledProviderIds()); IConfigurationElement[] elements = Platform.getExtensionRegistry() .getConfigurationElementsFor("org.eclipse.tips.core.tips"); //$NON-NLS-1$ for (IConfigurationElement element : elements) { @@ -64,7 +68,11 @@ public class Startup implements IStartup { try { TipProvider provider = (TipProvider) element.createExecutableExtension("class"); //$NON-NLS-1$ provider.setExpression(getExpression(element)); - IDETipManager.getInstance().register(provider); + String providerId = provider.getID(); + boolean isDisabled = disabledProviders.contains(providerId); + if (!isDisabled) { + IDETipManager.getInstance().register(provider); + } } catch (CoreException e) { log(e); } diff --git a/org.eclipse.tips.ide/src/org/eclipse/tips/ide/internal/TipsPreferences.java b/org.eclipse.tips.ide/src/org/eclipse/tips/ide/internal/TipsPreferences.java index 1627d3922..6aaf8f0c5 100644 --- a/org.eclipse.tips.ide/src/org/eclipse/tips/ide/internal/TipsPreferences.java +++ b/org.eclipse.tips.ide/src/org/eclipse/tips/ide/internal/TipsPreferences.java @@ -16,6 +16,7 @@ package org.eclipse.tips.ide.internal; import java.io.File; import java.io.FilenameFilter; import java.util.ArrayList; +import java.util.Arrays; import java.util.Calendar; import java.util.HashMap; import java.util.List; @@ -26,7 +27,10 @@ import org.eclipse.core.runtime.Platform; import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer; import org.eclipse.core.runtime.preferences.ConfigurationScope; +import org.eclipse.core.runtime.preferences.DefaultScope; import org.eclipse.core.runtime.preferences.IEclipsePreferences; +import org.eclipse.core.runtime.preferences.IPreferencesService; +import org.eclipse.core.runtime.preferences.IScopeContext; import org.eclipse.jface.preference.PreferenceStore; import org.eclipse.tips.core.internal.TipManager; import org.osgi.framework.Bundle; @@ -52,13 +56,20 @@ public class TipsPreferences extends AbstractPreferenceInitializer { */ public static final String PREF_SERVE_READ_TIPS = "serve_read_tips"; //$NON-NLS-1$ + /** + * Preference store key to indicate providers which are disabled. I.e. no tips + * are shown from these providers. The providers are indicated by their + * identifiers, the identifiers are strings separated by commas. + */ + public static final String PREF_DISABLED_PROVIDERS = "disabled_providers"; //$NON-NLS-1$ + public TipsPreferences() { } @Override public void initializeDefaultPreferences() { IEclipsePreferences node = getPreferences(); - node.putInt(PREF_STARTUP_BEHAVIOR, TipManager.START_DIALOG); + node.putInt(PREF_STARTUP_BEHAVIOR, TipManager.START_BACKGROUND); node.putBoolean(PREF_SERVE_READ_TIPS, false); try { node.flush(); @@ -228,4 +239,18 @@ public class TipsPreferences extends AbstractPreferenceInitializer { public static boolean isConsoleLog() { return !System.getProperty("org.eclipse.tips.consolelog", FALSE).equals(FALSE); //$NON-NLS-1$ } + + /** + * @return A list of tip provider identifiers, which are disabled with a + * preference on the configuration scope. + */ + public static List<String> getDisabledProviderIds() { + IScopeContext[] scopes = { ConfigurationScope.INSTANCE, DefaultScope.INSTANCE }; + IPreferencesService preferencesService = Platform.getPreferencesService(); + String defaultValue = ""; + String disabledProviderIdsPreference = preferencesService.getString(Constants.BUNDLE_ID, + PREF_DISABLED_PROVIDERS, defaultValue, scopes); + String[] disabledProviderIds = disabledProviderIdsPreference.split(","); + return Arrays.asList(disabledProviderIds); + } }
\ No newline at end of file |