mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-02 14:45:25 +02:00
launchbar: public API for launch bar listeners
Change-Id: Ic33a181f679708de2b78aa7a49bde1ab45578b39
This commit is contained in:
parent
3eb77d17f6
commit
3a66908e57
5 changed files with 97 additions and 61 deletions
|
@ -0,0 +1,44 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) Jan 29, 2016 QNX Software Systems. All Rights Reserved.
|
||||
*
|
||||
* You must obtain a written license from and pay applicable license fees to QNX
|
||||
* Software Systems before you may reproduce, modify or distribute this software,
|
||||
* or any work that includes all or part of this software. Free development
|
||||
* licenses are available for evaluation and non-commercial purposes. For more
|
||||
* information visit [http://licensing.qnx.com] or email licensing@qnx.com.
|
||||
*
|
||||
* This file may contain contributions from others. Please review this entire
|
||||
* file for other proprietary rights or license notices, as well as the QNX
|
||||
* Development Suite License Guide at [http://licensing.qnx.com/license-guide/]
|
||||
* for other information.
|
||||
*******************************************************************************/
|
||||
package org.eclipse.launchbar.core;
|
||||
|
||||
import org.eclipse.debug.core.ILaunchMode;
|
||||
import org.eclipse.launchbar.core.target.ILaunchTarget;
|
||||
|
||||
/**
|
||||
* Listener that can be installed on launch bar to listen for state changes.
|
||||
* {@link ILaunchBarManager#addListener(ILaunchBarListener)}.
|
||||
*
|
||||
* <code>
|
||||
* Activator.getService(ILaunchBarManager.class).addListener(new ILaunchBarListener(){
|
||||
* public void activeLaunchTargetChanged(ILaunchTarget target) {
|
||||
* // do something
|
||||
* }
|
||||
* });
|
||||
* </code>
|
||||
*/
|
||||
public interface ILaunchBarListener {
|
||||
default void activeLaunchDescriptorChanged(ILaunchDescriptor descriptor) {
|
||||
}
|
||||
|
||||
default void activeLaunchModeChanged(ILaunchMode mode) {
|
||||
}
|
||||
|
||||
default void activeLaunchTargetChanged(ILaunchTarget target) {
|
||||
}
|
||||
|
||||
default void launchTargetsChanged() {
|
||||
}
|
||||
}
|
|
@ -23,7 +23,7 @@ public interface ILaunchBarManager extends ILaunchConfigurationListener {
|
|||
/**
|
||||
* A launch object has been added. Create a matching launch descriptor if
|
||||
* available.
|
||||
*
|
||||
*
|
||||
* @param element
|
||||
* launch object
|
||||
* @return the launch descriptor that got created, null of none was
|
||||
|
@ -34,7 +34,7 @@ public interface ILaunchBarManager extends ILaunchConfigurationListener {
|
|||
/**
|
||||
* A launch object has been removed. Remove the associated launch descriptor
|
||||
* if there is one.
|
||||
*
|
||||
*
|
||||
* @param element
|
||||
* launch object
|
||||
* @throws CoreException
|
||||
|
@ -43,10 +43,22 @@ public interface ILaunchBarManager extends ILaunchConfigurationListener {
|
|||
|
||||
/**
|
||||
* A launch object has changed in some way that affects the launch bar.
|
||||
*
|
||||
*
|
||||
* @param launchObject
|
||||
* @throws CoreException
|
||||
*/
|
||||
void launchObjectChanged(Object launchObject) throws CoreException;
|
||||
|
||||
|
||||
/**
|
||||
* Add a linstener that can react to launch bar changes
|
||||
* @param listener
|
||||
*/
|
||||
public void addListener(ILaunchBarListener listener);
|
||||
|
||||
/**
|
||||
* Remove a linstener
|
||||
* @param listener
|
||||
*/
|
||||
public void removeListener(ILaunchBarListener listener);
|
||||
}
|
||||
|
|
|
@ -38,6 +38,7 @@ import org.eclipse.debug.core.ILaunchConfigurationType;
|
|||
import org.eclipse.debug.core.ILaunchListener;
|
||||
import org.eclipse.debug.core.ILaunchManager;
|
||||
import org.eclipse.debug.core.ILaunchMode;
|
||||
import org.eclipse.launchbar.core.ILaunchBarListener;
|
||||
import org.eclipse.launchbar.core.ILaunchBarManager;
|
||||
import org.eclipse.launchbar.core.ILaunchConfigurationProvider;
|
||||
import org.eclipse.launchbar.core.ILaunchDescriptor;
|
||||
|
@ -54,23 +55,7 @@ import org.osgi.service.prefs.Preferences;
|
|||
* The brains of the launch bar.
|
||||
*/
|
||||
public class LaunchBarManager implements ILaunchBarManager, ILaunchTargetListener {
|
||||
public interface Listener {
|
||||
default void activeLaunchDescriptorChanged() {
|
||||
}
|
||||
|
||||
default void activeLaunchModeChanged() {
|
||||
}
|
||||
|
||||
default void activeLaunchTargetChanged() {
|
||||
}
|
||||
|
||||
default void launchDescriptorRemoved(ILaunchDescriptor descriptor) {
|
||||
}
|
||||
|
||||
default void launchTargetsChanged() {
|
||||
}
|
||||
}
|
||||
private final List<Listener> listeners = new LinkedList<>();
|
||||
private final List<ILaunchBarListener> listeners = new LinkedList<>();
|
||||
// The launch object providers
|
||||
private final List<ILaunchObjectProvider> objectProviders = new ArrayList<>();
|
||||
// The descriptor types
|
||||
|
@ -615,9 +600,9 @@ public class LaunchBarManager implements ILaunchBarManager, ILaunchTargetListene
|
|||
private void fireActiveLaunchDescriptorChanged() {
|
||||
if (!initialized)
|
||||
return;
|
||||
for (Listener listener : listeners) {
|
||||
for (ILaunchBarListener listener : listeners) {
|
||||
try {
|
||||
listener.activeLaunchDescriptorChanged();
|
||||
listener.activeLaunchDescriptorChanged(activeLaunchDesc);
|
||||
} catch (Exception e) {
|
||||
Activator.log(e);
|
||||
}
|
||||
|
@ -671,9 +656,9 @@ public class LaunchBarManager implements ILaunchBarManager, ILaunchTargetListene
|
|||
private void fireActiveLaunchModeChanged() {
|
||||
if (!initialized)
|
||||
return;
|
||||
for (Listener listener : listeners) {
|
||||
for (ILaunchBarListener listener : listeners) {
|
||||
try {
|
||||
listener.activeLaunchModeChanged();
|
||||
listener.activeLaunchModeChanged(activeLaunchMode);
|
||||
} catch (Exception e) {
|
||||
Activator.log(e);
|
||||
}
|
||||
|
@ -759,9 +744,9 @@ public class LaunchBarManager implements ILaunchBarManager, ILaunchTargetListene
|
|||
private void fireActiveLaunchTargetChanged() {
|
||||
if (!initialized)
|
||||
return;
|
||||
for (Listener listener : listeners) {
|
||||
for (ILaunchBarListener listener : listeners) {
|
||||
try {
|
||||
listener.activeLaunchTargetChanged();
|
||||
listener.activeLaunchTargetChanged(activeLaunchTarget);
|
||||
} catch (Exception e) {
|
||||
Activator.log(e);
|
||||
}
|
||||
|
@ -811,13 +796,16 @@ public class LaunchBarManager implements ILaunchBarManager, ILaunchTargetListene
|
|||
return null;
|
||||
}
|
||||
|
||||
public void addListener(Listener listener) {
|
||||
@Override
|
||||
public void addListener(ILaunchBarListener listener) {
|
||||
if (listener == null)
|
||||
return;
|
||||
listeners.add(listener);
|
||||
if (!listeners.contains(listener)) // cannot add duplicates
|
||||
listeners.add(listener);
|
||||
}
|
||||
|
||||
public void removeListener(Listener listener) {
|
||||
@Override
|
||||
public void removeListener(ILaunchBarListener listener) {
|
||||
if (listener == null)
|
||||
return;
|
||||
listeners.remove(listener);
|
||||
|
@ -901,7 +889,7 @@ public class LaunchBarManager implements ILaunchBarManager, ILaunchTargetListene
|
|||
private void fireLaunchTargetsChanged() {
|
||||
if (!initialized)
|
||||
return;
|
||||
for (Listener listener : listeners) {
|
||||
for (ILaunchBarListener listener : listeners) {
|
||||
try {
|
||||
listener.launchTargetsChanged();
|
||||
} catch (Exception e) {
|
||||
|
|
|
@ -16,9 +16,9 @@ import javax.annotation.PreDestroy;
|
|||
|
||||
import org.eclipse.debug.core.ILaunchMode;
|
||||
import org.eclipse.jface.preference.IPreferenceStore;
|
||||
import org.eclipse.launchbar.core.ILaunchBarListener;
|
||||
import org.eclipse.launchbar.core.ILaunchDescriptor;
|
||||
import org.eclipse.launchbar.core.internal.LaunchBarManager;
|
||||
import org.eclipse.launchbar.core.internal.LaunchBarManager.Listener;
|
||||
import org.eclipse.launchbar.core.target.ILaunchTarget;
|
||||
import org.eclipse.launchbar.ui.internal.Activator;
|
||||
import org.eclipse.launchbar.ui.internal.Messages;
|
||||
|
@ -34,7 +34,7 @@ import org.eclipse.swt.widgets.Label;
|
|||
import org.eclipse.swt.widgets.ToolBar;
|
||||
import org.eclipse.swt.widgets.ToolItem;
|
||||
|
||||
public class LaunchBarControl implements Listener {
|
||||
public class LaunchBarControl implements ILaunchBarListener {
|
||||
public static final String ID = "org.eclipse.launchbar"; //$NON-NLS-1$
|
||||
public static final String CLASS_URI = "bundleclass://" + Activator.PLUGIN_ID + "/" //$NON-NLS-1$ //$NON-NLS-2$
|
||||
+ LaunchBarControl.class.getName();
|
||||
|
@ -122,35 +122,26 @@ public class LaunchBarControl implements Listener {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void activeLaunchDescriptorChanged() {
|
||||
public void activeLaunchDescriptorChanged(ILaunchDescriptor descriptor) {
|
||||
if (configSelector != null) {
|
||||
final ILaunchDescriptor descriptor = manager.getActiveLaunchDescriptor();
|
||||
configSelector.setDelayedSelection(descriptor, SELECTION_DELAY);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void activeLaunchModeChanged() {
|
||||
public void activeLaunchModeChanged(ILaunchMode mode) {
|
||||
if (modeSelector != null) {
|
||||
final ILaunchMode mode = manager.getActiveLaunchMode();
|
||||
modeSelector.setDelayedSelection(mode, SELECTION_DELAY);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void activeLaunchTargetChanged() {
|
||||
public void activeLaunchTargetChanged(ILaunchTarget target) {
|
||||
if (targetSelector != null) {
|
||||
final ILaunchTarget target = manager.getActiveLaunchTarget();
|
||||
targetSelector.setDelayedSelection(target, SELECTION_DELAY);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void launchDescriptorRemoved(ILaunchDescriptor descriptor) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void launchTargetsChanged() {
|
||||
if (targetSelector != null) {
|
||||
|
|
|
@ -50,12 +50,12 @@ import org.eclipse.debug.core.ILaunchConfigurationType;
|
|||
import org.eclipse.debug.core.ILaunchManager;
|
||||
import org.eclipse.debug.core.ILaunchMode;
|
||||
import org.eclipse.launchbar.core.DefaultLaunchConfigProvider;
|
||||
import org.eclipse.launchbar.core.ILaunchBarListener;
|
||||
import org.eclipse.launchbar.core.ILaunchConfigurationProvider;
|
||||
import org.eclipse.launchbar.core.ILaunchDescriptor;
|
||||
import org.eclipse.launchbar.core.ILaunchDescriptorType;
|
||||
import org.eclipse.launchbar.core.ProjectLaunchDescriptor;
|
||||
import org.eclipse.launchbar.core.ProjectPerTargetLaunchConfigProvider;
|
||||
import org.eclipse.launchbar.core.internal.LaunchBarManager.Listener;
|
||||
import org.eclipse.launchbar.core.target.ILaunchTarget;
|
||||
import org.eclipse.launchbar.core.target.ILaunchTargetManager;
|
||||
import org.junit.Before;
|
||||
|
@ -670,12 +670,12 @@ public class LaunchBarManager2Test {
|
|||
|
||||
@Test
|
||||
public void testGetActiveLaunchDescriptor() throws CoreException {
|
||||
Listener lis = mock(Listener.class);
|
||||
ILaunchBarListener lis = mock(ILaunchBarListener.class);
|
||||
manager.addListener(lis);
|
||||
manager.launchObjectAdded(launchObject);
|
||||
// manager.setActiveLaunchDescriptor(desc);
|
||||
assertEquals(descriptor, manager.getActiveLaunchDescriptor());
|
||||
verify(lis).activeLaunchDescriptorChanged();
|
||||
verify(lis).activeLaunchDescriptorChanged(descriptor);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -697,12 +697,12 @@ public class LaunchBarManager2Test {
|
|||
|
||||
@Test
|
||||
public void testSetActiveLaunchDescriptorLisBad() throws CoreException {
|
||||
Listener lis = mock(Listener.class);
|
||||
ILaunchBarListener lis = mock(ILaunchBarListener.class);
|
||||
manager.addListener(lis);
|
||||
doThrow(new NullPointerException()).when(lis).activeLaunchDescriptorChanged();
|
||||
doThrow(new NullPointerException()).when(lis).activeLaunchDescriptorChanged(any(ILaunchDescriptor.class));
|
||||
manager.launchObjectAdded(launchObject);
|
||||
manager.launchConfigurationAdded(launchConfig);
|
||||
verify(lis).activeLaunchDescriptorChanged();
|
||||
verify(lis).activeLaunchDescriptorChanged(descriptor);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -774,22 +774,23 @@ public class LaunchBarManager2Test {
|
|||
public void testSetActiveLaunchModeLis() throws CoreException {
|
||||
ILaunchMode mode = mock(ILaunchMode.class);
|
||||
doReturn("bla").when(mode).getIdentifier();
|
||||
Listener lis = mock(Listener.class);
|
||||
ILaunchBarListener lis = mock(ILaunchBarListener.class);
|
||||
manager.addListener(lis);
|
||||
manager.setActiveLaunchMode(mode);
|
||||
manager.setActiveLaunchMode(null);
|
||||
verify(lis, times(2)).activeLaunchModeChanged();
|
||||
verify(lis, times(1)).activeLaunchModeChanged(mode);
|
||||
verify(lis, times(1)).activeLaunchModeChanged(null);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSetActiveLaunchModeLisBad() throws CoreException {
|
||||
ILaunchMode mode = mock(ILaunchMode.class);
|
||||
doReturn("bla").when(mode).getIdentifier();
|
||||
Listener lis = mock(Listener.class);
|
||||
ILaunchBarListener lis = mock(ILaunchBarListener.class);
|
||||
manager.addListener(lis);
|
||||
doThrow(new NullPointerException()).when(lis).activeLaunchModeChanged();
|
||||
doThrow(new NullPointerException()).when(lis).activeLaunchModeChanged(mode);
|
||||
manager.setActiveLaunchMode(mode);
|
||||
verify(lis).activeLaunchModeChanged();
|
||||
verify(lis).activeLaunchModeChanged(mode);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -857,28 +858,28 @@ public class LaunchBarManager2Test {
|
|||
|
||||
@Test
|
||||
public void testAddListener() throws CoreException {
|
||||
Listener lis = mock(Listener.class);
|
||||
ILaunchBarListener lis = mock(ILaunchBarListener.class);
|
||||
manager.addListener(lis);
|
||||
// check events
|
||||
manager.launchObjectAdded(launchObject);
|
||||
manager.setActiveLaunchDescriptor(descriptor);
|
||||
verify(lis).activeLaunchTargetChanged();
|
||||
verify(lis).activeLaunchTargetChanged(any(ILaunchTarget.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAddListenerBad() throws CoreException {
|
||||
Listener lis = mock(Listener.class);
|
||||
ILaunchBarListener lis = mock(ILaunchBarListener.class);
|
||||
manager.addListener(lis);
|
||||
doThrow(new NullPointerException()).when(lis).activeLaunchTargetChanged();
|
||||
doThrow(new NullPointerException()).when(lis).activeLaunchTargetChanged(any(ILaunchTarget.class));
|
||||
// check events
|
||||
manager.launchObjectAdded(launchObject);
|
||||
manager.setActiveLaunchDescriptor(descriptor);
|
||||
verify(lis).activeLaunchTargetChanged();
|
||||
verify(lis).activeLaunchTargetChanged(any(ILaunchTarget.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRemoveListener() {
|
||||
Listener lis = mock(Listener.class);
|
||||
ILaunchBarListener lis = mock(ILaunchBarListener.class);
|
||||
manager.addListener(lis);
|
||||
manager.removeListener(lis);
|
||||
verifyZeroInteractions(lis);
|
||||
|
|
Loading…
Add table
Reference in a new issue