diff options
Diffstat (limited to 'org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/contextlaunching/LaunchingResourceManager.java')
-rw-r--r-- | org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/contextlaunching/LaunchingResourceManager.java | 699 |
1 files changed, 0 insertions, 699 deletions
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/contextlaunching/LaunchingResourceManager.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/contextlaunching/LaunchingResourceManager.java deleted file mode 100644 index ffa1840d9..000000000 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/contextlaunching/LaunchingResourceManager.java +++ /dev/null @@ -1,699 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2008 IBM Corporation 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 - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.debug.internal.ui.contextlaunching; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.ListIterator; -import java.util.Set; - -import org.eclipse.core.expressions.EvaluationContext; -import org.eclipse.core.expressions.IEvaluationContext; -import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.ListenerList; -import org.eclipse.core.runtime.Status; -import org.eclipse.core.runtime.jobs.Job; -import org.eclipse.debug.core.DebugPlugin; -import org.eclipse.debug.core.ILaunch; -import org.eclipse.debug.core.ILaunchConfiguration; -import org.eclipse.debug.core.ILaunchesListener2; -import org.eclipse.debug.internal.core.IInternalDebugCoreConstants; -import org.eclipse.debug.internal.ui.DebugUIPlugin; -import org.eclipse.debug.internal.ui.IInternalDebugUIConstants; -import org.eclipse.debug.internal.ui.ILaunchHistoryChangedListener; -import org.eclipse.debug.internal.ui.ILaunchLabelChangedListener; -import org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationManager; -import org.eclipse.debug.internal.ui.launchConfigurations.LaunchShortcutExtension; -import org.eclipse.debug.internal.ui.stringsubstitution.SelectedResourceManager; -import org.eclipse.debug.ui.ILaunchGroup; -import org.eclipse.jface.action.CoolBarManager; -import org.eclipse.jface.action.IContributionItem; -import org.eclipse.jface.action.ToolBarContributionItem; -import org.eclipse.jface.action.ToolBarManager; -import org.eclipse.jface.util.IPropertyChangeListener; -import org.eclipse.jface.util.PropertyChangeEvent; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.jface.viewers.StructuredSelection; -import org.eclipse.swt.events.MouseEvent; -import org.eclipse.swt.events.MouseTrackAdapter; -import org.eclipse.swt.widgets.ToolBar; -import org.eclipse.ui.IEditorPart; -import org.eclipse.ui.ISelectionListener; -import org.eclipse.ui.IWindowListener; -import org.eclipse.ui.IWorkbench; -import org.eclipse.ui.IWorkbenchPart; -import org.eclipse.ui.IWorkbenchWindow; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.activities.WorkbenchActivityHelper; -import org.eclipse.ui.internal.WorkbenchWindow; - -import com.ibm.icu.text.MessageFormat; - -/** - * This manager is used to calculate the labels for the current resource or for the current - * state of the launch history, depending on the enabled status of contextual launching. More specifically - * if contextual launching is enabled the calculated labels are for the current resource, otherwise - * the calculated labels are for the current state of the launch history. - * - * Any actions interested in being notified of launch label updates need to register with this manager, and implement - * the <code>ILaunchLabelChangedListener</code> interface. - * - * @see ILaunchLabelChangedListener - * @see org.eclipse.debug.ui.actions.AbstractLaunchHistoryAction - * - * @since 3.3 - */ -public class LaunchingResourceManager implements IPropertyChangeListener, IWindowListener, ISelectionListener, ILaunchHistoryChangedListener, ILaunchesListener2 { - - /** - *The set of label update listeners - */ - private ListenerList fLabelListeners = new ListenerList(); - - /** - * The map of ToolBars that have mouse tracker listeners associated with them: - * stored as Map<IWorkbenchWindow, ToolBar> - */ - private HashMap fToolbars = new HashMap(); - - /** - * the map of current labels - */ - private HashMap fCurrentLabels = new HashMap(); - - /** - * The selection has changed and we need to update the labels - */ - private boolean fUpdateLabel = true; - - /** - * Set of windows that have been opened and that we have registered selection listeners with - */ - private HashSet fWindows = new HashSet(); - - /** - * Cache of IResource -> ILaunchConfiguration[] used during a tooltip update job. - * The cache is cleared after each tooltip update job is complete. - */ - private HashMap fConfigCache = new HashMap(); - - /** - * Cache of IResource -> LaunchShortcutExtension used during a tooltip update job. - * The cache is cleared after each tooltip update job is complete. - */ - private HashMap fExtCache = new HashMap(); - - /** - * Constant denoting the empty string; - */ - private static final String EMPTY_STRING = IInternalDebugCoreConstants.EMPTY_STRING; - - /** - * Provides a mouse tracker listener for the launching main toolbar - */ - private MouseTrackAdapter fMouseListener = new MouseTrackAdapter() { - public void mouseEnter(MouseEvent e) { - if(fUpdateLabel) { - fUpdateLabel = false; - fCurrentLabels.clear(); - Job job = new Job("Compute launch button tooltip") { //$NON-NLS-1$ - protected IStatus run(IProgressMonitor monitor) { - computeLabels(); - fConfigCache.clear(); - fExtCache.clear(); - return Status.OK_STATUS; - } - }; - job.setSystem(true); - job.schedule(); - } - } - }; - - /** - * Returns if context launching is enabled - * @return if context launching is enabled - */ - public static boolean isContextLaunchEnabled() { - return DebugUIPlugin.getDefault().getPreferenceStore().getBoolean(IInternalDebugUIConstants.PREF_USE_CONTEXTUAL_LAUNCH); - } - - /** - * Allows an <code>AbstractLaunchHistoryAction</code> to register with this manager to be notified - * of a context (<code>IResource</code>) change and have its updateToolTip(..) method called back to. - * @param action the action to add - * @param group the launch group - * @return true if the <code>AbstractLaunchHistoryAction</code> was added as a listener, false otherwise - */ - public void addLaunchLabelUpdateListener(ILaunchLabelChangedListener listener) { - fLabelListeners.add(listener); - } - - /** - * Removes the specified <code>AbstractLaunchHistoryAction</code> from the listing of registered - * listeners - * @param action the action to remove - * @param group the launch group - * @return true if the action was removed from the listing of <code>AbstractLaunchHistoryAction</code> listeners, - * false otherwise - */ - public void removeLaunchLabelChangedListener(ILaunchLabelChangedListener listener) { - fLabelListeners.remove(listener); - } - - /** - * Returns the current resource label to be displayed. - * - * @param group the launch group to get the label for - * @return the current resource label; - */ - public String getLaunchLabel(ILaunchGroup group) { - return (String) fCurrentLabels.get(group); - } - - /** - * Returns if the parent project should be checked automatically - * @return true if the parent project should checked automatically, false otherwise - */ - protected boolean shouldCheckParent() { - return DebugUIPlugin.getDefault().getPreferenceStore().getBoolean(IInternalDebugUIConstants.PREF_LAUNCH_PARENT_PROJECT); - } - - /** - * Returns if the the last launch configuration should be launched if the selected resource is not launchable and context launching is enabled - * @return true if the last launched should be launched, false otherwise - */ - protected boolean shouldLaunchLast() { - return DebugUIPlugin.getDefault().getPreferenceStore().getBoolean(IInternalDebugUIConstants.PREF_LAUNCH_LAST_IF_NOT_LAUNCHABLE); - } - - /** - * Computes the current listing of labels for the given <code>IResource</code> context change or the - * current launch history changed event - */ - protected void computeLabels() { - ILaunchGroup group = null; - ILaunchConfiguration config = null; - String label = null; - Object[] listeners = fLabelListeners.getListeners(); - SelectedResourceManager srm = SelectedResourceManager.getDefault(); - IStructuredSelection selection = srm.getCurrentSelection(); - List shortcuts = null; - IResource resource = srm.getSelectedResource(); - for(int i = 0; i < listeners.length; i++) { - group = ((ILaunchLabelChangedListener)listeners[i]).getLaunchGroup(); - if(group != null) { - if(isContextLaunchEnabled() && !group.getIdentifier().equals("org.eclipse.ui.externaltools.launchGroup")) { //$NON-NLS-1$ - shortcuts = getShortcutsForSelection(selection, group.getMode()); - if(resource == null) { - resource = getLaunchableResource(shortcuts, selection); - } - label = getLabel(selection, resource, shortcuts, group); - } - else { - config = DebugUIPlugin.getDefault().getLaunchConfigurationManager().getFilteredLastLaunch(group.getIdentifier()); - if(config != null) { - label = appendLaunched(config); - } - } - fCurrentLabels.put(group, label); - label = null; - } - } - notifyLabelChanged(); - } - - /** - * Notifies all registered listeners that the known labels have changed - */ - protected void notifyLabelChanged() { - Object[] listeners = fLabelListeners.getListeners(); - for(int i = 0; i < listeners.length; i++) { - ((ILaunchLabelChangedListener)listeners[i]).labelChanged(); - } - } - - /** - * Appends the text '(already running)' to the tooltip label if there is a launch currently - * running (not terminated) with the same backing launch configuration as the one specified - * @param config - * @return the appended string for the tooltip label or the configuration name (default) - */ - private String appendLaunched(ILaunchConfiguration config) { - ILaunch[] launches = DebugPlugin.getDefault().getLaunchManager().getLaunches(); - boolean launched = false; - ILaunchConfiguration tmp = null; - for(int i = 0; i < launches.length; i++) { - tmp = launches[i].getLaunchConfiguration(); - if(tmp != null) { - if(!launches[i].isTerminated() && tmp.equals(config)) { - launched = true; - break; - } - } - } - if(launched) { - return MessageFormat.format(ContextMessages.LaunchingResourceManager_0, new String[] {config.getName()}); - } - return config.getName(); - } - - /** - * Returns the label for the last launched configuration or and empty string if there was no last launch. - * @param group - * @return the name of the last launched configuration, altered with '(running)' if needed, or the empty - * string if there is no last launch. - */ - protected String getlastLaunchedLabel(ILaunchGroup group) { - ILaunchConfiguration config = DebugUIPlugin.getDefault().getLaunchConfigurationManager().getFilteredLastLaunch(group.getIdentifier()); - if(config != null) { - return appendLaunched(config); - } - return EMPTY_STRING; - } - - /** - * Returns the label for the specified resource or the empty string, never <code>null</code> - * @param resource - * @param group - * @return the label for the resource or the empty string, never <code>null</code> - */ - protected String getLabel(IStructuredSelection selection, IResource resource, List shortcuts, ILaunchGroup group) { - List sc = pruneShortcuts(shortcuts, resource, group.getMode()); - LaunchConfigurationManager lcm = DebugUIPlugin.getDefault().getLaunchConfigurationManager(); - //see if the context is a shared configuration - ILaunchConfiguration config = lcm.isSharedConfig(resource); - if(config != null) { - return appendLaunched(config); - } - //TODO cache the results ? - List configs = getParticipatingLaunchConfigurations(selection, resource, sc, group.getMode()); - int csize = configs.size(); - if(csize == 1) { - return appendLaunched((ILaunchConfiguration)configs.get(0)); - } - else if(csize > 1) { - config = lcm.getMRUConfiguration(configs, group, resource); - if(config != null) { - return appendLaunched(config); - } - else { - return ContextMessages.ContextRunner_14; - } - } - else { - List exts = (List) fExtCache.get(resource); - if(exts == null && resource != null) { - fExtCache.put(resource, sc); - } - int esize = sc.size(); - if(esize == 0) { - if(resource != null && shouldCheckParent()) { - IProject project = resource.getProject(); - if(project != null && !project.equals(resource)) { - return getLabel(selection, project, sc, group); - } - } - else if(shouldLaunchLast() || resource == null) { - return getlastLaunchedLabel(group); - } - else { - return ContextMessages.ContextRunner_15; - } - } - if(esize == 1) { - if(resource != null) { - return resource.getName(); - } - else { - return MessageFormat.format(ContextMessages.LaunchingResourceManager_1, new String[] {((LaunchShortcutExtension) sc.get(0)).getLabel()}); - } - } - else { - return ContextMessages.ContextRunner_14; - } - } - } - - /** - * Prunes the original listing of shortcuts - * @param shortcuts the original listing of <code>LaunchShortcutExtension</code>s - * @param resource the derived resource - * - * @since 3.4 - */ - protected List pruneShortcuts(List shortcuts, IResource resource, String mode) { - List list = new ArrayList(shortcuts); - if(resource == null) { - LaunchShortcutExtension ext = null; - for(ListIterator iter = list.listIterator(); iter.hasNext();) { - ext = (LaunchShortcutExtension) iter.next(); - if(!ext.isParticipant()) { - iter.remove(); - } - } - } - else { - list = getShortcutsForSelection(new StructuredSelection(resource), mode); - } - return list; - } - - /** - * Computes the current resources context, given all of the launch shortcut participants - * and the current selection - * @param shortcuts - * @param selection - * @return The set of resources who care about this launch - * - * @since 3.4 - */ - public IResource getLaunchableResource(List shortcuts, IStructuredSelection selection) { - if(selection != null && !selection.isEmpty()) { - ArrayList resources = new ArrayList(); - IResource resource = null; - Object o = selection.getFirstElement(); - LaunchShortcutExtension ext = null; - for(Iterator iter = shortcuts.iterator(); iter.hasNext();) { - ext = (LaunchShortcutExtension) iter.next(); - if(o instanceof IEditorPart) { - resource = ext.getLaunchableResource((IEditorPart) o); - } - else { - resource = ext.getLaunchableResource(selection); - } - if(resource != null && !resources.contains(resource)) { - resources.add(resource); - resource = null; - } - } - if(resources.size() > 0) { - return (IResource) resources.get(0); - } - } - return null; - } - - /** - * Returns the launch shortcuts that apply to the current <code>IStructuredSelection</code> - * @param selection the current selection - * @param mode the mode - * @return the list of shortcuts that apply to the given selection and mode or an empty listing, never <code>null</code> - * - * @since 3.4 - */ - public List getShortcutsForSelection(IStructuredSelection selection, String mode) { - ArrayList list = new ArrayList(); - List sc = DebugUIPlugin.getDefault().getLaunchConfigurationManager().getLaunchShortcuts(); - List ctxt = new ArrayList(); - // work around to bug in Structured Selection that returns actual underlying array in selection - // @see bug 211646 - ctxt.addAll(selection.toList()); - Object o = selection.getFirstElement(); - if(o instanceof IEditorPart) { - ctxt.set(0, ((IEditorPart)o).getEditorInput()); - } - IEvaluationContext context = new EvaluationContext(null, ctxt); - context.addVariable("selection", ctxt); //$NON-NLS-1$ - LaunchShortcutExtension ext = null; - for(Iterator iter = sc.iterator(); iter.hasNext();) { - ext = (LaunchShortcutExtension) iter.next(); - try { - if(ext.evalEnablementExpression(context, ext.getContextualLaunchEnablementExpression()) && - ext.getModes().contains(mode) && !WorkbenchActivityHelper.filterItem(ext)) { - if(!list.contains(ext)) { - list.add(ext); - } - } - } - catch(CoreException ce) {} - } - return list; - } - - /** - * Returns a listing of all launch configurations that want to participate in the contextual - * launch of the specified resource or specified selection - * @param resource the underlying resource - * @param selection the current selection in the workbench - * @param shortcuts the listing of shortcut extensions that apply to the current context - * @param mode the mode - * @return a listing of all launch configurations wanting to participate in the current launching - * - * @since 3.4 - */ - public List getParticipatingLaunchConfigurations(IStructuredSelection selection, IResource resource, List shortcuts, String mode) { - HashSet configs = new HashSet(); - boolean useDefault = false; - if(selection != null) { - Object o = selection.getFirstElement(); - LaunchShortcutExtension ext = null; - ILaunchConfiguration[] cfgs = null; - //TODO this falls victim to contributors code performance - for(int i = 0; i < shortcuts.size(); i++) { - ext = (LaunchShortcutExtension) shortcuts.get(i); - if(o instanceof IEditorPart) { - cfgs = ext.getLaunchConfigurations((IEditorPart)o); - } - else { - cfgs = ext.getLaunchConfigurations(selection); - } - if (cfgs == null) { - Set types = ext.getAssociatedConfigurationTypes(); - addAllToList(configs, DebugUIPlugin.getDefault().getLaunchConfigurationManager().getApplicableLaunchConfigurations((String[]) types.toArray(new String[types.size()]), resource)); - useDefault = true; - } else if(cfgs.length > 0) { - for(int j = 0; j < cfgs.length; j++) { - configs.add(cfgs[j]); - } - useDefault = false; - } - } - } - if (useDefault) { - // consider default configurations if the shortcuts did not contribute any - addAllToList(configs, DebugUIPlugin.getDefault().getLaunchConfigurationManager().getApplicableLaunchConfigurations(null, resource)); - } - Iterator iterator = configs.iterator(); - while (iterator.hasNext()) { - ILaunchConfiguration config = (ILaunchConfiguration) iterator.next(); - try { - Set modes = config.getModes(); - modes.add(mode); - if (!config.getType().supportsModeCombination(modes)) { - iterator.remove(); - } - } - catch (CoreException e) {} - } - return new ArrayList(configs); - } - - /** - * Adds all of the items in the given object array to the given collection. - * Does nothing if either the collection or array is <code>null</code>. - * @param list - * @param values - */ - private void addAllToList(Collection list, Object[] values) { - if(list == null || values == null) { - return; - } - for(int i = 0; i < values.length; i++) { - list.add(values[i]); - } - } - - /** - * Starts up the manager - */ - public void startup() { - IWorkbench workbench = PlatformUI.getWorkbench(); - if(workbench != null) { - workbench.addWindowListener(this); - // initialize for already open windows - IWorkbenchWindow[] workbenchWindows = workbench.getWorkbenchWindows(); - for (int i = 0; i < workbenchWindows.length; i++) { - windowOpened(workbenchWindows[i]); - } - } - DebugUIPlugin.getDefault().getPreferenceStore().addPropertyChangeListener(this); - DebugUIPlugin.getDefault().getLaunchConfigurationManager().addLaunchHistoryListener(this); - DebugPlugin.getDefault().getLaunchManager().addLaunchListener(this); - } - - /** - * Shutdown and clean up the manager - */ - public void shutdown() { - IWorkbench workbench = PlatformUI.getWorkbench(); - if(workbench != null) { - workbench.removeWindowListener(this); - } - DebugUIPlugin.getDefault().getPreferenceStore().removePropertyChangeListener(this); - DebugUIPlugin.getDefault().getLaunchConfigurationManager().removeLaunchHistoryListener(this); - DebugPlugin.getDefault().getLaunchManager().removeLaunchListener(this); - for(Iterator iter = fWindows.iterator(); iter.hasNext();) { - ((IWorkbenchWindow)iter.next()).getSelectionService().removeSelectionListener(this); - } - IWorkbenchWindow window = null; - // set fUpdateLabel to false so that mouse track listener will do nothing if called - // before the asynchronous execution disposes them - fUpdateLabel = false; - for(Iterator iter = fToolbars.keySet().iterator(); iter.hasNext();) { - window = (IWorkbenchWindow) iter.next(); - final ToolBar bar = (ToolBar) fToolbars.get(window); - if(bar != null && !bar.isDisposed()) { - final MouseTrackAdapter listener = fMouseListener; - DebugUIPlugin.getStandardDisplay().asyncExec(new Runnable() { - public void run() { - bar.removeMouseTrackListener(listener); - } - }); - - } - } - fWindows.clear(); - fToolbars.clear(); - fLabelListeners.clear(); - fCurrentLabels.clear(); - } - - /** - * @see org.eclipse.ui.IWindowListener#windowActivated(org.eclipse.ui.IWorkbenchWindow) - */ - public void windowActivated(IWorkbenchWindow window) { - if(!fToolbars.containsKey(window)) { - addMouseListener(window); - } - } - - /** - * @see org.eclipse.ui.IWindowListener#windowClosed(org.eclipse.ui.IWorkbenchWindow) - */ - public void windowClosed(IWorkbenchWindow window) { - ToolBar bar = (ToolBar) fToolbars.remove(window); - if(bar != null && !bar.isDisposed()) { - bar.removeMouseTrackListener(fMouseListener); - } - if(fWindows.remove(window)) { - window.getSelectionService().removeSelectionListener(this); - } - } - - /** - * @see org.eclipse.ui.IWindowListener#windowDeactivated(org.eclipse.ui.IWorkbenchWindow) - */ - public void windowDeactivated(IWorkbenchWindow window) {} - - /** - * @see org.eclipse.ui.IWindowListener#windowOpened(org.eclipse.ui.IWorkbenchWindow) - */ - public void windowOpened(IWorkbenchWindow window) { - if(fWindows.add(window)) { - window.getSelectionService().addSelectionListener(this); - } - } - - /** - * Adds a mouse listener to the launch toolbar - * - * @param window - */ - private void addMouseListener(IWorkbenchWindow window) { - CoolBarManager cmgr = ((WorkbenchWindow)window).getCoolBarManager(); - if(cmgr != null) { - IContributionItem item = cmgr.find("org.eclipse.debug.ui.launchActionSet"); //$NON-NLS-1$ - if(item instanceof ToolBarContributionItem) { - ToolBarManager tmgr = (ToolBarManager) ((ToolBarContributionItem)item).getToolBarManager(); - ToolBar bar = tmgr.getControl(); - if(bar != null && !bar.isDisposed()) { - bar.addMouseTrackListener(fMouseListener); - fToolbars.put(window, bar); - } - } - } - } - - /** - * @see org.eclipse.jface.util.IPropertyChangeListener#propertyChange(org.eclipse.jface.util.PropertyChangeEvent) - */ - public void propertyChange(PropertyChangeEvent event) { - if(event.getProperty().equals(IInternalDebugUIConstants.PREF_USE_CONTEXTUAL_LAUNCH) || - event.getProperty().equals(IInternalDebugUIConstants.PREF_LAUNCH_LAST_IF_NOT_LAUNCHABLE)) { - if(isContextLaunchEnabled()) { - windowActivated(DebugUIPlugin.getActiveWorkbenchWindow()); - } - fUpdateLabel = true; - } - } - - /* (non-Javadoc) - * @see org.eclipse.ui.ISelectionListener#selectionChanged(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection) - */ - public void selectionChanged(IWorkbenchPart part, ISelection selection) { - if(isContextLaunchEnabled()) { - fUpdateLabel = true; - } - } - - /* (non-Javadoc) - * @see org.eclipse.debug.internal.ui.ILaunchHistoryChangedListener#launchHistoryChanged() - */ - public void launchHistoryChanged() { - //this always must be set to true, because as the history is loaded these events are fired, and we need to - //update on workspace load. - fUpdateLabel = true; - } - - /* (non-Javadoc) - * @see org.eclipse.debug.core.ILaunchesListener2#launchesTerminated(org.eclipse.debug.core.ILaunch[]) - */ - public void launchesTerminated(ILaunch[] launches) { - fUpdateLabel = true; - } - - /* (non-Javadoc) - * @see org.eclipse.debug.core.ILaunchesListener#launchesAdded(org.eclipse.debug.core.ILaunch[]) - */ - public void launchesAdded(ILaunch[] launches) { - fUpdateLabel = true; - } - - /* (non-Javadoc) - * @see org.eclipse.debug.core.ILaunchesListener#launchesChanged(org.eclipse.debug.core.ILaunch[]) - */ - public void launchesChanged(ILaunch[] launches) {} - - /* (non-Javadoc) - * @see org.eclipse.debug.core.ILaunchesListener#launchesRemoved(org.eclipse.debug.core.ILaunch[]) - */ - public void launchesRemoved(ILaunch[] launches) { - //we want to ensure that even if a launch is removed from the debug view - //when it is not terminated we update the label just in case. - //bug 195232 - for(int i = 0; i < launches.length; i++) { - if(!launches[i].isTerminated()) { - fUpdateLabel = true; - return; - } - } - } -} |