Debug Framework Tutorials
For a list of all debug related tutorials see Debug Framework Tutorials Overview.
Source code for this tutorial is available on github as a single zip archive, as a Team Project Set or you can browse the files online.
Step 1: Allowing for editing and trigger update
First variables need to support editing. Then the variables view will automatically provide a text input box on the value field once clicked by the user. This is also a limitation: editing variables requires the framework to interpret an input string and process it accordingly to the target language.
The relevant changes for the TextVariable class are shown below:
public class TextVariable extends TextDebugElement implements IVariable { @Override public void setValue(String expression) { getDebugTarget().fireModelEvent(new ChangeVariableRequest(getName(), expression)); } @Override public boolean supportsValueModification() { return true; } @Override public boolean verifyValue(String expression) throws DebugException { return true; } }verifyValue(String) and setValue(String) are used by the debug framework when a user tries to edit a variable in the UI. We do not need to update the value yet, but simply trigger an event to update the variable in the debugger.
Step 2: Variable update & refresh
As our primitive interpreter accepts any kind of text variables there is nothing which can go wrong here. Instead of sending an update event for the changed variable we simply use the already existing VariablesEvent to force a refresh of all variables of the current TextStackFrame:
public class TextDebugger implements IDebugger, IEventProcessor { @Override public void handleEvent(final IDebugEvent event) { [...] } else if (event instanceof ChangeVariableRequest) { fInterpreter.getVariables().put(((ChangeVariableRequest) event).getName(), ((ChangeVariableRequest) event).getContent()); fireEvent(new VariablesEvent(fInterpreter.getVariables())); } } }
No comments:
Post a Comment