1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-06-07 17:56:01 +02:00

Fixed up startup, selection handling, and preferences in LaunchBar.

This commit is contained in:
Doug Schaefer 2014-06-19 22:12:50 -04:00
parent fcd66c7d04
commit 49b65cb5b2
8 changed files with 138 additions and 142 deletions

View file

@ -12,6 +12,7 @@ package org.eclipse.cdt.launchbar.core;
import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IAdaptable; import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.debug.core.ILaunchMode; import org.eclipse.debug.core.ILaunchMode;
public interface ILaunchBarManager extends IAdaptable { public interface ILaunchBarManager extends IAdaptable {
@ -26,6 +27,8 @@ public interface ILaunchBarManager extends IAdaptable {
void removeLaunchConfigurationDescriptor(ILaunchConfigurationDescriptor configDesc); void removeLaunchConfigurationDescriptor(ILaunchConfigurationDescriptor configDesc);
ILaunchConfigurationDescriptor getLaunchConfigurationDescriptor(ILaunchConfiguration configuration);
ILaunchMode[] getLaunchModes() throws CoreException; ILaunchMode[] getLaunchModes() throws CoreException;
ILaunchMode getActiveLaunchMode(); ILaunchMode getActiveLaunchMode();

View file

@ -12,10 +12,8 @@ package org.eclipse.cdt.launchbar.core.internal;
import org.eclipse.cdt.launchbar.core.ILaunchBarManager; import org.eclipse.cdt.launchbar.core.ILaunchBarManager;
import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.Job;
import org.osgi.framework.Bundle; import org.osgi.framework.Bundle;
import org.osgi.framework.BundleActivator; import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext; import org.osgi.framework.BundleContext;
@ -39,19 +37,13 @@ public class Activator implements BundleActivator {
@Override @Override
public synchronized ILaunchBarManager getService(Bundle bundle, ServiceRegistration<ILaunchBarManager> registration) { public synchronized ILaunchBarManager getService(Bundle bundle, ServiceRegistration<ILaunchBarManager> registration) {
if (launchBarManager == null) { if (launchBarManager == null) {
launchBarManager = new LaunchBarManager();
new Job("Init LaunchBar Manager") {
@Override
protected IStatus run(IProgressMonitor monitor) {
try { try {
launchBarManager.init(); launchBarManager = new LaunchBarManager();
return Status.OK_STATUS;
} catch (CoreException e) { } catch (CoreException e) {
return e.getStatus(); // TODO log
e.printStackTrace();
} }
} }
}.schedule();;
}
return launchBarManager; return launchBarManager;
} }

View file

@ -35,6 +35,8 @@ import org.eclipse.debug.core.ILaunchConfigurationListener;
import org.eclipse.debug.core.ILaunchConfigurationType; import org.eclipse.debug.core.ILaunchConfigurationType;
import org.eclipse.debug.core.ILaunchManager; import org.eclipse.debug.core.ILaunchManager;
import org.eclipse.debug.core.ILaunchMode; import org.eclipse.debug.core.ILaunchMode;
import org.osgi.service.prefs.BackingStoreException;
import org.osgi.service.prefs.Preferences;
public class LaunchBarManager extends PlatformObject implements ILaunchBarManager, ILaunchConfigurationListener { public class LaunchBarManager extends PlatformObject implements ILaunchBarManager, ILaunchConfigurationListener {
@ -71,7 +73,7 @@ public class LaunchBarManager extends PlatformObject implements ILaunchBarManage
} }
void init() throws CoreException { public LaunchBarManager() throws CoreException {
IConfigurationElement[] elements = Platform.getExtensionRegistry().getConfigurationElementsFor( IConfigurationElement[] elements = Platform.getExtensionRegistry().getConfigurationElementsFor(
Activator.PLUGIN_ID, Activator.PLUGIN_ID,
"launchConfigProvider"); "launchConfigProvider");
@ -107,7 +109,11 @@ public class LaunchBarManager extends PlatformObject implements ILaunchBarManage
ILaunchManager launchManager = DebugPlugin.getDefault().getLaunchManager(); ILaunchManager launchManager = DebugPlugin.getDefault().getLaunchManager();
for (ILaunchConfiguration configuration : launchManager.getLaunchConfigurations()) { for (ILaunchConfiguration configuration : launchManager.getLaunchConfigurations()) {
launchConfigurationAdded(configuration); ILaunchConfigurationDescriptor configDesc = new DefaultLaunchConfigurationDescriptor(configuration);
for (ProviderExtensionDescriptor provider : providers) {
configDesc = provider.getProvider().filterDescriptor(configDesc);
}
configDescs.put(configDesc.getName(), configDesc);
} }
for (ProviderExtensionDescriptor providerDesc : providers) { for (ProviderExtensionDescriptor providerDesc : providers) {
@ -152,7 +158,9 @@ public class LaunchBarManager extends PlatformObject implements ILaunchBarManage
@Override @Override
public void launchConfigurationRemoved(ILaunchConfiguration configuration) { public void launchConfigurationRemoved(ILaunchConfiguration configuration) {
// TODO Auto-generated method stub ILaunchConfigurationDescriptor configDesc = getLaunchConfigurationDescriptor(configuration);
if (configDesc != null)
removeLaunchConfigurationDescriptor(configDesc);
} }
@Override @Override
@ -172,12 +180,48 @@ public class LaunchBarManager extends PlatformObject implements ILaunchBarManage
return activeConfigDesc; return activeConfigDesc;
} }
@Override
public ILaunchConfigurationDescriptor getLaunchConfigurationDescriptor(ILaunchConfiguration configuration) {
// Check by name
ILaunchConfigurationDescriptor configDesc = configDescs.get(configuration.getName());
if (configDesc.matches(configuration))
return configDesc;
// Nope, try all descs
for (ILaunchConfigurationDescriptor cd : configDescs.values()) {
if (cd.matches(configuration))
return cd;
}
// nothing, weird
return null;
}
@Override @Override
public void setActiveLaunchConfigurationDescriptor(ILaunchConfigurationDescriptor configDesc) throws CoreException { public void setActiveLaunchConfigurationDescriptor(ILaunchConfigurationDescriptor configDesc) throws CoreException {
if (activeConfigDesc == configDesc) if (activeConfigDesc == configDesc)
return; return;
activeConfigDesc = configDesc; activeConfigDesc = configDesc;
IEclipsePreferences store = InstanceScope.INSTANCE.getNode(Activator.PLUGIN_ID);
if (activeConfigDesc != null) {
store.put(PREF_ACTIVE_CONFIG_DESC, activeConfigDesc.getName());
} else {
store.remove(PREF_ACTIVE_CONFIG_DESC);
}
try {
store.flush();
} catch (BackingStoreException e) {
// TODO log
e.printStackTrace();
}
if (activeConfigDesc == null) {
setActiveLaunchMode(null);
setActiveLaunchTarget(null);
return;
}
// Get the launch modes // Get the launch modes
List<ILaunchMode> mymodes = new ArrayList<>(); List<ILaunchMode> mymodes = new ArrayList<>();
ILaunchConfigurationType type = activeConfigDesc.getLaunchConfigurationType(); ILaunchConfigurationType type = activeConfigDesc.getLaunchConfigurationType();
@ -198,8 +242,7 @@ public class LaunchBarManager extends PlatformObject implements ILaunchBarManage
} }
// Set active mode // Set active mode
IEclipsePreferences store = InstanceScope.INSTANCE.getNode(Activator.PLUGIN_ID); String activeModeName = store.node(activeConfigDesc.getName()).get(PREF_ACTIVE_LAUNCH_MODE, null);
String activeModeName = store.get(PREF_ACTIVE_LAUNCH_MODE, null);
boolean foundMode = false; boolean foundMode = false;
if (activeModeName != null) { if (activeModeName != null) {
for (ILaunchMode mode : launchModes) { for (ILaunchMode mode : launchModes) {
@ -234,10 +277,21 @@ public class LaunchBarManager extends PlatformObject implements ILaunchBarManage
} }
@Override @Override
public void removeLaunchConfigurationDescriptor( public void removeLaunchConfigurationDescriptor(ILaunchConfigurationDescriptor configDesc) {
ILaunchConfigurationDescriptor configDesc) { configDescs.remove(configDesc.getName());
// TODO Auto-generated method stub
// Fix up the active config if this one was it
if (activeConfigDesc.equals(configDesc)) {
try {
if (configDescs.isEmpty())
setActiveLaunchConfigurationDescriptor(null);
else
setActiveLaunchConfigurationDescriptor(configDescs.values().iterator().next());
} catch (CoreException e) {
// TODO log
e.printStackTrace();
}
}
} }
@Override @Override
@ -262,6 +316,20 @@ public class LaunchBarManager extends PlatformObject implements ILaunchBarManage
if (activeLaunchMode == mode) if (activeLaunchMode == mode)
return; return;
activeLaunchMode = mode; activeLaunchMode = mode;
Preferences store = InstanceScope.INSTANCE.getNode(Activator.PLUGIN_ID).node(activeConfigDesc.getName());
if (mode != null) {
store.put(PREF_ACTIVE_LAUNCH_MODE, mode.getIdentifier());
} else {
store.remove(PREF_ACTIVE_LAUNCH_MODE);
}
try {
store.flush();
} catch (BackingStoreException e) {
// TODO log
e.printStackTrace();
}
for (Listener listener : listeners) for (Listener listener : listeners)
listener.activeLaunchModeChanged(); listener.activeLaunchModeChanged();
} }

View file

@ -12,19 +12,11 @@ package org.eclipse.cdt.launchbar.ui.internal.controls;
import java.util.Arrays; import java.util.Arrays;
import java.util.Comparator; import java.util.Comparator;
import java.util.LinkedList;
import java.util.List;
import org.eclipse.cdt.launchbar.ui.IHoverProvider; import org.eclipse.cdt.launchbar.ui.IHoverProvider;
import org.eclipse.cdt.launchbar.ui.internal.Activator; import org.eclipse.cdt.launchbar.ui.internal.Activator;
import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.ISelectionProvider;
import org.eclipse.jface.viewers.IStructuredContentProvider; import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.swt.SWT; import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.ScrolledComposite; import org.eclipse.swt.custom.ScrolledComposite;
import org.eclipse.swt.events.DisposeEvent; import org.eclipse.swt.events.DisposeEvent;
@ -55,7 +47,7 @@ import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Shell;
public class CSelector extends Composite implements ISelectionProvider { public abstract class CSelector extends Composite {
private IStructuredContentProvider contentProvider; private IStructuredContentProvider contentProvider;
private ILabelProvider labelProvider; private ILabelProvider labelProvider;
@ -71,8 +63,7 @@ public class CSelector extends Composite implements ISelectionProvider {
private static final int arrowMax = 2; private static final int arrowMax = 2;
private Transition arrowTransition; private Transition arrowTransition;
private IStructuredSelection selection; private Object selection;
private List<ISelectionChangedListener> selectionChangedListeners = new LinkedList<>();
protected final Color backgroundColor; protected final Color backgroundColor;
protected final Color outlineColor; protected final Color outlineColor;
@ -118,7 +109,7 @@ public class CSelector extends Composite implements ISelectionProvider {
if (hoverProvider != null && (popup == null || popup.isDisposed())) { if (hoverProvider != null && (popup == null || popup.isDisposed())) {
final Object eventSource = e.getSource(); final Object eventSource = e.getSource();
if ((eventSource == currentLabel || eventSource == buttonComposite || eventSource == currentIcon)) { if ((eventSource == currentLabel || eventSource == buttonComposite || eventSource == currentIcon)) {
if (hoverProvider.displayHover(CSelector.this.selection.getFirstElement())) { if (hoverProvider.displayHover(selection)) {
buttonComposite.setToolTipText(""); buttonComposite.setToolTipText("");
if (currentLabel != null) { if (currentLabel != null) {
currentLabel.setToolTipText(""); currentLabel.setToolTipText("");
@ -222,27 +213,8 @@ public class CSelector extends Composite implements ISelectionProvider {
popup.dispose(); popup.dispose();
} }
@Override public void setSelection(Object element) {
public void addSelectionChangedListener(ISelectionChangedListener listener) { this.selection = element;
selectionChangedListeners.add(listener);
}
@Override
public void removeSelectionChangedListener(
ISelectionChangedListener listener) {
selectionChangedListeners.remove(listener);
}
@Override
public void setSelection(ISelection selection) {
if (!(selection instanceof IStructuredSelection))
return;
IStructuredSelection newSelection = (IStructuredSelection) selection;
if (this.selection != null && newSelection.getFirstElement() == this.selection.getFirstElement())
// Already selected
return;
this.selection = newSelection;
if (buttonComposite != null) if (buttonComposite != null)
buttonComposite.dispose(); buttonComposite.dispose();
@ -251,8 +223,6 @@ public class CSelector extends Composite implements ISelectionProvider {
boolean editable = false; boolean editable = false;
int columns = 2; int columns = 2;
Object element = null;
element = this.selection.getFirstElement();
Image image = labelProvider.getImage(element); Image image = labelProvider.getImage(element);
if (image != null) if (image != null)
@ -342,7 +312,7 @@ public class CSelector extends Composite implements ISelectionProvider {
@Override @Override
public void run() { public void run() {
if (CSelector.this.selection != null) if (CSelector.this.selection != null)
handleEdit(CSelector.this.selection.getFirstElement()); handleEdit(selection);
} }
}); });
} }
@ -350,18 +320,11 @@ public class CSelector extends Composite implements ISelectionProvider {
} }
layout(); layout();
fireSelectionChanged();
} }
private void fireSelectionChanged() { protected abstract void fireSelectionChanged();
SelectionChangedEvent event = new SelectionChangedEvent(this, selection);
for (ISelectionChangedListener listener : selectionChangedListeners) {
listener.selectionChanged(event);
}
}
@Override public Object getSelection() {
public IStructuredSelection getSelection() {
return selection; return selection;
} }
@ -453,7 +416,7 @@ public class CSelector extends Composite implements ISelectionProvider {
selIndex = -1; selIndex = -1;
scrollBucket = 0; scrollBucket = 0;
if (hoverProvider != null) { if (hoverProvider != null) {
hoverProvider.dismissHover(selection != null ? selection.getFirstElement() : null, true); hoverProvider.dismissHover(selection != null ? selection : null, true);
} }
} }
@ -539,7 +502,8 @@ public class CSelector extends Composite implements ISelectionProvider {
} else { } else {
// list item was pressed // list item was pressed
popup.dispose(); popup.dispose();
setSelection(new StructuredSelection(currItem.element)); setSelection(currItem.element);
fireSelectionChanged();
} }
} else if (e.detail == SWT.TRAVERSE_ESCAPE) { } else if (e.detail == SWT.TRAVERSE_ESCAPE) {
popup.dispose(); popup.dispose();
@ -594,7 +558,8 @@ public class CSelector extends Composite implements ISelectionProvider {
@Override @Override
public void mouseUp(MouseEvent e) { public void mouseUp(MouseEvent e) {
popup.dispose(); popup.dispose();
setSelection(new StructuredSelection(element)); setSelection(element);
fireSelectionChanged();
} }
}; };
@ -811,7 +776,7 @@ public class CSelector extends Composite implements ISelectionProvider {
} }
public void update(Object element) { public void update(Object element) {
if (selection.getFirstElement() == element) { if (selection == element) {
if (currentIcon != null && !currentIcon.isDisposed()) { if (currentIcon != null && !currentIcon.isDisposed()) {
currentIcon.setImage(labelProvider.getImage(element)); currentIcon.setImage(labelProvider.getImage(element));
} }

View file

@ -33,12 +33,8 @@ import org.eclipse.debug.ui.DebugUITools;
import org.eclipse.debug.ui.ILaunchGroup; import org.eclipse.debug.ui.ILaunchGroup;
import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredContentProvider; import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.window.Window; import org.eclipse.jface.window.Window;
import org.eclipse.jface.wizard.WizardDialog; import org.eclipse.jface.wizard.WizardDialog;
@ -65,8 +61,6 @@ public class ConfigSelector extends CSelector {
private LaunchBarUIManager uiManager; private LaunchBarUIManager uiManager;
private static final ISelection nullSelection = new StructuredSelection("No Launch Configurations");
public ConfigSelector(Composite parent, int style) { public ConfigSelector(Composite parent, int style) {
super(parent, style); super(parent, style);
@ -153,11 +147,11 @@ public class ConfigSelector extends CSelector {
return text1.compareTo(text2); return text1.compareTo(text2);
} }
}); });
}
addSelectionChangedListener(new ISelectionChangedListener() {
@Override @Override
public void selectionChanged(SelectionChangedEvent event) { protected void fireSelectionChanged() {
Object selected = getSelection().getFirstElement(); Object selected = getSelection();
if (selected instanceof ILaunchConfigurationDescriptor) { if (selected instanceof ILaunchConfigurationDescriptor) {
ILaunchConfigurationDescriptor configDesc = (ILaunchConfigurationDescriptor) selected; ILaunchConfigurationDescriptor configDesc = (ILaunchConfigurationDescriptor) selected;
try { try {
@ -167,8 +161,6 @@ public class ConfigSelector extends CSelector {
} }
} }
} }
});
}
@Override @Override
public boolean isEditable(Object element) { public boolean isEditable(Object element) {
@ -283,12 +275,4 @@ public class ConfigSelector extends CSelector {
uiManager = (LaunchBarUIManager) ((ILaunchBarManager) input).getAdapter(LaunchBarUIManager.class); uiManager = (LaunchBarUIManager) ((ILaunchBarManager) input).getAdapter(LaunchBarUIManager.class);
} }
@Override
public void setSelection(ISelection selection) {
if (selection == null)
super.setSelection(nullSelection);
else
super.setSelection(selection);
}
} }

View file

@ -20,7 +20,6 @@ import org.eclipse.cdt.launchbar.core.ILaunchTarget;
import org.eclipse.cdt.launchbar.ui.internal.Activator; import org.eclipse.cdt.launchbar.ui.internal.Activator;
import org.eclipse.cdt.launchbar.ui.internal.Messages; import org.eclipse.cdt.launchbar.ui.internal.Messages;
import org.eclipse.debug.core.ILaunchMode; import org.eclipse.debug.core.ILaunchMode;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.swt.SWT; import org.eclipse.swt.SWT;
import org.eclipse.swt.events.DisposeEvent; import org.eclipse.swt.events.DisposeEvent;
import org.eclipse.swt.events.DisposeListener; import org.eclipse.swt.events.DisposeListener;
@ -80,13 +79,13 @@ public class LaunchBarControl implements ILaunchBarManager.Listener {
targetSelector.setInput(manager); targetSelector.setInput(manager);
ILaunchConfigurationDescriptor configDesc = manager.getActiveLaunchConfigurationDescriptor(); ILaunchConfigurationDescriptor configDesc = manager.getActiveLaunchConfigurationDescriptor();
configSelector.setSelection(configDesc == null ? null : new StructuredSelection(configDesc)); configSelector.setSelection(configDesc == null ? null : configDesc);
ILaunchMode mode = manager.getActiveLaunchMode(); ILaunchMode mode = manager.getActiveLaunchMode();
modeSelector.setSelection(mode == null ? null : new StructuredSelection(mode)); modeSelector.setSelection(mode == null ? null : mode);
ILaunchTarget target = manager.getActiveLaunchTarget(); ILaunchTarget target = manager.getActiveLaunchTarget();
targetSelector.setSelection(target == null ? null : new StructuredSelection(target)); targetSelector.setSelection(target == null ? null : target);
} }
@PreDestroy @PreDestroy
@ -117,7 +116,7 @@ public class LaunchBarControl implements ILaunchBarManager.Listener {
@Override @Override
public void run() { public void run() {
if (!configSelector.isDisposed()) if (!configSelector.isDisposed())
configSelector.setSelection(configDesc == null ? null : new StructuredSelection(configDesc)); configSelector.setSelection(configDesc == null ? null : configDesc);
} }
}); });
} }
@ -131,7 +130,7 @@ public class LaunchBarControl implements ILaunchBarManager.Listener {
@Override @Override
public void run() { public void run() {
if (!modeSelector.isDisposed()) if (!modeSelector.isDisposed())
modeSelector.setSelection(mode == null ? null : new StructuredSelection(mode)); modeSelector.setSelection(mode == null ? null : mode);
} }
}); });
} }
@ -145,7 +144,7 @@ public class LaunchBarControl implements ILaunchBarManager.Listener {
@Override @Override
public void run() { public void run() {
if (!targetSelector.isDisposed()) if (!targetSelector.isDisposed())
targetSelector.setSelection(target == null ? null : new StructuredSelection(target)); targetSelector.setSelection(target == null ? null : target);
} }
}); });
} }

