1
0
Fork 0
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:
Alena Laskavaia 2016-01-29 10:57:02 -05:00
parent 3eb77d17f6
commit 3a66908e57
5 changed files with 97 additions and 61 deletions

View file

@ -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() {
}
}

View file

@ -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);
}

View file

@ -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) {

View file

@ -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) {

View file

@ -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);