Community
Participate
Working Groups
As part of bug 154135, we need to make the debug context and debug command adapters API in 3.3.
For a start, I've refactored the provisional 3.2 "action adapters" (such as IAsynchronousStepAdapter), into "commands". The new commands are: IDisconnectCommand IDropToFrameCommand IResumeCommand IStepIntoCommand IStepOverCommand IStepReturnCommand ISuspendCommand ITerminateCommand This generalizes the commands to all have the same interface of "execute" and "canExecute". I.e - check if the command can be performed, and perform it. Rather than having each action update its enablement as the context changes, the context service performs command updating after context change notification, such that all interested parties in a particular command enablement are coalesced. This reduces the 32 (or so) enablement jobs to 8ish. Should be more efficient.
Created attachment 51980 [details] patch current work in progress
I tried the patch and it works flawlessly on Linux....I am mildly amused....
Created attachment 52040 [details] patch updated patch - all actions are converted to the command format.
Released debug context API to HEAD. See new package: org.eclipse.debug.ui.contexts The IDebugContextManager is available from: DebugUITools.getDebugContextManager() The API is slightly changed from the provisional API to be more extensible. A context listener is passed a context event rather than a part/selection. The event provides access to the selection (context), context provider, and a bit mask of flags indicating how the context has changed.
Released new API package org.eclipse.debug.ui.commands that defines the APIs for common debug commands. Actions in the debug platform delegate to the commands for enablement and execution of a command. API for commands and context service are now "complete" (in the sense that the provisional API is now public and subject to change over the 3.3 release). Note that the two interfaces that I can see "moving" are IStatusMonitor and IBooleanStatusMonitor. These are general interfaces that are also used in the viewer flexible hierarchy implementation (which is not yet public API). Depending on where the viewer implementation ends up (i.e. JFace or in the debug platform), these interfaces may move to a new package or plug-in during the 3.3 time frame.
Fixed. Please open new bugs as required. Please verify, Mike.
verified