View file

@ -22,12 +22,8 @@ import org.eclipse.debug.core.ILaunchMode;
import org.eclipse.debug.internal.ui.DebugUIPlugin; import org.eclipse.debug.internal.ui.DebugUIPlugin;
import org.eclipse.debug.ui.ILaunchGroup; import org.eclipse.debug.ui.ILaunchGroup;
import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredContentProvider; import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Point; import org.eclipse.swt.graphics.Point;
@ -36,11 +32,11 @@ import org.eclipse.swt.widgets.Composite;
@SuppressWarnings("restriction") @SuppressWarnings("restriction")
public class ModeSelector extends CSelector { public class ModeSelector extends CSelector {
private static final ISelection nullSelection = new StructuredSelection("---");
public ModeSelector(Composite parent, int style) { public ModeSelector(Composite parent, int style) {
super(parent, style); super(parent, style);
setToolTipText("Launch configuration");
setContentProvider(new IStructuredContentProvider() { setContentProvider(new IStructuredContentProvider() {
@Override @Override
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
@ -137,20 +133,16 @@ public class ModeSelector extends CSelector {
return 0; return 0;
} }
}); });
}
setToolTipText("Launch configuration");
addSelectionChangedListener(new ISelectionChangedListener() {
@Override @Override
public void selectionChanged(SelectionChangedEvent event) { protected void fireSelectionChanged() {
Object selected = getSelection().getFirstElement(); Object selected = getSelection();
if (selected instanceof ILaunchMode) { if (selected instanceof ILaunchMode) {
ILaunchMode mode = (ILaunchMode) selected; ILaunchMode mode = (ILaunchMode) selected;
getManager().setActiveLaunchMode(mode); getManager().setActiveLaunchMode(mode);
} }
} }
});
}
@Override @Override
public Point computeSize(int wHint, int hHint, boolean changed) { public Point computeSize(int wHint, int hHint, boolean changed) {
@ -161,12 +153,4 @@ public class ModeSelector extends CSelector {
return (ILaunchBarManager) getInput(); return (ILaunchBarManager) getInput();
} }
@Override
public void setSelection(ISelection selection) {
if (selection == null)
super.setSelection(nullSelection);
else
super.setSelection(selection);
}
} }

View file

@ -209,6 +209,15 @@ public class TargetSelector extends CSelector {
createLabel.addMouseTrackListener(mouseTrackListener); createLabel.addMouseTrackListener(mouseTrackListener);
} }
@Override
protected void fireSelectionChanged() {
Object selection = getSelection();
if (selection instanceof ILaunchTarget) {
ILaunchTarget target = (ILaunchTarget) selection;
uiManager.getManager().setActiveLaunchTarget(target);
}
}
@Override @Override
public Point computeSize(int wHint, int hHint, boolean changed) { public Point computeSize(int wHint, int hHint, boolean changed) {
return super.computeSize(200, hHint, changed); return super.computeSize(200, hHint, changed);
@ -218,12 +227,4 @@ public class TargetSelector extends CSelector {
return (ILaunchBarManager) getInput(); return (ILaunchBarManager) getInput();
} }
@Override
public void setSelection(ISelection selection) {
if (selection == null)
super.setSelection(nullSelection);
else
super.setSelection(selection);
}
} }