diff options
Diffstat (limited to 'dsf/org.eclipse.cdt.examples.dsf.pda.ui/src/org/eclipse/cdt/examples/dsf/pda/ui/breakpoints/PDABreakpointAdapter.java')
-rw-r--r-- | dsf/org.eclipse.cdt.examples.dsf.pda.ui/src/org/eclipse/cdt/examples/dsf/pda/ui/breakpoints/PDABreakpointAdapter.java | 178 |
1 files changed, 92 insertions, 86 deletions
diff --git a/dsf/org.eclipse.cdt.examples.dsf.pda.ui/src/org/eclipse/cdt/examples/dsf/pda/ui/breakpoints/PDABreakpointAdapter.java b/dsf/org.eclipse.cdt.examples.dsf.pda.ui/src/org/eclipse/cdt/examples/dsf/pda/ui/breakpoints/PDABreakpointAdapter.java index 28cab6385e3..26e89118a42 100644 --- a/dsf/org.eclipse.cdt.examples.dsf.pda.ui/src/org/eclipse/cdt/examples/dsf/pda/ui/breakpoints/PDABreakpointAdapter.java +++ b/dsf/org.eclipse.cdt.examples.dsf.pda.ui/src/org/eclipse/cdt/examples/dsf/pda/ui/breakpoints/PDABreakpointAdapter.java @@ -7,7 +7,7 @@ * https://www.eclipse.org/legal/epl-2.0/ * * SPDX-License-Identifier: EPL-2.0 - * + * * Contributors: * IBM Corporation - initial API and implementation * Bjorn Freeman-Benson - initial API and implementation @@ -33,11 +33,10 @@ import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.texteditor.IDocumentProvider; import org.eclipse.ui.texteditor.ITextEditor; - /** * Adapter to create breakpoints in PDA files. * <p> - * This class is identical to the corresponding in PDA debugger implemented in + * This class is identical to the corresponding in PDA debugger implemented in * org.eclipse.debug.examples.ui. * </p> */ @@ -51,11 +50,12 @@ public class PDABreakpointAdapter implements IToggleBreakpointsTargetExtension { IResource resource = textEditor.getEditorInput().getAdapter(IResource.class); ITextSelection textSelection = (ITextSelection) selection; int lineNumber = textSelection.getStartLine(); - IBreakpoint[] breakpoints = DebugPlugin.getDefault().getBreakpointManager().getBreakpoints(PDAPlugin.ID_PDA_DEBUG_MODEL); + IBreakpoint[] breakpoints = DebugPlugin.getDefault().getBreakpointManager() + .getBreakpoints(PDAPlugin.ID_PDA_DEBUG_MODEL); for (int i = 0; i < breakpoints.length; i++) { IBreakpoint breakpoint = breakpoints[i]; if (breakpoint instanceof ILineBreakpoint && resource.equals(breakpoint.getMarker().getResource())) { - if (((ILineBreakpoint)breakpoint).getLineNumber() == (lineNumber + 1)) { + if (((ILineBreakpoint) breakpoint).getLineNumber() == (lineNumber + 1)) { // remove breakpoint.delete(); return; @@ -67,17 +67,18 @@ public class PDABreakpointAdapter implements IToggleBreakpointsTargetExtension { DebugPlugin.getDefault().getBreakpointManager().addBreakpoint(lineBreakpoint); } } + /* (non-Javadoc) * @see org.eclipse.debug.ui.actions.IToggleBreakpointsTarget#canToggleLineBreakpoints(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection) */ public boolean canToggleLineBreakpoints(IWorkbenchPart part, ISelection selection) { return getEditor(part) != null; } - + /** * Returns the editor being used to edit a PDA file, associated with the * given part, or <code>null</code> if none. - * + * * @param part workbench part * @return the editor being used to edit a PDA file, associated with the * given part, or <code>null</code> if none @@ -93,39 +94,42 @@ public class PDABreakpointAdapter implements IToggleBreakpointsTargetExtension { } } } - return null; + return null; } - + /* (non-Javadoc) * @see org.eclipse.debug.ui.actions.IToggleBreakpointsTarget#toggleMethodBreakpoints(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection) */ public void toggleMethodBreakpoints(IWorkbenchPart part, ISelection selection) throws CoreException { } + /* (non-Javadoc) * @see org.eclipse.debug.ui.actions.IToggleBreakpointsTarget#canToggleMethodBreakpoints(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection) */ public boolean canToggleMethodBreakpoints(IWorkbenchPart part, ISelection selection) { return false; } + /* (non-Javadoc) * @see org.eclipse.debug.ui.actions.IToggleBreakpointsTarget#toggleWatchpoints(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection) */ public void toggleWatchpoints(IWorkbenchPart part, ISelection selection) throws CoreException { - String[] variableAndFunctionName = getVariableAndFunctionName(part, selection); - if (variableAndFunctionName != null && part instanceof ITextEditor && selection instanceof ITextSelection) { - ITextEditor editorPart = (ITextEditor)part; - int lineNumber = ((ITextSelection)selection).getStartLine(); - IResource resource = editorPart.getEditorInput().getAdapter(IResource.class); - String var = variableAndFunctionName[0]; - String fcn = variableAndFunctionName[1]; - // look for existing watchpoint to delete - IBreakpoint[] breakpoints = DebugPlugin.getDefault().getBreakpointManager().getBreakpoints(PDAPlugin.ID_PDA_DEBUG_MODEL); + String[] variableAndFunctionName = getVariableAndFunctionName(part, selection); + if (variableAndFunctionName != null && part instanceof ITextEditor && selection instanceof ITextSelection) { + ITextEditor editorPart = (ITextEditor) part; + int lineNumber = ((ITextSelection) selection).getStartLine(); + IResource resource = editorPart.getEditorInput().getAdapter(IResource.class); + String var = variableAndFunctionName[0]; + String fcn = variableAndFunctionName[1]; + // look for existing watchpoint to delete + IBreakpoint[] breakpoints = DebugPlugin.getDefault().getBreakpointManager() + .getBreakpoints(PDAPlugin.ID_PDA_DEBUG_MODEL); for (int i = 0; i < breakpoints.length; i++) { IBreakpoint breakpoint = breakpoints[i]; if (breakpoint instanceof PDAWatchpoint && resource.equals(breakpoint.getMarker().getResource())) { - PDAWatchpoint watchpoint = (PDAWatchpoint)breakpoint; - String otherVar = watchpoint.getVariableName(); - String otherFcn = watchpoint.getFunctionName(); + PDAWatchpoint watchpoint = (PDAWatchpoint) breakpoint; + String otherVar = watchpoint.getVariableName(); + String otherFcn = watchpoint.getFunctionName(); if (otherVar.equals(var) && otherFcn.equals(fcn)) { breakpoint.delete(); return; @@ -134,95 +138,97 @@ public class PDABreakpointAdapter implements IToggleBreakpointsTargetExtension { } // create watchpoint PDAWatchpoint watchpoint = new PDAWatchpoint(resource, lineNumber + 1, fcn, var, true, true); - DebugPlugin.getDefault().getBreakpointManager().addBreakpoint(watchpoint); - } + DebugPlugin.getDefault().getBreakpointManager().addBreakpoint(watchpoint); + } } + /* (non-Javadoc) * @see org.eclipse.debug.ui.actions.IToggleBreakpointsTarget#canToggleWatchpoints(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection) */ public boolean canToggleWatchpoints(IWorkbenchPart part, ISelection selection) { return getVariableAndFunctionName(part, selection) != null; } - + /** * Returns the variable and function names at the current line, or <code>null</code> if none. - * + * * @param part text editor * @param selection text selection * @return the variable and function names at the current line, or <code>null</code> if none. * The array has two elements, the first is the variable name, the second is the function name. */ private String[] getVariableAndFunctionName(IWorkbenchPart part, ISelection selection) { - ITextEditor editor = getEditor(part); - if (editor != null && selection instanceof ITextSelection) { - ITextSelection textSelection = (ITextSelection) selection; - IDocumentProvider documentProvider = editor.getDocumentProvider(); - try { - documentProvider.connect(this); - IDocument document = documentProvider.getDocument(editor.getEditorInput()); - IRegion region = document.getLineInformationOfOffset(textSelection.getOffset()); - String string = document.get(region.getOffset(), region.getLength()).trim(); - if (string.startsWith("var ")) { - String varName = string.substring(4).trim(); - String fcnName = getFunctionName(document, varName, document.getLineOfOffset(textSelection.getOffset())); - return new String[] {varName, fcnName}; - } - } catch (CoreException e) { - } catch (BadLocationException e) { - } finally { - documentProvider.disconnect(this); - } - } - return null; + ITextEditor editor = getEditor(part); + if (editor != null && selection instanceof ITextSelection) { + ITextSelection textSelection = (ITextSelection) selection; + IDocumentProvider documentProvider = editor.getDocumentProvider(); + try { + documentProvider.connect(this); + IDocument document = documentProvider.getDocument(editor.getEditorInput()); + IRegion region = document.getLineInformationOfOffset(textSelection.getOffset()); + String string = document.get(region.getOffset(), region.getLength()).trim(); + if (string.startsWith("var ")) { + String varName = string.substring(4).trim(); + String fcnName = getFunctionName(document, varName, + document.getLineOfOffset(textSelection.getOffset())); + return new String[] { varName, fcnName }; + } + } catch (CoreException e) { + } catch (BadLocationException e) { + } finally { + documentProvider.disconnect(this); + } + } + return null; } - + /** * Returns the name of the function containing the given variable defined at the given * line number in the specified document. - * + * * @param document PDA source file * @param varName variable name * @param line line numbner at which the variable is defined * @return name of function defining the variable */ private String getFunctionName(IDocument document, String varName, int line) { - // This is a simple guess at the function name - look for the labels preceeding - // the variable definition, and then see if there are any 'calls' to that - // label. If none, assumet the variable is in the "_main_" function - String source = document.get(); - int lineIndex = line - 1; - while (lineIndex >= 0) { - try { - IRegion information = document.getLineInformation(lineIndex); - String lineText = document.get(information.getOffset(), information.getLength()); - if (lineText.startsWith(":")) { - String label = lineText.substring(1); - if (source.indexOf("call " + label) >= 0) { - return label; - } - } - lineIndex--; - } catch (BadLocationException e) { - } - } - return "_main_"; + // This is a simple guess at the function name - look for the labels preceeding + // the variable definition, and then see if there are any 'calls' to that + // label. If none, assumet the variable is in the "_main_" function + String source = document.get(); + int lineIndex = line - 1; + while (lineIndex >= 0) { + try { + IRegion information = document.getLineInformation(lineIndex); + String lineText = document.get(information.getOffset(), information.getLength()); + if (lineText.startsWith(":")) { + String label = lineText.substring(1); + if (source.indexOf("call " + label) >= 0) { + return label; + } + } + lineIndex--; + } catch (BadLocationException e) { + } + } + return "_main_"; + } + + /* (non-Javadoc) + * @see org.eclipse.debug.ui.actions.IToggleBreakpointsTargetExtension#toggleBreakpoints(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection) + */ + public void toggleBreakpoints(IWorkbenchPart part, ISelection selection) throws CoreException { + if (canToggleWatchpoints(part, selection)) { + toggleWatchpoints(part, selection); + } else { + toggleLineBreakpoints(part, selection); + } + } + + /* (non-Javadoc) + * @see org.eclipse.debug.ui.actions.IToggleBreakpointsTargetExtension#canToggleBreakpoints(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection) + */ + public boolean canToggleBreakpoints(IWorkbenchPart part, ISelection selection) { + return canToggleLineBreakpoints(part, selection) || canToggleWatchpoints(part, selection); } - - /* (non-Javadoc) - * @see org.eclipse.debug.ui.actions.IToggleBreakpointsTargetExtension#toggleBreakpoints(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection) - */ - public void toggleBreakpoints(IWorkbenchPart part, ISelection selection) throws CoreException { - if (canToggleWatchpoints(part, selection)) { - toggleWatchpoints(part, selection); - } else { - toggleLineBreakpoints(part, selection); - } - } - - /* (non-Javadoc) - * @see org.eclipse.debug.ui.actions.IToggleBreakpointsTargetExtension#canToggleBreakpoints(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection) - */ - public boolean canToggleBreakpoints(IWorkbenchPart part, ISelection selection) { - return canToggleLineBreakpoints(part, selection) || canToggleWatchpoints(part, selection); - } } |