Debug model presentation

Since there is a generic, uniform model for debug elements in the platform, it's possible to provide a starting point for implementing a debugger UI. The heart of the debugger UI support is the debug model presentation (IDebugModelPresentation). The debug model presentation is responsible for providing labels, images, and editors associated with specific debug elements.

Plug-ins that define their own debug model typically provide a debug model presentation for displaying debug elements in the model. This is accomplished using the org.eclipse.debug.ui.debugModelPresentations extension point. This extension point allows an implementation of IDebugModelPresentation to be associated with the identifier of a particular debug model.

Recall that debug model elements know the id of their originating debug model. This means that given any debug element, the debug platform can obtain the id of the debug model and then query the extension registry for any corresponding debug model presentations.

The markup for adding a debug model presentation looks like this:

<extension point = "org.eclipse.debug.ui.debugModelPresentations"> 
             class = "org.eclipse.jdt.internal.debug.ui.JDIModelPresentation"
             id = "org.eclipse.jdt.debug"
             detailsViewerConfiguration = "org.eclipse.jdt.internal.debug.ui.display.DetailsViewerConfiguration">

An optional detailsViewerConfiguration can be specified in addition to the debug model presentation. The details viewer must extend the JFace SourceViewerConfiguration class. The meaning of "details" is interpreted by the debug model. The details are computed by the debug model presentation and passed to the details viewer. For example, the Java debugger uses the details viewer to show code assist in the variables view when expressions are evaluated.

Implementors of IDebugModelPresentation may also implement IDebugEditorPresentation when more control is needed over the editor that is displaying source code for a stack frame. Implementors may control the editor's position or the annotations in the source.