/******************************************************************************* * Copyright (c) 2005, 2006 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 * which accompanies this distribution, and is available at * https://www.eclipse.org/legal/epl-2.0/ * * SPDX-License-Identifier: EPL-2.0 * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.debug.ui; import org.eclipse.debug.core.model.IStackFrame; import org.eclipse.jface.text.source.Annotation; import org.eclipse.swt.graphics.Image; import org.eclipse.ui.IEditorPart; /** * A debug model presentation may implement this interface to override standard * annotations used to display instruction pointers for stack frames. *

* A client has several options when overriding default instruction pointer * annotations, and the debug platform uses the following prioritized order when * computing an annotation for a stack frame. *

*
    *
  1. Specify the annotation object to use. This is done by returning a * non-null value from * getInstructionPointerAnnotation(..).
  2. *
  3. Specify an annotationType extension to use. This is done by * returning a non-null value from * getInstructionPointerAnnotationType(..). When specified, the * annotation type controls the image displayed via its associated * markerAnnotationSpecification.
  4. *
  5. Specify the image to use. This is done by returning a * non-null value from * getInstructionPointerImage(..).
  6. *
*

* Additionally, when specifying an annotation type or image the text for the * instruction pointer may be specified by returning a non-null * value from getInstructionPointerText(..). *

*

* These methods are called when the debugger has opened an editor to display * source for the given stack frame. The image will be positioned based on stack * frame line number and character ranges. *

*

* By default, the debug platform uses different annotations for top stack * frames and non-top stack frames in a thread. The default platform annotations * are contributed as annotationType extensions with the * identifiers * IDebugUIConstants.ANNOTATION_INSTRUCTION_POINTER_CURRENT and * IDebugUIConstants.ANNOTAION_INSTRUCTION_POINTER_SECONDARY. *

*

* Clients implementing a debug model presentation may also implement this * interface. *

* * @since 3.2 */ public interface IInstructionPointerPresentation extends IDebugModelPresentation { /** * Returns an annotation used for the specified stack frame in the specified * editor, or null if a default annotation should be used. * * @param editorPart the editor the debugger has opened * @param frame the stack frame for which the debugger is displaying * source * @return annotation or null */ Annotation getInstructionPointerAnnotation(IEditorPart editorPart, IStackFrame frame); /** * Returns an identifier of a org.eclipse.ui.editors.annotationTypes extension used for * the specified stack frame in the specified editor, or null if a default annotation * should be used. * * @param editorPart the editor the debugger has opened * @param frame the stack frame for which the debugger is displaying * source * @return annotation type identifier or null */ String getInstructionPointerAnnotationType(IEditorPart editorPart, IStackFrame frame); /** * Returns the instruction pointer image used for the specified stack frame in the specified * editor, or null if a default image should be used. *

* By default, the debug platform uses different images for top stack * frames and non-top stack frames in a thread. *

* @param editorPart the editor the debugger has opened * @param frame the stack frame for which the debugger is displaying * source * @return image or null */ Image getInstructionPointerImage(IEditorPart editorPart, IStackFrame frame); /** * Returns the text to associate with the instruction pointer annotation used for the * specified stack frame in the specified editor, or null if a default * message should be used. *

* By default, the debug platform uses different images for top stack * frames and non-top stack frames in a thread. *

* @param editorPart the editor the debugger has opened * @param frame the stack frame for which the debugger is displaying * source * @return message or null */ String getInstructionPointerText(IEditorPart editorPart, IStackFrame frame); }