/******************************************************************************* * Copyright (c) 2000, 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.ui; import java.util.Set; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.core.runtime.IConfigurationElement; import org.eclipse.core.runtime.IExtension; import org.eclipse.core.runtime.IExtensionPoint; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Platform; import org.eclipse.debug.core.DebugPlugin; import org.eclipse.debug.core.ILaunch; import org.eclipse.debug.core.ILaunchConfiguration; import org.eclipse.debug.core.ILaunchConfigurationType; import org.eclipse.debug.core.ILaunchDelegate; import org.eclipse.debug.core.model.IDebugElement; import org.eclipse.debug.core.model.IDebugTarget; import org.eclipse.debug.core.model.IProcess; import org.eclipse.debug.core.model.ISourceLocator; import org.eclipse.debug.internal.core.IConfigurationElementConstants; import org.eclipse.debug.internal.ui.DebugPluginImages; import org.eclipse.debug.internal.ui.DebugUIPlugin; import org.eclipse.debug.internal.ui.DefaultLabelProvider; import org.eclipse.debug.internal.ui.DelegatingModelPresentation; import org.eclipse.debug.internal.ui.LazyModelPresentation; import org.eclipse.debug.internal.ui.contexts.DebugContextManager; import org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationDialog; import org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationManager; import org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationPropertiesDialog; import org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationsDialog; import org.eclipse.debug.internal.ui.launchConfigurations.LaunchGroupExtension; import org.eclipse.debug.internal.ui.memory.MemoryRenderingManager; import org.eclipse.debug.internal.ui.sourcelookup.SourceLookupFacility; import org.eclipse.debug.internal.ui.sourcelookup.SourceLookupUIUtils; import org.eclipse.debug.internal.ui.stringsubstitution.SelectedResourceManager; import org.eclipse.debug.ui.contexts.IDebugContextManager; import org.eclipse.debug.ui.memory.IMemoryRenderingManager; import org.eclipse.debug.ui.sourcelookup.ISourceContainerBrowser; import org.eclipse.debug.ui.sourcelookup.ISourceLookupResult; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.window.Window; import org.eclipse.swt.custom.BusyIndicator; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.console.IConsole; import org.eclipse.ui.handlers.HandlerUtil; /** * This class provides utilities for clients of the debug UI. *

* Images retrieved from this facility should not be disposed. * The images will be disposed when this plug-in is shutdown. *

* @noinstantiate This class is not intended to be instantiated by clients. * @noextend This class is not intended to be subclassed by clients. */ public class DebugUITools { /** * Returns the shared image managed under the given key, or null * if none. *

* Note that clients MUST NOT dispose the image returned by this method. *

*

* See IDebugUIConstants for available images. *

* * @param key the image key * @return the image, or null if none * @see IDebugUIConstants */ public static Image getImage(String key) { return DebugPluginImages.getImage(key); } /** * Returns the shared image descriptor managed under the given key, or * null if none. *

* See IDebugUIConstants for available image descriptors. *

* * @param key the image descriptor key * @return the image descriptor, or null if none * @see IDebugUIConstants */ public static ImageDescriptor getImageDescriptor(String key) { return DebugPluginImages.getImageDescriptor(key); } /** * Returns the default image descriptor for the given element * or null if none is defined. */ public static ImageDescriptor getDefaultImageDescriptor(Object element) { String imageKey= getDefaultImageKey(element); if (imageKey == null) { return null; } return DebugPluginImages.getImageDescriptor(imageKey); } private static String getDefaultImageKey(Object element) { return ((DefaultLabelProvider)DebugUIPlugin.getDefaultLabelProvider()).getImageKey(element); } /** * Returns the preference store for the debug UI plug-in. * * @return preference store */ public static IPreferenceStore getPreferenceStore() { return DebugUIPlugin.getDefault().getPreferenceStore(); } /** * Returns a new debug model presentation that delegates to * appropriate debug models. *

* It is the client's responsibility dispose the presentation. *

* * @see org.eclipse.jface.viewers.IBaseLabelProvider#dispose() * @return a debug model presentation * @since 2.0 */ public static IDebugModelPresentation newDebugModelPresentation() { return new DelegatingModelPresentation(); } /** * Returns a new debug model presentation for specified * debug model, or null if a presentation does * not exist. *

* It is the client's responsibility dispose the presentation. *

* * @param identifier debug model identifier * @see org.eclipse.jface.viewers.IBaseLabelProvider#dispose() * @return a debug model presentation, or null * @since 2.0 */ public static IDebugModelPresentation newDebugModelPresentation(String identifier) { IExtensionPoint point= Platform.getExtensionRegistry().getExtensionPoint(DebugUIPlugin.getUniqueIdentifier(), IDebugUIConstants.ID_DEBUG_MODEL_PRESENTATION); if (point != null) { IExtension[] extensions= point.getExtensions(); for (int i= 0; i < extensions.length; i++) { IExtension extension= extensions[i]; IConfigurationElement[] configElements= extension.getConfigurationElements(); for (int j= 0; j < configElements.length; j++) { IConfigurationElement elt= configElements[j]; String id= elt.getAttribute("id"); //$NON-NLS-1$ if (id != null && id.equals(identifier)) { return new LazyModelPresentation(elt); } } } } return null; } /** * Returns the currently selected element in the * debug view of the current workbench page, * or null if there is no current * debug context. *

* This method used to return null when called from a non-UI thread, * but since 3.1, this methods also works when called from a non-UI thread. *

* @return the currently selected debug context, or null * @since 2.0 */ public static IAdaptable getDebugContext() { IWorkbenchWindow activeWindow = SelectedResourceManager.getDefault().getActiveWindow(); if (activeWindow != null) { ISelection activeContext = DebugUITools.getDebugContextManager().getContextService(activeWindow).getActiveContext(); if (activeContext instanceof IStructuredSelection) { IStructuredSelection selection = (IStructuredSelection) activeContext; if (!selection.isEmpty()) { Object firstElement = selection.getFirstElement(); if (firstElement instanceof IAdaptable) { return (IAdaptable) firstElement; } } } } return null; } /** * Returns the currently selected resource in the active workbench window, * or null if none. If an editor is active, the resource adapter * associated with the editor is returned, if any. * * @return selected resource or null * @since 3.0 */ public static IResource getSelectedResource() { return SelectedResourceManager.getDefault().getSelectedResource(); } /** * Returns the process associated with the current debug context. * If there is no debug context currently, the most recently * launched process is returned. If there is no current process * null is returned. * * @return the current process, or null * @since 2.0 */ public static IProcess getCurrentProcess() { IAdaptable context = getDebugContext(); if (context == null) { ILaunch[] launches = DebugPlugin.getDefault().getLaunchManager().getLaunches(); if (launches.length > 0) { context = launches[launches.length - 1]; } } if (context instanceof IDebugElement) { return ((IDebugElement)context).getDebugTarget().getProcess(); } if (context instanceof IProcess) { return (IProcess)context; } if (context instanceof ILaunch) { ILaunch launch= (ILaunch)context; IDebugTarget target= launch.getDebugTarget(); if (target != null) { IProcess process = target.getProcess(); if (process != null) { return process; } } IProcess[] ps = launch.getProcesses(); if (ps.length > 0) { return ps[ps.length - 1]; } } if (context != null) { return (IProcess) context.getAdapter(IProcess.class); } return null; } /** * Open the launch configuration dialog with the specified initial selection. * The selection may be null, or contain any mix of * ILaunchConfiguration or ILaunchConfigurationType * elements. *

* Before opening a new dialog, this method checks if there is an existing open * launch configuration dialog. If there is, this dialog is used with the * specified selection. If there is no existing dialog, a new one is created. *

*

* Note that if an existing dialog is reused, the mode argument is ignored * and the existing dialog keeps its original mode. *

* * @param shell the parent shell for the launch configuration dialog * @param selection the initial selection for the dialog * @param mode the mode (run or debug) in which to open the launch configuration dialog. * This should be one of the constants defined in ILaunchManager. * @return the return code from opening the launch configuration dialog - * one of Window.OK or Window.CANCEL. Window.CANCEL * is returned if an invalid launch group identifier is provided. * @see ILaunchGroup * @since 2.0 * @deprecated use openLaunchConfigurationDialogOnGroup(Shell, IStructuredSelection, String) * to specify the launch group that the dialog should be opened on. This method will open * on the launch group with the specified mode and a null category */ public static int openLaunchConfigurationDialog(Shell shell, IStructuredSelection selection, String mode) { ILaunchGroup[] groups = getLaunchGroups(); for (int i = 0; i < groups.length; i++) { ILaunchGroup group = groups[i]; if (group.getMode().equals(mode) && group.getCategory() == null) { return openLaunchConfigurationDialogOnGroup(shell, selection, group.getIdentifier()); } } return Window.CANCEL; } /** * Open the launch configuration dialog with the specified initial selection. * The selection may be null, or contain any mix of * ILaunchConfiguration or ILaunchConfigurationType * elements. *

* Before opening a new dialog, this method checks if there is an existing open * launch configuration dialog. If there is, this dialog is used with the * specified selection. If there is no existing dialog, a new one is created. *

*

* Note that if an existing dialog is reused, the mode argument is ignored * and the existing dialog keeps its original mode. *

* * @param shell the parent shell for the launch configuration dialog * @param selection the initial selection for the dialog * @param groupIdentifier the identifier of the launch group to display (corresponds to * the identifier of a launch group extension) * @return The return code from opening the launch configuration dialog - * one of Window.OK or Window.CANCEL. Window.CANCEL * is returned if an invalid launch group identifier is provided. * @see ILaunchGroup * @since 2.1 */ public static int openLaunchConfigurationDialogOnGroup(Shell shell, IStructuredSelection selection, String groupIdentifier) { return openLaunchConfigurationDialogOnGroup(shell, selection, groupIdentifier, null); } /** * Open the launch configuration dialog with the specified initial selection. * The selection may be null, or contain any mix of * ILaunchConfiguration or ILaunchConfigurationType * elements. *

* Before opening a new dialog, this method checks if there is an existing open * launch configuration dialog. If there is, this dialog is used with the * specified selection. If there is no existing dialog, a new one is created. *

*

* Note that if an existing dialog is reused, the mode argument is ignored * and the existing dialog keeps its original mode. *

*

* If a status is specified, a status handler is consulted to handle the * status. The status handler is passed the instance of the launch * configuration dialog that is opened. This gives the status handler an * opportunity to perform error handling/initialization as required. *

* @param shell the parent shell for the launch configuration dialog * @param selection the initial selection for the dialog * @param groupIdentifier the identifier of the launch group to display (corresponds to * the identifier of a launch group extension) * @param status the status to display in the dialog, or null * if none * @return the return code from opening the launch configuration dialog - * one of Window.OK or Window.CANCEL. Window.CANCEL * is returned if an invalid launch group identifier is provided. * @see org.eclipse.debug.core.IStatusHandler * @see ILaunchGroup * @since 2.1 */ public static int openLaunchConfigurationDialogOnGroup(final Shell shell, final IStructuredSelection selection, final String groupIdentifier, final IStatus status) { final int[] result = new int[1]; Runnable r = new Runnable() { /** * @see java.lang.Runnable#run() */ public void run() { LaunchConfigurationsDialog dialog = (LaunchConfigurationsDialog) LaunchConfigurationsDialog.getCurrentlyVisibleLaunchConfigurationDialog(); if (dialog != null) { dialog.setInitialSelection(selection); dialog.doInitialTreeSelection(); if (status != null) { dialog.handleStatus(status); } result[0] = Window.OK; } else { LaunchGroupExtension ext = DebugUIPlugin.getDefault().getLaunchConfigurationManager().getLaunchGroup(groupIdentifier); if(ext != null) { dialog = new LaunchConfigurationsDialog(shell, ext); dialog.setOpenMode(LaunchConfigurationsDialog.LAUNCH_CONFIGURATION_DIALOG_OPEN_ON_SELECTION); dialog.setInitialSelection(selection); dialog.setInitialStatus(status); result[0] = dialog.open(); } else { result[0] = Window.CANCEL; } } } }; BusyIndicator.showWhile(DebugUIPlugin.getStandardDisplay(), r); return result[0]; } /** * Open the launch configuration properties dialog on the specified launch * configuration. * * @param shell the parent shell for the launch configuration dialog * @param configuration the configuration to display * @param groupIdentifier group identifier of the launch group the launch configuration * belongs to * @return the return code from opening the launch configuration dialog - * one of Window.OK or Window.CANCEL. Window.CANCEL * is returned if an invalid launch group identifier is provided. * @see ILaunchGroup * @since 2.1 */ public static int openLaunchConfigurationPropertiesDialog(Shell shell, ILaunchConfiguration configuration, String groupIdentifier) { return openLaunchConfigurationPropertiesDialog(shell, configuration, groupIdentifier, null); } /** * Open the launch configuration properties dialog on the specified launch * configuration. * * @param shell the parent shell for the launch configuration dialog * @param configuration the configuration to display * @param groupIdentifier group identifier of the launch group the launch configuration * belongs to * @param status the status to display, or null if none * @return the return code from opening the launch configuration dialog - * one of Window.OK or Window.CANCEL. Window.CANCEL * is returned if an invalid launch group identifier is provided. * @see ILaunchGroup * @since 3.0 */ public static int openLaunchConfigurationPropertiesDialog(Shell shell, ILaunchConfiguration configuration, String groupIdentifier, IStatus status) { LaunchGroupExtension group = DebugUIPlugin.getDefault().getLaunchConfigurationManager().getLaunchGroup(groupIdentifier); if (group != null) { LaunchConfigurationPropertiesDialog dialog = new LaunchConfigurationPropertiesDialog(shell, configuration, group); dialog.setInitialStatus(status); return dialog.open(); } return Window.CANCEL; } /** * Open the launch configuration dialog on the specified launch * configuration. The dialog displays the tabs for a single configuration * only (a tree of launch configuration is not displayed), and provides a * launch (run or debug) button. *

* If a status is specified, a status handler is consulted to handle the * status. The status handler is passed the instance of the launch * configuration dialog that is opened. This gives the status handler an * opportunity to perform error handling/initialization as required. *

* @param shell the parent shell for the launch configuration dialog * @param configuration the configuration to display * @param groupIdentifier group identifier of the launch group the launch configuration * belongs to * @param status the status to display, or null if none * @return the return code from opening the launch configuration dialog - * one of Window.OK or Window.CANCEL. Window.CANCEL * is returned if an invalid launch group identifier is provided. * @see ILaunchGroup * @since 2.1 */ public static int openLaunchConfigurationDialog(Shell shell, ILaunchConfiguration configuration, String groupIdentifier, IStatus status) { LaunchGroupExtension group = DebugUIPlugin.getDefault().getLaunchConfigurationManager().getLaunchGroup(groupIdentifier); if (group != null) { LaunchConfigurationDialog dialog = new LaunchConfigurationDialog(shell, configuration, group); dialog.setInitialStatus(status); return dialog.open(); } return Window.CANCEL; } /** * Saves all dirty editors and builds the workspace according to current * preference settings, and returns whether a launch should proceed. *

* The following preferences effect whether dirty editors are saved, * and/or if the user is prompted to save dirty editors:

* The following preference effects whether a build is performed before * launching (if required): *

* * @return whether a launch should proceed * @since 2.0 * @deprecated Saving has been moved to the launch delegate LaunchConfigurationDelegate to allow for scoped saving * of resources that are only involved in the current launch, no longer the entire workspace */ public static boolean saveAndBuildBeforeLaunch() { return DebugUIPlugin.saveAndBuild(); } /** * Saves all dirty editors according to current * preference settings, and returns whether a launch should proceed. *

* The following preferences effect whether dirty editors are saved, * and/or if the user is prompted to save dirty editors:

*

* * @return whether a launch should proceed * @since 2.1 * @deprecated Saving has been moved to the launch delegate LaunchConfigurationDelegate to allow for scoped saving * of resources that are only involved in the current launch, no longer the entire workspace */ public static boolean saveBeforeLaunch() { return DebugUIPlugin.preLaunchSave(); } /** * Saves and builds the workspace according to current preference settings, and * launches the given launch configuration in the specified mode. *

* This method must be called in the UI thread. *

* @param configuration the configuration to launch * @param mode launch mode - run or debug * @since 2.1 */ public static void launch(final ILaunchConfiguration configuration, final String mode) { boolean launchInBackground= true; try { launchInBackground= configuration.getAttribute(IDebugUIConstants.ATTR_LAUNCH_IN_BACKGROUND, true); } catch (CoreException e) { DebugUIPlugin.log(e); } if (launchInBackground) { DebugUIPlugin.launchInBackground(configuration, mode); } else { DebugUIPlugin.launchInForeground(configuration, mode); } } /** * Builds the workspace according to current preference settings, and launches * the given configuration in the specified mode, returning the resulting launch * object. *

* The following preference effects whether a build is performed before * launching (if required):

*

* * @param configuration the configuration to launch * @param mode the mode to launch in * @param monitor progress monitor * @return the resulting launch object * @throws CoreException if building or launching fails * @since 2.1 */ public static ILaunch buildAndLaunch(ILaunchConfiguration configuration, String mode, IProgressMonitor monitor) throws CoreException { return DebugUIPlugin.buildAndLaunch(configuration, mode, monitor); } /** * Returns the perspective to switch to when a configuration of the given type * is launched in the given mode, or null if no switch should take * place. * * In 3.3 this method is equivalent to calling getLaunchPerspective(ILaunchConfigurationType type, Set modes, ILaunchDelegate delegate), * with the 'mode' parameter comprising a single element set and passing null as the launch delegate. * * @param type launch configuration type * @param mode launch mode identifier * @return perspective identifier or null * @since 3.0 */ public static String getLaunchPerspective(ILaunchConfigurationType type, String mode) { return DebugUIPlugin.getDefault().getPerspectiveManager().getLaunchPerspective(type, mode); } /** * Returns the perspective id to switch to when a configuration of the given type launched with the specified delegate * is launched in the given mode set, or null if no switch should occurr. * @param type the configuration type * @param delegate the launch delegate * @param modes the set of modes * @return the perspective id or null if no switch should occur * * @since 3.3 */ public static String getLaunchPerspective(ILaunchConfigurationType type, ILaunchDelegate delegate, Set modes) { return DebugUIPlugin.getDefault().getPerspectiveManager().getLaunchPerspective(type, modes, delegate); } /** * Sets the perspective to switch to when a configuration of the given type * is launched in the given mode. PERSPECTIVE_NONE indicates no * perspective switch should take place. PERSPECTIVE_DEFAULT indicates * a default perspective switch should take place, as defined by the associated * launch tab group extension. * * In 3.3 this method is equivalent to calling setLaunchPerspective(ILaunchConfigurationType type, Set modes, ILaunchDelegate delegate, String perspectiveid), * with the parameter 'mode' used in the set modes, and null passed as the delegate * * @param type launch configuration type * @param mode launch mode identifier * @param perspective identifier, PERSPECTIVE_NONE, or * PERSPECTIVE_DEFAULT * @since 3.0 */ public static void setLaunchPerspective(ILaunchConfigurationType type, String mode, String perspective) { DebugUIPlugin.getDefault().getPerspectiveManager().setLaunchPerspective(type, mode, perspective); } /** * Sets the perspective to switch to when a configuration of the specified type and launched using the * specified launch delegate is launched in the specified modeset. PERSPECTIVE_NONE indicates no * perspective switch should take place. * * Passing null for the launch delegate is quivalent to using the default perspective for the specified * type. * @param type the configuration type * @param delegate the launch delegate * @param modes the set of modes * @param perspectiveid identifier or PERSPECTIVE_NONE * * @since 3.3 */ public static void setLaunchPerspective(ILaunchConfigurationType type, ILaunchDelegate delegate, Set modes, String perspectiveid) { DebugUIPlugin.getDefault().getPerspectiveManager().setLaunchPerspective(type, modes, delegate, perspectiveid); } /** * Returns whether the given launch configuration is private. Generally, * private launch configurations should not be displayed to the user. The * private status of a launch configuration is determined by the * IDebugUIConstants.ATTR_PRIVATE attribute. * * @param configuration launch configuration * @return whether the given launch configuration is private * @since 3.0 */ public static boolean isPrivate(ILaunchConfiguration configuration) { return !LaunchConfigurationManager.isVisible(configuration); } /** * Sets whether step filters should be applied to step commands. This * setting is a global option applied to all registered debug targets. *

* Since 3.3, this is equivalent to calling DebugPlugin.setUseStepFilters(boolean). *

* @param useStepFilters whether step filters should be applied to step * commands * @since 3.0 * @see org.eclipse.debug.core.model.IStepFilters */ public static void setUseStepFilters(boolean useStepFilters) { DebugPlugin.setUseStepFilters(useStepFilters); } /** * Returns whether step filters are applied to step commands. *

* Since 3.3, this is equivalent to calling DebugPlugin.isUseStepFilters(). *

* @return whether step filters are applied to step commands * @since 3.0 * @see org.eclipse.debug.core.model.IStepFilters */ public static boolean isUseStepFilters() { return DebugPlugin.isUseStepFilters(); } /** * Returns the console associated with the given process, or * null if none. * * @param process a process * @return console associated with the given process, or * null if none * @since 3.0 */ public static IConsole getConsole(IProcess process) { return DebugUIPlugin.getDefault().getProcessConsoleManager().getConsole(process); } /** * Returns the console associated with the given debug element, or * null if none. * * @param element a debug model element * @return console associated with the given element, or * null if none * @since 3.0 */ public static IConsole getConsole(IDebugElement element) { IProcess process = element.getDebugTarget().getProcess(); if (process != null) { return getConsole(process); } return null; } /** * Returns all registered launch group extensions. * * @return all registered launch group extensions * @since 3.0 */ public static ILaunchGroup[] getLaunchGroups() { return DebugUIPlugin.getDefault().getLaunchConfigurationManager().getLaunchGroups(); } /** * Returns the last configuration that was launched for specified launch group or * null, if there is not one. This method does not provide any form of * filtering on the returned launch configurations. * * @param groupId the unique identifier of a launch group * @return the last launched configuration for the specified group or null. * @see DebugUITools#getLaunchGroups() * @since 3.3 */ public static ILaunchConfiguration getLastLaunch(String groupId) { return DebugUIPlugin.getDefault().getLaunchConfigurationManager().getLastLaunch(groupId); } /** * Returns the launch group that the given launch configuration belongs * to, for the specified mode, or null if none. * * @param configuration * @param mode * @return the launch group the given launch configuration belongs to, for * the specified mode, or null if none * @since 3.0 */ public static ILaunchGroup getLaunchGroup(ILaunchConfiguration configuration, String mode) { try { return DebugUIPlugin.getDefault().getLaunchConfigurationManager().getLaunchGroup(configuration.getType(), mode); } catch(CoreException ce) { return null; } } /** * Performs source lookup on the given artifact and returns the result. * Optionally, a source locator may be specified. * * @param artifact object for which source is to be resolved * @param locator the source locator to use, or null. When null * a source locator is determined from the artifact, if possible. If the artifact * is a debug element, the source locator from its associated launch is used. * @return a source lookup result * @since 3.1 */ public static ISourceLookupResult lookupSource(Object artifact, ISourceLocator locator) { return SourceLookupFacility.getDefault().lookup(artifact, locator); } /** * Displays the given source lookup result in an editor in the given workbench * page. Has no effect if the result has an unknown editor id or editor input. * The editor is opened, positioned, and annotated. *

* Honors user preference for editors re-use. *

* @param result source lookup result to display * @param page the page to display the result in * @since 3.1 */ public static void displaySource(ISourceLookupResult result, IWorkbenchPage page) { SourceLookupFacility.getDefault().display(result, page); } /** * Returns the memory rendering manager. * * @return the memory rendering manager * @since 3.1 */ public static IMemoryRenderingManager getMemoryRenderingManager() { return MemoryRenderingManager.getDefault(); } /** * Returns the image associated with the specified type of source container * or null if none. * * @param id unique identifier for a source container type * @return image associated with the specified type of source container * or null if none * @since 3.2 * @see org.eclipse.debug.core.sourcelookup.ISourceContainerType */ public static Image getSourceContainerImage(String id){ return SourceLookupUIUtils.getSourceContainerImage(id); } /** * Returns a new source container browser for the specified type of source container * or null if a browser has not been registered. * * @param id unique identifier for a source container type * @return source container browser or null if none * @since 3.2 * @see org.eclipse.debug.ui.sourcelookup.ISourceContainerBrowser */ public static ISourceContainerBrowser getSourceContainerBrowser(String id) { return SourceLookupUIUtils.getSourceContainerBrowser(id); } /** * Returns the color associated with the specified preference identifier or * null if none. * * @param id preference identifier of the color * @return the color associated with the specified preference identifier * or null if none * @since 3.2 * @see IDebugUIConstants */ public static Color getPreferenceColor(String id) { return DebugUIPlugin.getPreferenceColor(id); } /** * Returns the debug context manager. * * @return debug context manager * @since 3.3 */ public static IDebugContextManager getDebugContextManager() { return DebugContextManager.getDefault(); } /** * Return the debug context for the given executionEvent or null if none. * * @param event The execution event that contains the application context * @return the current debug context, or null. * * @since 3.5 */ public static ISelection getDebugContextForEvent(ExecutionEvent event) { Object o = HandlerUtil.getVariable(event, IConfigurationElementConstants.DEBUG_CONTEXT); if (o instanceof ISelection) { return (ISelection) o; } return null; } /** * Return the debug context for the given executionEvent. * * @param event The execution event that contains the application context * @return the debug context. Will not return null. * @throws ExecutionException If the current selection variable is not found. * * @since 3.5 */ public static ISelection getDebugContextForEventChecked(ExecutionEvent event) throws ExecutionException { Object o = HandlerUtil.getVariableChecked(event, IConfigurationElementConstants.DEBUG_CONTEXT); if (!(o instanceof ISelection)) { throw new ExecutionException("Incorrect type for " //$NON-NLS-1$ + IConfigurationElementConstants.DEBUG_CONTEXT + " found while executing " //$NON-NLS-1$ + event.getCommand().getId() + ", expected " + ISelection.class.getName() //$NON-NLS-1$ + " found " + o.getClass().getName()); //$NON-NLS-1$ } return (ISelection) o; } }