diff --git a/bundles/org.eclipse.launchbar.core/META-INF/MANIFEST.MF b/bundles/org.eclipse.launchbar.core/META-INF/MANIFEST.MF index 8b18d87df34..e3465955719 100644 --- a/bundles/org.eclipse.launchbar.core/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.launchbar.core/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: LaunchBar Core Bundle-SymbolicName: org.eclipse.launchbar.core;singleton:=true -Bundle-Version: 2.2.3.qualifier +Bundle-Version: 2.3.0.qualifier Bundle-Activator: org.eclipse.launchbar.core.internal.Activator Bundle-Vendor: Eclipse CDT Require-Bundle: org.eclipse.core.runtime, diff --git a/bundles/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/target/LaunchTargetManager.java b/bundles/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/target/LaunchTargetManager.java index d2e27ea2887..a4c4ab7a043 100644 --- a/bundles/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/target/LaunchTargetManager.java +++ b/bundles/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/target/LaunchTargetManager.java @@ -26,12 +26,13 @@ import org.eclipse.launchbar.core.internal.Activator; import org.eclipse.launchbar.core.target.ILaunchTarget; import org.eclipse.launchbar.core.target.ILaunchTargetListener; import org.eclipse.launchbar.core.target.ILaunchTargetManager; +import org.eclipse.launchbar.core.target.ILaunchTargetManager2; import org.eclipse.launchbar.core.target.ILaunchTargetProvider; import org.eclipse.launchbar.core.target.TargetStatus; import org.osgi.service.prefs.BackingStoreException; import org.osgi.service.prefs.Preferences; -public class LaunchTargetManager implements ILaunchTargetManager { +public class LaunchTargetManager implements ILaunchTargetManager, ILaunchTargetManager2 { private Map> targets; private Map typeElements; @@ -188,7 +189,7 @@ public class LaunchTargetManager implements ILaunchTargetManager { } @Override - public ILaunchTarget addLaunchTarget(String typeId, String id) { + public ILaunchTarget addLaunchTargetNoNotify(String typeId, String id) { initTargets(); Map type = targets.get(typeId); if (type == null) { @@ -212,19 +213,25 @@ public class LaunchTargetManager implements ILaunchTargetManager { ILaunchTarget target = new LaunchTarget(typeId, id, child); type.put(id, target); prefs.flush(); - - synchronized (listeners) { - for (ILaunchTargetListener listener : listeners) { - listener.launchTargetAdded(target); - } - } - return target; } catch (BackingStoreException e) { Activator.log(e); return null; } } + + @Override + public ILaunchTarget addLaunchTarget(String typeId, String id) { + ILaunchTarget target = addLaunchTargetNoNotify(typeId, id); + if (target != null) { + synchronized (listeners) { + for (ILaunchTargetListener listener : listeners) { + listener.launchTargetAdded(target); + } + } + } + return target; + } @Override public void removeLaunchTarget(ILaunchTarget target) { diff --git a/bundles/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/target/ILaunchTargetManager2.java b/bundles/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/target/ILaunchTargetManager2.java new file mode 100644 index 00000000000..d95daf3c890 --- /dev/null +++ b/bundles/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/target/ILaunchTargetManager2.java @@ -0,0 +1,29 @@ +/******************************************************************************* + * Copyright (c) 2019 Red Hat Inc. and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + *******************************************************************************/ +package org.eclipse.launchbar.core.target; + +/** + * Launch target manager extensions. + * + * @noimplement not to be implemented by clients + */ +public interface ILaunchTargetManager2 { + + /** + * Add a launch target with the given typeId, id, and name but no notification. + * + * @param typeId + * type id of the launch target + * @param id + * id for the target. + * @return the created launch target + */ + ILaunchTarget addLaunchTargetNoNotify(String typeId, String id); + + +} diff --git a/features/org.eclipse.launchbar/feature.xml b/features/org.eclipse.launchbar/feature.xml index a2e18bea702..b61f15d85ee 100644 --- a/features/org.eclipse.launchbar/feature.xml +++ b/features/org.eclipse.launchbar/feature.xml @@ -2,7 +2,7 @@