diff --git a/debug/org.eclipse.cdt.debug.core/ChangeLog b/debug/org.eclipse.cdt.debug.core/ChangeLog index 978cffd19e8..041b1cfd536 100644 --- a/debug/org.eclipse.cdt.debug.core/ChangeLog +++ b/debug/org.eclipse.cdt.debug.core/ChangeLog @@ -1,3 +1,23 @@ +2004-04-12 Mikhail Khodjaiants + Implementing retargettable breakpoint related actions. + * CDebugModel.java + * CDIDebugModel.java + * ICAddressBreakpoint.java + * ICBreakpoint.java + * ICFunctionBreakpoint.java + * ICLineBreakpoint.java + * ICWatchpoint.java + * CBreakpointManager.java + * CDebugUtils.java + * BreakpointMessages.properties + * BreakpointMessages.java + * CAddressBreakpoint.java + * CBreakpoint.java + * CFunctionBreakpoint.java + * CLineBreakpoint.java + * CWatchpoint.java + * plugin.xml + 2004-04-11 Mikhail Khodjaiants Stack frame should provide an adapter for IRunToLine. * CStackFrame.java diff --git a/debug/org.eclipse.cdt.debug.core/plugin.xml b/debug/org.eclipse.cdt.debug.core/plugin.xml index 58a1379566e..e3965fb0711 100644 --- a/debug/org.eclipse.cdt.debug.core/plugin.xml +++ b/debug/org.eclipse.cdt.debug.core/plugin.xml @@ -43,6 +43,9 @@ + + + *
  • Failure creating underlying marker. The exception's status contains + * the underlying exception responsible for the failure.
  • + */ + public static ICLineBreakpoint createLineBreakpoint( String sourceHandle, + IResource resource, + int lineNumber, + boolean enabled, + int ignoreCount, + String condition, + boolean register ) throws CoreException { + HashMap attributes = new HashMap( 10 ); + attributes.put( IBreakpoint.ID, getPluginIdentifier() ); + attributes.put( IMarker.LINE_NUMBER, new Integer( lineNumber ) ); + attributes.put( IBreakpoint.ENABLED, new Boolean( enabled ) ); + attributes.put( ICBreakpoint.IGNORE_COUNT, new Integer( ignoreCount ) ); + attributes.put( ICBreakpoint.CONDITION, condition ); + attributes.put( ICBreakpoint.SOURCE_HANDLE, sourceHandle ); + return new CLineBreakpoint( resource, attributes, register ); + } + + /** + * Creates and returns an address breakpoint for the source defined by + * the given source handle, at the given address. The marker associated + * with the breakpoint will be created on the specified resource. + * + * @param sourceHandle the handle to the breakpoint source + * @param resource the resource on which to create the associated breakpoint marker + * @param address the address on which the breakpoint is set + * @param enabled whether to enable or disable this breakpoint + * @param ignoreCount the number of times this breakpoint will be ignored + * @param condition the breakpoint condition + * @param register whether to add this breakpoint to the breakpoint manager + * @return an address breakpoint + * @throws CoreException if this method fails. Reasons include: + */ + public static ICAddressBreakpoint createAddressBreakpoint( String sourceHandle, + IResource resource, + long address, + boolean enabled, + int ignoreCount, + String condition, + boolean register ) throws CoreException { + HashMap attributes = new HashMap( 10 ); + attributes.put( IBreakpoint.ID, getPluginIdentifier() ); + attributes.put( IMarker.CHAR_START, new Integer( 0 ) ); + attributes.put( IMarker.CHAR_END, new Integer( 0 ) ); + attributes.put( IMarker.LINE_NUMBER, new Integer( -1 ) ); + attributes.put( IMarker.LINE_NUMBER, new Integer( -1 ) ); + attributes.put( ICAddressBreakpoint.ADDRESS, Long.toString( address ) ); + attributes.put( IBreakpoint.ENABLED, new Boolean( enabled ) ); + attributes.put( ICBreakpoint.IGNORE_COUNT, new Integer( ignoreCount ) ); + attributes.put( ICBreakpoint.CONDITION, condition ); + attributes.put( ICBreakpoint.SOURCE_HANDLE, sourceHandle ); + return new CAddressBreakpoint( resource, attributes, register ); + } + + /** + * Creates and returns a watchpoint for the source defined by + * the given source handle, at the given expression. The marker associated + * with the watchpoint will be created on the specified resource. + * + * @param sourceHandle the handle to the watchpoint source + * @param resource the resource on which to create the associated watchpoint marker + * @param writeAccess whether this is write watchpoint + * @param readAccess whether this is read watchpoint + * @param expression the expression on which the watchpoint is set + * @param enabled whether to enable or disable this breakpoint + * @param ignoreCount the number of times this breakpoint will be ignored + * @param condition the breakpoint condition + * @param register whether to add this breakpoint to the breakpoint manager + * @return a watchpoint + * @throws CoreException if this method fails. Reasons include: + */ + public static ICWatchpoint createWatchpoint( String sourceHandle, + IResource resource, + boolean writeAccess, + boolean readAccess, + String expression, + boolean enabled, + int ignoreCount, + String condition, + boolean register ) throws CoreException { + HashMap attributes = new HashMap( 10 ); + attributes.put( IBreakpoint.ID, getPluginIdentifier() ); + attributes.put( IBreakpoint.ENABLED, new Boolean( enabled ) ); + attributes.put( ICBreakpoint.IGNORE_COUNT, new Integer( ignoreCount ) ); + attributes.put( ICBreakpoint.CONDITION, condition ); + attributes.put( ICBreakpoint.SOURCE_HANDLE, sourceHandle ); + attributes.put( ICWatchpoint.EXPRESSION, expression ); + attributes.put( ICWatchpoint.READ, new Boolean( readAccess ) ); + attributes.put( ICWatchpoint.WRITE, new Boolean( writeAccess ) ); + return new CWatchpoint( resource, attributes, register ); + } + + /** + * Creates and returns a breakpoint for the function defined by + * the given name. The marker associated with the breakpoint will + * be created on the specified resource. + * + * @param sourceHandle the handle to the breakpoint source + * @param resource the resource on which to create the associated breakpoint marker + * @param function the name of the function this breakpoint suspends execution in + * @param charStart the first character index associated with the breakpoint, + * or -1 if unspecified, in the source file in which the breakpoint is set + * @param charEnd the last character index associated with the breakpoint, + * or -1 if unspecified, in the source file in which the breakpoint is set + * @param lineNumber the lineNumber on which the breakpoint is set, or -1 if + * unspecified - line numbers are 1 based, associated with the source file + * in which the breakpoint is set + * @param enabled whether to enable or disable this breakpoint + * @param ignoreCount the number of times this breakpoint will be ignored + * @param condition the breakpoint condition + * @param register whether to add this breakpoint to the breakpoint manager + * @return an address breakpoint + * @throws CoreException if this method fails. Reasons include: + */ + public static ICFunctionBreakpoint createFunctionBreakpoint( String sourceHandle, + IResource resource, + String function, + int charStart, + int charEnd, + int lineNumber, + boolean enabled, + int ignoreCount, + String condition, + boolean register ) throws CoreException { + HashMap attributes = new HashMap( 10 ); + attributes.put( IBreakpoint.ID, getPluginIdentifier() ); + attributes.put( IMarker.CHAR_START, new Integer( charStart ) ); + attributes.put( IMarker.CHAR_END, new Integer( charEnd ) ); + attributes.put( IMarker.LINE_NUMBER, new Integer( lineNumber ) ); + attributes.put( ICFunctionBreakpoint.FUNCTION, function ); + attributes.put( IBreakpoint.ENABLED, new Boolean( enabled ) ); + attributes.put( ICBreakpoint.IGNORE_COUNT, new Integer( ignoreCount ) ); + attributes.put( ICBreakpoint.CONDITION, condition ); + attributes.put( ICBreakpoint.SOURCE_HANDLE, sourceHandle ); + return new CFunctionBreakpoint( resource, attributes, register ); + } + + /** + * Returns the line breakpoint that is already registered with the breakpoint + * manager for a source with the given handle and the given resource at the + * given line number. + * + * @param sourceHandle the source handle + * @param resource the breakpoint resource + * @param lineNumber the line number + * @return the line breakpoint that is already registered with the breakpoint + * manager or null if no such breakpoint is registered + * @exception CoreException if unable to retrieve the associated marker + * attributes (line number). + */ + public static ICLineBreakpoint lineBreakpointExists( String sourceHandle, IResource resource, int lineNumber ) throws CoreException { + String modelId = getPluginIdentifier(); + String markerType = CLineBreakpoint.getMarkerType(); + IBreakpointManager manager = DebugPlugin.getDefault().getBreakpointManager(); + IBreakpoint[] breakpoints = manager.getBreakpoints( modelId ); + for( int i = 0; i < breakpoints.length; i++ ) { + if ( !(breakpoints[i] instanceof ICLineBreakpoint) ) { + continue; + } + ICLineBreakpoint breakpoint = (ICLineBreakpoint)breakpoints[i]; + if ( breakpoint.getMarker().getType().equals( markerType ) ) { + if ( sourceHandle != null && sourceHandle.equals( breakpoint.getSourceHandle() ) ) { + if ( breakpoint.getMarker().getResource().equals( resource ) ) { + if ( breakpoint.getLineNumber() == lineNumber ) { + return breakpoint; + } + } + } + } + } + return null; + } + + /** + * Returns the address breakpoint that is already registered with the breakpoint + * manager for a source with the given handle and the given resource at the + * given address. + * + * @param sourceHandle the source handle + * @param resource the breakpoint resource + * @param address the address + * @return the address breakpoint that is already registered with the breakpoint + * manager or null if no such breakpoint is registered + * @exception CoreException if unable to retrieve the associated marker + * attributes (line number). + */ + public static ICAddressBreakpoint addressBreakpointExists( String sourceHandle, IResource resource, long address ) throws CoreException { + String modelId = getPluginIdentifier(); + String markerType = CAddressBreakpoint.getMarkerType(); + IBreakpointManager manager = DebugPlugin.getDefault().getBreakpointManager(); + IBreakpoint[] breakpoints = manager.getBreakpoints( modelId ); + for( int i = 0; i < breakpoints.length; i++ ) { + if ( !(breakpoints[i] instanceof ICAddressBreakpoint) ) { + continue; + } + ICAddressBreakpoint breakpoint = (ICAddressBreakpoint)breakpoints[i]; + if ( breakpoint.getMarker().getType().equals( markerType ) ) { + if ( sourceHandle != null && sourceHandle.equals( breakpoint.getSourceHandle() ) ) { + if ( breakpoint.getMarker().getResource().equals( resource ) ) { + try { + if ( Long.parseLong( breakpoint.getAddress() ) == address ) { + return breakpoint; + } + } + catch( NumberFormatException e ) { + } + } + } + } + } + return null; + } + + /** + * Returns the watchpoint that is already registered with the breakpoint + * manager for a source with the given handle and the given resource at the + * given expression. + * + * @param sourceHandle the source handle + * @param resource the breakpoint resource + * @param expression the expression + * @return the watchpoint that is already registered with the breakpoint + * manager or null if no such watchpoint is registered + * @exception CoreException if unable to retrieve the associated marker + * attributes (line number). + */ + public static ICWatchpoint watchpointExists( String sourceHandle, IResource resource, String expression ) throws CoreException { + String modelId = getPluginIdentifier(); + String markerType = CWatchpoint.getMarkerType(); + IBreakpointManager manager = DebugPlugin.getDefault().getBreakpointManager(); + IBreakpoint[] breakpoints = manager.getBreakpoints( modelId ); + for( int i = 0; i < breakpoints.length; i++ ) { + if ( !(breakpoints[i] instanceof ICWatchpoint) ) { + continue; + } + ICWatchpoint breakpoint = (ICWatchpoint)breakpoints[i]; + if ( breakpoint.getMarker().getType().equals( markerType ) ) { + if ( sourceHandle != null && sourceHandle.equals( breakpoint.getSourceHandle() ) ) { + if ( breakpoint.getMarker().getResource().equals( resource ) ) { + if ( breakpoint.getExpression().equals( expression ) ) { + return breakpoint; + } + } + } + } + } + return null; + } + + /** + * Returns the function breakpoint that is already registered with the breakpoint + * manager for a source with the given handle and the given resource with the + * given function name. + * + * @param sourceHandle the source handle + * @param resource the breakpoint resource + * @param function the fully qualified function name + * @return the breakpoint that is already registered with the breakpoint + * manager or null if no such breakpoint is registered + * @exception CoreException if unable to retrieve the associated marker + * attributes (line number). + */ + public static ICFunctionBreakpoint functionBreakpointExists( String sourceHandle, IResource resource, String function ) throws CoreException { + String modelId = getPluginIdentifier(); + String markerType = CFunctionBreakpoint.getMarkerType(); + IBreakpointManager manager = DebugPlugin.getDefault().getBreakpointManager(); + IBreakpoint[] breakpoints = manager.getBreakpoints( modelId ); + for( int i = 0; i < breakpoints.length; i++ ) { + if ( !(breakpoints[i] instanceof ICFunctionBreakpoint) ) { + continue; + } + ICFunctionBreakpoint breakpoint = (ICFunctionBreakpoint)breakpoints[i]; + if ( breakpoint.getMarker().getType().equals( markerType ) ) { + if ( sourceHandle != null && sourceHandle.equals( breakpoint.getSourceHandle() ) ) { + if ( breakpoint.getMarker().getResource().equals( resource ) ) { + if ( breakpoint.getFunction() != null && breakpoint.getFunction().equals( function ) ) { + return breakpoint; + } + } + } + } + } + return null; + } } diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/CDebugModel.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/CDebugModel.java index 8175c6f1428..998c64f1090 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/CDebugModel.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/CDebugModel.java @@ -263,287 +263,6 @@ public class CDebugModel return target[0]; } - - /** - * Returns a C/C++ line breakpoint that is already registered with the breakpoint - * manager for a file with the given name at the given line number. - * - * @param fileName fully qualified file name - * @param lineNumber line number - * @return a C/C++ line breakpoint that is already registered with the breakpoint - * manager for a file with the given name at the given line number or null - * if no such breakpoint is registered - * @exception CoreException if unable to retrieve the associated marker - * attributes (line number). - */ - public static ICLineBreakpoint lineBreakpointExists( String fileName, int lineNumber ) throws CoreException - { - String modelId = getPluginIdentifier(); - String markerType = CLineBreakpoint.getMarkerType(); - IBreakpointManager manager = DebugPlugin.getDefault().getBreakpointManager(); - IBreakpoint[] breakpoints = manager.getBreakpoints( modelId ); - for ( int i = 0; i < breakpoints.length; i++ ) - { - if ( !( breakpoints[i] instanceof ICLineBreakpoint ) ) - { - continue; - } - ICLineBreakpoint breakpoint = (ICLineBreakpoint)breakpoints[i]; - if ( breakpoint.getMarker().getType().equals( markerType ) ) - { - if ( breakpoint.getMarker().getResource().getLocation().toOSString().equals( fileName ) ) - { - if ( breakpoint.getLineNumber() == lineNumber ) - { - return breakpoint; - } - } - } - } - return null; - } - - public static ICLineBreakpoint createLineBreakpoint( IResource resource, - int lineNumber, - boolean enabled, - int ignoreCount, - String condition, - boolean add ) throws DebugException - { - HashMap attributes = new HashMap( 10 ); - attributes.put( IBreakpoint.ID, getPluginIdentifier() ); - attributes.put( IMarker.LINE_NUMBER, new Integer( lineNumber ) ); - attributes.put( IBreakpoint.ENABLED, new Boolean( enabled ) ); - attributes.put( ICBreakpoint.IGNORE_COUNT, new Integer( ignoreCount ) ); - attributes.put( ICBreakpoint.CONDITION, condition ); - return new CLineBreakpoint( resource, attributes, add ); - } - - public static ICAddressBreakpoint addressBreakpointExists( IResource resource, long address ) throws CoreException - { - String modelId = getPluginIdentifier(); - String markerType = CAddressBreakpoint.getMarkerType(); - IBreakpointManager manager = DebugPlugin.getDefault().getBreakpointManager(); - IBreakpoint[] breakpoints = manager.getBreakpoints( modelId ); - for ( int i = 0; i < breakpoints.length; i++ ) - { - if ( !( breakpoints[i] instanceof ICAddressBreakpoint ) ) - { - continue; - } - ICAddressBreakpoint breakpoint = (ICAddressBreakpoint)breakpoints[i]; - if ( breakpoint.getMarker().getType().equals( markerType ) ) - { - if ( breakpoint.getMarker().getResource().getLocation().toOSString().equals( resource.getLocation().toOSString() ) ) - { - try - { - if ( Long.parseLong( breakpoint.getAddress() ) == address ) - { - return breakpoint; - } - } - catch( NumberFormatException e ) - { - } - } - } - } - return null; - } - - public static ICAddressBreakpoint createAddressBreakpoint( IResource resource, - long address, - boolean enabled, - int ignoreCount, - String condition, - boolean add ) throws DebugException - { - HashMap attributes = new HashMap( 10 ); - attributes.put( IBreakpoint.ID, getPluginIdentifier() ); - attributes.put( IMarker.CHAR_START, new Integer( 0 ) ); - attributes.put( IMarker.CHAR_END, new Integer( 0 ) ); - attributes.put( IMarker.LINE_NUMBER, new Integer( -1 ) ); - attributes.put( IMarker.LINE_NUMBER, new Integer( -1 ) ); - attributes.put( ICAddressBreakpoint.ADDRESS, Long.toString( address ) ); - attributes.put( IBreakpoint.ENABLED, new Boolean( enabled ) ); - attributes.put( ICBreakpoint.IGNORE_COUNT, new Integer( ignoreCount ) ); - attributes.put( ICBreakpoint.CONDITION, condition ); - return new CAddressBreakpoint( resource, attributes, add ); - } - - public static ICFunctionBreakpoint functionBreakpointExists( IFunction function ) throws CoreException - { - String modelId = getPluginIdentifier(); - String markerType = CFunctionBreakpoint.getMarkerType(); - IBreakpointManager manager = DebugPlugin.getDefault().getBreakpointManager(); - IBreakpoint[] breakpoints = manager.getBreakpoints( modelId ); - for ( int i = 0; i < breakpoints.length; i++ ) - { - if ( !( breakpoints[i] instanceof ICFunctionBreakpoint ) ) - { - continue; - } - ICFunctionBreakpoint breakpoint = (ICFunctionBreakpoint)breakpoints[i]; - if ( breakpoint.getMarker().getType().equals( markerType ) ) - { - if ( breakpoint.getMarker().getResource().equals( CDebugUtils.getFunctionResource( function ) ) ) - { - if ( breakpoint.getFunction() != null && breakpoint.getFunction().equals( CDebugUtils.getFunctionName( function ) ) ) - { - return breakpoint; - } - } - } - } - return null; - } - - public static ICFunctionBreakpoint createFunctionBreakpoint( IFunction function, - boolean enabled, - int ignoreCount, - String condition, - boolean add ) throws DebugException - { - HashMap attributes = new HashMap( 10 ); - attributes.put( IBreakpoint.ID, getPluginIdentifier() ); - int lineNumber = -1; - int charStart = -1; - int charEnd = -1; - try - { - ISourceRange sourceRange = function.getSourceRange(); - if ( sourceRange != null ) - { - charStart = sourceRange.getStartPos(); - charEnd = charStart + sourceRange.getLength(); - // for now - if ( charEnd == 0 ) - lineNumber = sourceRange.getStartLine(); - } - } - catch( CModelException e ) - { - CDebugCorePlugin.log( e.getStatus() ); - } - attributes.put( IMarker.CHAR_START, new Integer( charStart ) ); - attributes.put( IMarker.CHAR_END, new Integer( charEnd ) ); - attributes.put( IMarker.LINE_NUMBER, new Integer( lineNumber ) ); - attributes.put( ICFunctionBreakpoint.FUNCTION, CDebugUtils.getFunctionName( function ) ); - attributes.put( IBreakpoint.ENABLED, new Boolean( enabled ) ); - attributes.put( ICBreakpoint.IGNORE_COUNT, new Integer( ignoreCount ) ); - attributes.put( ICBreakpoint.CONDITION, condition ); - return new CFunctionBreakpoint( CDebugUtils.getFunctionResource( function ), attributes, add ); - } - - public static ICFunctionBreakpoint methodBreakpointExists( IMethod method ) throws CoreException - { - String modelId = getPluginIdentifier(); - String markerType = CFunctionBreakpoint.getMarkerType(); - IBreakpointManager manager = DebugPlugin.getDefault().getBreakpointManager(); - IBreakpoint[] breakpoints = manager.getBreakpoints( modelId ); - for ( int i = 0; i < breakpoints.length; i++ ) - { - if ( !( breakpoints[i] instanceof ICFunctionBreakpoint ) ) - { - continue; - } - ICFunctionBreakpoint breakpoint = (ICFunctionBreakpoint)breakpoints[i]; - if ( breakpoint.getMarker().getType().equals( markerType ) ) - { - if ( breakpoint.getMarker().getResource().equals( CDebugUtils.getMethodResource( method ) ) ) - { - if ( breakpoint.getFunction() != null && breakpoint.getFunction().equals( CDebugUtils.getMethodQualifiedName( method ) ) ) - { - return breakpoint; - } - } - } - } - return null; - } - - public static ICFunctionBreakpoint createMethodBreakpoint( IMethod method, - boolean enabled, - int ignoreCount, - String condition, - boolean add ) throws DebugException - { - HashMap attributes = new HashMap( 10 ); - attributes.put( IBreakpoint.ID, getPluginIdentifier() ); - int lineNumber = -1; - int charStart = -1; - int charEnd = -1; - try - { - ISourceRange sourceRange = method.getSourceRange(); - if ( sourceRange != null ) - { - charStart = sourceRange.getStartPos(); - charEnd = charStart + sourceRange.getLength(); - // for now - if ( charEnd == 0 ) - lineNumber = sourceRange.getStartLine(); - } - } - catch( CModelException e ) - { - CDebugCorePlugin.log( e.getStatus() ); - } - attributes.put( IMarker.CHAR_START, new Integer( charStart ) ); - attributes.put( IMarker.CHAR_END, new Integer( charEnd ) ); - attributes.put( IMarker.LINE_NUMBER, new Integer( lineNumber ) ); - attributes.put( ICFunctionBreakpoint.FUNCTION, CDebugUtils.getMethodQualifiedName( method ) ); - attributes.put( IBreakpoint.ENABLED, new Boolean( enabled ) ); - attributes.put( ICBreakpoint.IGNORE_COUNT, new Integer( ignoreCount ) ); - attributes.put( ICBreakpoint.CONDITION, condition ); - return new CFunctionBreakpoint( CDebugUtils.getMethodResource( method ), attributes, add ); - } - - public static ICWatchpoint watchpointExists( IResource resource, boolean write, boolean read, String expression ) throws CoreException - { - String modelId = getPluginIdentifier(); - String markerType = CWatchpoint.getMarkerType(); - IBreakpointManager manager = DebugPlugin.getDefault().getBreakpointManager(); - IBreakpoint[] breakpoints = manager.getBreakpoints( modelId ); - for ( int i = 0; i < breakpoints.length; i++ ) - { - if ( !( breakpoints[i] instanceof ICWatchpoint ) ) - { - continue; - } - ICWatchpoint breakpoint = (ICWatchpoint)breakpoints[i]; - if ( breakpoint.getMarker().getType().equals( markerType )&& - breakpoint.getMarker().getResource().equals( resource ) && - breakpoint.isWriteType() == write && - breakpoint.isReadType() == read && - breakpoint.getExpression().equals( expression ) ) - { - return breakpoint; - } - } - return null; -} - - public static ICWatchpoint createWatchpoint( IResource resource, - boolean writeAccess, - boolean readAccess, - String expression, - boolean enabled, - int ignoreCount, - String condition, - boolean add ) throws DebugException - { - HashMap attributes = new HashMap( 10 ); - attributes.put( IBreakpoint.ID, getPluginIdentifier() ); - attributes.put( IBreakpoint.ENABLED, new Boolean( enabled ) ); - attributes.put( ICBreakpoint.IGNORE_COUNT, new Integer( ignoreCount ) ); - attributes.put( ICBreakpoint.CONDITION, condition ); - attributes.put( ICWatchpoint.EXPRESSION, expression ); - attributes.put( ICWatchpoint.READ, new Boolean( readAccess ) ); - attributes.put( ICWatchpoint.WRITE, new Boolean( writeAccess ) ); - return new CWatchpoint( resource, attributes, add ); - } public static IExpression createExpression( IDebugTarget target, String text ) throws DebugException { diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/ICBreakpointManager.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/ICBreakpointManager.java deleted file mode 100644 index 3133b541413..00000000000 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/ICBreakpointManager.java +++ /dev/null @@ -1,19 +0,0 @@ -/* - *(c) Copyright QNX Software Systems Ltd. 2002. - * All Rights Reserved. - * - */ -package org.eclipse.cdt.debug.core; - -import org.eclipse.cdt.debug.core.model.ICBreakpoint; -import org.eclipse.core.runtime.IAdaptable; - -/** - * Enter type comment. - * - * @since: Jan 7, 2003 - */ -public interface ICBreakpointManager extends IAdaptable -{ - long getBreakpointAddress( ICBreakpoint breakpoint ); -} diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/ICAddressBreakpoint.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/ICAddressBreakpoint.java index 3c310252706..58ad3710cd2 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/ICAddressBreakpoint.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/ICAddressBreakpoint.java @@ -1,22 +1,24 @@ -/* - *(c) Copyright QNX Software Systems Ltd. 2002. - * All Rights Reserved. +/********************************************************************** + * Copyright (c) 2004 QNX Software Systems and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html * - */ + * Contributors: + * QNX Software Systems - Initial API and implementation + ***********************************************************************/ package org.eclipse.cdt.debug.core.model; import org.eclipse.core.runtime.CoreException; /** - * - * A breakpoint that suspend execution when a particular address is reached. - * - * @since Aug 21, 2002 + * A breakpoint that suspend the execution when a particular address is reached. */ -public interface ICAddressBreakpoint extends ICLineBreakpoint -{ +public interface ICAddressBreakpoint extends ICLineBreakpoint { + /** - * Breakpoint attribute storing the address this breakpoint suspends + * Breakpoint attribute storing the address this breakpoint suspends * execution at (value "org.eclipse.cdt.debug.core.address"). * This attribute is a String. */ @@ -26,8 +28,8 @@ public interface ICAddressBreakpoint extends ICLineBreakpoint * Returns the address this breakpoint suspends execution at. * * @return the address this breakpoint suspends execution at - * @exception CoreException if unable to access the property - * on this breakpoint's underlying marker + * @exception CoreException if unable to access the property on this breakpoint's + * underlying marker */ public String getAddress() throws CoreException; @@ -35,8 +37,8 @@ public interface ICAddressBreakpoint extends ICLineBreakpoint * Sets the address this breakpoint suspends execution at. * * @param address the address this breakpoint suspends execution at - * @exception CoreException if unable to access the property - * on this breakpoint's underlying marker + * @exception CoreException if unable to access the property on this breakpoint's + * underlying marker */ public void setAddress( String address ) throws CoreException; -} +} \ No newline at end of file diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/ICBreakpoint.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/ICBreakpoint.java index db19c677d8e..a62e410ffdc 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/ICBreakpoint.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/ICBreakpoint.java @@ -1,64 +1,72 @@ -/* - *(c) Copyright QNX Software Systems Ltd. 2002. - * All Rights Reserved. +/********************************************************************** + * Copyright (c) 2004 QNX Software Systems and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html * - */ - + * Contributors: + * QNX Software Systems - Initial API and implementation + ***********************************************************************/ package org.eclipse.cdt.debug.core.model; import org.eclipse.core.runtime.CoreException; import org.eclipse.debug.core.model.IBreakpoint; /** - * * A breakpoint specific to the C/C++ debug model. A C/C++ breakpoint supports: * - * - * @since Aug 21, 2002 */ -public interface ICBreakpoint extends IBreakpoint -{ +public interface ICBreakpoint extends IBreakpoint { + /** - * Breakpoint attribute storing the number of debug targets a - * breakpoint is installed in (value "org.eclipse.cdt.debug.core.installCount"). - * This attribute is a int. + * Breakpoint attribute storing the number of debug targets a breakpoint is + * installed in (value "org.eclipse.cdt.debug.core.installCount"). + * This attribute is an int. */ public static final String INSTALL_COUNT = "org.eclipse.cdt.debug.core.installCount"; //$NON-NLS-1$ /** - * Breakpoint attribute storing the conditional expression - * associated with this breakpoint (value "org.eclipse.cdt.debug.core.condition"). + * Breakpoint attribute storing the conditional expression associated with + * this breakpoint (value "org.eclipse.cdt.debug.core.condition"). * This attribute is a String. */ public static final String CONDITION = "org.eclipse.cdt.debug.core.condition"; //$NON-NLS-1$ /** - * Breakpoint attribute storing a breakpoint's ignore count value - * (value "org.eclipse.cdt.debug.core.ignoreCount"). - * This attribute is a int. + * Breakpoint attribute storing a breakpoint's ignore count value (value + * "org.eclipse.cdt.debug.core.ignoreCount"). This attribute + * is an int. */ public static final String IGNORE_COUNT = "org.eclipse.cdt.debug.core.ignoreCount"; //$NON-NLS-1$ /** - * Breakpoint attribute storing an identifier of the thread this - * breakpoint is restricted in (value "org.eclipse.cdt.debug.core.threadId"). + * Breakpoint attribute storing an identifier of the thread this breakpoint + * is restricted in (value "org.eclipse.cdt.debug.core.threadId"). * This attribute is a String. */ public static final String THREAD_ID = "org.eclipse.cdt.debug.core.threadId"; //$NON-NLS-1$ /** - * Returns whether this breakpoint is installed in at least - * one debug target. + * Breakpoint attribute storing a source handle this breakpoint + * is set in (value "org.eclipse.cdt.debug.core.sourceHandle"). + * This attribute is a String. + */ + public static final String SOURCE_HANDLE = "org.eclipse.cdt.debug.core.sourceHandle"; //$NON-NLS-1$ + + /** + * Returns whether this breakpoint is installed in at least one debug + * target. * * @return whether this breakpoint is installed - * @exception CoreException if unable to access the property - * on this breakpoint's underlying marker + * @exception CoreException if unable to access the property on this breakpoint's + * underlying marker */ public boolean isInstalled() throws CoreException; @@ -66,8 +74,8 @@ public interface ICBreakpoint extends IBreakpoint * Returns whether this breakpoint is conditional. * * @return whether this breakpoint is conditional - * @exception CoreException if unable to access the property - * on this breakpoint's underlying marker + * @exception CoreException if unable to access the property on this breakpoint's + * underlying marker */ public boolean isConditional() throws CoreException; @@ -75,8 +83,8 @@ public interface ICBreakpoint extends IBreakpoint * Returns the conditional expression associated with this breakpoint. * * @return this breakpoint's conditional expression - * @exception CoreException if unable to access the property - * on this breakpoint's underlying marker + * @exception CoreException if unable to access the property on this breakpoint's + * underlying marker */ public String getCondition() throws CoreException; @@ -84,8 +92,8 @@ public interface ICBreakpoint extends IBreakpoint * Sets the condition associated with this breakpoint. * * @param condition the conditional expression - * @exception CoreException if unable to access the property - * on this breakpoint's underlying marker + * @exception CoreException if unable to access the property on this breakpoint's + * underlying marker */ public void setCondition( String condition ) throws CoreException; @@ -93,8 +101,8 @@ public interface ICBreakpoint extends IBreakpoint * Returns the ignore count used by this breakpoint. * * @return the ignore count used by this breakpoint - * @exception CoreException if unable to access the property - * on this breakpoint's underlying marker + * @exception CoreException if unable to access the property on this breakpoint's + * underlying marker */ public int getIgnoreCount() throws CoreException; @@ -102,8 +110,8 @@ public interface ICBreakpoint extends IBreakpoint * Sets the ignore count attribute for this breakpoint. * * @param ignoreCount the new ignore count - * @exception CoreException if unable to access the property - * on this breakpoint's underlying marker + * @exception CoreException if unable to access the property on this breakpoint's + * underlying marker */ public void setIgnoreCount( int ignoreCount ) throws CoreException; @@ -111,18 +119,36 @@ public interface ICBreakpoint extends IBreakpoint * Returns the identifier of the thread this breakpoint is restricted in. * * @return the thread identifier - * @exception CoreException if unable to access the property - * on this breakpoint's underlying marker + * @exception CoreException if unable to access the property on this breakpoint's + * underlying marker */ public String getThreadId() throws CoreException; /** - * Restricts this breakpoint to suspend only in the given thread - * when encounterd in the given thread's target. + * Restricts this breakpoint to suspend only in the given thread when + * encounterd in the given thread's target. * * @param threadId the thread identifier - * @exception CoreException if unable to access the property - * on this breakpoint's underlying marker + * @exception CoreException if unable to access the property on this breakpoint's + * underlying marker */ public void setThreadId( String threadId ) throws CoreException; -} + + /** + * Returns the source handle this breakpoint is set in. + * + * @return the source handle + * @exception CoreException if unable to access the property on this breakpoint's + * underlying marker + */ + public String getSourceHandle() throws CoreException; + + /** + * Sets the source handle of this breakpoint. + * + * @param sourceHandle the source handle + * @exception CoreException if unable to access the property on this breakpoint's + * underlying marker + */ + public void setSourceHandle( String sourceHandle ) throws CoreException; +} \ No newline at end of file diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/ICFunctionBreakpoint.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/ICFunctionBreakpoint.java index 8cd39de5304..53952d05100 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/ICFunctionBreakpoint.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/ICFunctionBreakpoint.java @@ -1,22 +1,24 @@ -/* - *(c) Copyright QNX Software Systems Ltd. 2002. - * All Rights Reserved. +/********************************************************************** + * Copyright (c) 2004 QNX Software Systems and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html * - */ + * Contributors: + * QNX Software Systems - Initial API and implementation + ***********************************************************************/ package org.eclipse.cdt.debug.core.model; import org.eclipse.core.runtime.CoreException; /** - * - * A breakpoint that suspend execution when a function is entered. - * - * @since Aug 21, 2002 + * A breakpoint that suspends the execution when a function is entered. */ -public interface ICFunctionBreakpoint extends ICLineBreakpoint -{ +public interface ICFunctionBreakpoint extends ICLineBreakpoint { + /** - * Breakpoint attribute storing the function this breakpoint suspends + * Breakpoint attribute storing the function this breakpoint suspends * execution at (value "org.eclipse.cdt.debug.core.function"). * This attribute is a String. */ @@ -26,8 +28,8 @@ public interface ICFunctionBreakpoint extends ICLineBreakpoint * Returns the function this breakpoint suspends execution in. * * @return the function this breakpoint suspends execution in - * @exception CoreException if unable to access the property - * on this breakpoint's underlying marker + * @exception CoreException if unable to access the property on this breakpoint's + * underlying marker */ public String getFunction() throws CoreException; @@ -35,10 +37,17 @@ public interface ICFunctionBreakpoint extends ICLineBreakpoint * Sets the function this breakpoint suspends execution in. * * @param function the function this breakpoint suspends execution in - * @exception CoreException if unable to access the property - * on this breakpoint's underlying marker + * @exception CoreException if unable to access the property on this breakpoint's + * underlying marker */ public void setFunction( String function ) throws CoreException; - + + /** + * Returns the source file of the function. + * + * @return the source file of the function + * @throws CoreException if unable to access the property on this breakpoint's + * underlying marker + */ public String getFileName() throws CoreException; -} +} \ No newline at end of file diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/ICLineBreakpoint.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/ICLineBreakpoint.java index c7dfa742d45..d26bbc38c8b 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/ICLineBreakpoint.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/ICLineBreakpoint.java @@ -1,20 +1,21 @@ -/* - *(c) Copyright QNX Software Systems Ltd. 2002. - * All Rights Reserved. +/********************************************************************** + * Copyright (c) 2004 QNX Software Systems and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html * - */ - + * Contributors: + * QNX Software Systems - Initial API and implementation + ***********************************************************************/ package org.eclipse.cdt.debug.core.model; import org.eclipse.debug.core.model.ILineBreakpoint; /** - * - * A breakpoint that suspend execution when a particular line of code + * A breakpoint that suspends the execution when a particular line of code * is reached. - * - * @since Aug 21, 2002 */ -public interface ICLineBreakpoint extends ICBreakpoint, ILineBreakpoint -{ +public interface ICLineBreakpoint extends ICBreakpoint, ILineBreakpoint { + } diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/ICWatchpoint.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/ICWatchpoint.java index f517cb02411..ab3d07f9f7a 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/ICWatchpoint.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/ICWatchpoint.java @@ -1,20 +1,22 @@ -/* - *(c) Copyright QNX Software Systems Ltd. 2002. - * All Rights Reserved. +/********************************************************************** + * Copyright (c) 2004 QNX Software Systems and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html * - */ + * Contributors: + * QNX Software Systems - Initial API and implementation + ***********************************************************************/ package org.eclipse.cdt.debug.core.model; import org.eclipse.core.runtime.CoreException; /** - * * A watchpoint specific to the C/C++ debug model. - * - * @since Sep 4, 2002 */ -public interface ICWatchpoint extends ICBreakpoint -{ +public interface ICWatchpoint extends ICBreakpoint { + /** * Watchpoint attribute storing the expression associated with this * watchpoint (value "org.eclipse.cdt.debug.core.expression"). @@ -33,21 +35,21 @@ public interface ICWatchpoint extends ICBreakpoint * This attribute is a boolean. */ public static final String READ = "org.eclipse.cdt.debug.core.read"; //$NON-NLS-1$ - + /** * Returns whether this watchppoint is a write watchpoint. * * @return whether this watchppoint is a write watchpoint */ boolean isWriteType() throws CoreException; - + /** * Returns whether this watchppoint is a read watchpoint. * * @return whether this watchppoint is a read watchpoint */ boolean isReadType() throws CoreException; - + /** * Returns the watchpoint's expression. * @@ -55,4 +57,4 @@ public interface ICWatchpoint extends ICBreakpoint * @throws CDIException if this method fails. Reasons include: */ String getExpression() throws CoreException; -} +} \ No newline at end of file diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/CBreakpointManager.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/CBreakpointManager.java index 82ae6e15f4e..f27a3e7a93a 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/CBreakpointManager.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/CBreakpointManager.java @@ -1,18 +1,21 @@ -/* - *(c) Copyright QNX Software Systems Ltd. 2002. - * All Rights Reserved. +/********************************************************************** + * Copyright (c) 2004 QNX Software Systems and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html * - */ - + * Contributors: + * QNX Software Systems - Initial API and implementation +***********************************************************************/ package org.eclipse.cdt.debug.internal.core; import java.util.HashMap; import java.util.Set; +import org.eclipse.cdt.debug.core.CDIDebugModel; import org.eclipse.cdt.debug.core.CDebugCorePlugin; -import org.eclipse.cdt.debug.core.CDebugModel; import org.eclipse.cdt.debug.core.CDebugUtils; -import org.eclipse.cdt.debug.core.ICBreakpointManager; import org.eclipse.cdt.debug.core.cdi.CDIException; import org.eclipse.cdt.debug.core.cdi.ICDIBreakpointManager; import org.eclipse.cdt.debug.core.cdi.ICDICondition; @@ -49,14 +52,13 @@ import org.eclipse.debug.core.model.IDebugTarget; import org.eclipse.debug.core.model.ISourceLocator; /** - * Enter type comment. - * - * @since Nov 3, 2003 + * The breakpoint manager manages all breakpoints set to the associated + * debug target. */ -public class CBreakpointManager implements ICBreakpointManager, ICDIEventListener, IAdaptable -{ - public class BreakpointMap - { +public class CBreakpointManager implements ICDIEventListener, IAdaptable { + + private class BreakpointMap { + /** * Maps CBreakpoints to CDI breakpoints. */ @@ -67,73 +69,61 @@ public class CBreakpointManager implements ICBreakpointManager, ICDIEventListene */ private HashMap fCDIBreakpoints; - protected BreakpointMap() - { + protected BreakpointMap() { fCBreakpoints = new HashMap( 10 ); fCDIBreakpoints = new HashMap( 10 ); } - protected synchronized void put( ICBreakpoint breakpoint, ICDIBreakpoint cdiBreakpoint ) - { + protected synchronized void put( ICBreakpoint breakpoint, ICDIBreakpoint cdiBreakpoint ) { fCBreakpoints.put( breakpoint, cdiBreakpoint ); fCDIBreakpoints.put( cdiBreakpoint, breakpoint ); } - protected synchronized ICDIBreakpoint getCDIBreakpoint( ICBreakpoint breakpoint ) - { + protected synchronized ICDIBreakpoint getCDIBreakpoint( ICBreakpoint breakpoint ) { return (ICDIBreakpoint)fCBreakpoints.get( breakpoint ); } - protected synchronized ICBreakpoint getCBreakpoint( ICDIBreakpoint cdiBreakpoint ) - { + protected synchronized ICBreakpoint getCBreakpoint( ICDIBreakpoint cdiBreakpoint ) { return (ICBreakpoint)fCDIBreakpoints.get( cdiBreakpoint ); } - protected void removeCBreakpoint( ICBreakpoint breakpoint ) - { - if ( breakpoint != null ) - { + protected void removeCBreakpoint( ICBreakpoint breakpoint ) { + if ( breakpoint != null ) { ICDIBreakpoint cdiBreakpoint = (ICDIBreakpoint)fCBreakpoints.remove( breakpoint ); if ( cdiBreakpoint != null ) - fCDIBreakpoints.remove( cdiBreakpoint ); + fCDIBreakpoints.remove( cdiBreakpoint ); } } - protected void removeCDIBreakpoint( ICBreakpoint breakpoin, ICDIBreakpoint cdiBreakpoint ) - { - if ( cdiBreakpoint != null ) - { + protected void removeCDIBreakpoint( ICBreakpoint breakpoin, ICDIBreakpoint cdiBreakpoint ) { + if ( cdiBreakpoint != null ) { ICBreakpoint breakpoint = (ICBreakpoint)fCDIBreakpoints.remove( cdiBreakpoint ); if ( breakpoint != null ) - fCBreakpoints.remove( breakpoint ); + fCBreakpoints.remove( breakpoint ); } } - protected ICBreakpoint[] getAllCBreakpoints() - { + protected ICBreakpoint[] getAllCBreakpoints() { Set set = fCBreakpoints.keySet(); - return (ICBreakpoint[])set.toArray( new ICBreakpoint[set.size()]); + return (ICBreakpoint[])set.toArray( new ICBreakpoint[set.size()] ); } - protected ICDIBreakpoint[] getAllCDIBreakpoints() - { + protected ICDIBreakpoint[] getAllCDIBreakpoints() { Set set = fCDIBreakpoints.keySet(); - return (ICDIBreakpoint[])set.toArray( new ICDIBreakpoint[set.size()]); + return (ICDIBreakpoint[])set.toArray( new ICDIBreakpoint[set.size()] ); } - protected void dispose() - { + protected void dispose() { fCBreakpoints.clear(); fCDIBreakpoints.clear(); } } - + private CDebugTarget fDebugTarget; - + private BreakpointMap fMap; - public CBreakpointManager( CDebugTarget target ) - { + public CBreakpointManager( CDebugTarget target ) { super(); setDebugTarget( target ); fMap = new BreakpointMap(); @@ -143,8 +133,7 @@ public class CBreakpointManager implements ICBreakpointManager, ICDIEventListene /* (non-Javadoc) * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class) */ - public Object getAdapter( Class adapter ) - { + public Object getAdapter( Class adapter ) { if ( CBreakpointManager.class.equals( adapter ) ) return this; if ( CDebugTarget.class.equals( adapter ) ) @@ -156,31 +145,26 @@ public class CBreakpointManager implements ICBreakpointManager, ICDIEventListene return null; } - public CDebugTarget getDebugTarget() - { + public CDebugTarget getDebugTarget() { return fDebugTarget; } - private void setDebugTarget( CDebugTarget target ) - { + private void setDebugTarget( CDebugTarget target ) { fDebugTarget = target; } - protected ICDIBreakpointManager getCDIBreakpointManager() - { + protected ICDIBreakpointManager getCDIBreakpointManager() { return getDebugTarget().getCDISession().getBreakpointManager(); } - protected ICSourceLocator getCSourceLocator() - { + protected ICSourceLocator getCSourceLocator() { ISourceLocator locator = getDebugTarget().getLaunch().getSourceLocator(); - if ( locator instanceof IAdaptable ) + if ( locator instanceof IAdaptable ) return (ICSourceLocator)((IAdaptable)locator).getAdapter( ICSourceLocator.class ); return null; } - public void dispose() - { + public void dispose() { getDebugTarget().getCDISession().getEventManager().removeEventListener( this ); removeAllBreakpoints(); getBreakpointMap().dispose(); @@ -189,26 +173,20 @@ public class CBreakpointManager implements ICBreakpointManager, ICDIEventListene /* (non-Javadoc) * @see org.eclipse.cdt.debug.core.cdi.event.ICDIEventListener#handleDebugEvents(org.eclipse.cdt.debug.core.cdi.event.ICDIEvent) */ - public void handleDebugEvents( ICDIEvent[] events ) - { - for (int i = 0; i < events.length; i++) - { + public void handleDebugEvents( ICDIEvent[] events ) { + for( int i = 0; i < events.length; i++ ) { ICDIEvent event = events[i]; ICDIObject source = event.getSource(); - if ( source != null && source.getTarget().equals( getDebugTarget().getCDITarget() ) ) - { - if ( event instanceof ICDICreatedEvent ) - { + if ( source != null && source.getTarget().equals( getDebugTarget().getCDITarget() ) ) { + if ( event instanceof ICDICreatedEvent ) { if ( source instanceof ICDIBreakpoint ) handleBreakpointCreatedEvent( (ICDIBreakpoint)source ); } - else if ( event instanceof ICDIDestroyedEvent ) - { + else if ( event instanceof ICDIDestroyedEvent ) { if ( source instanceof ICDIBreakpoint ) handleBreakpointDestroyedEvent( (ICDIBreakpoint)source ); } - else if ( event instanceof ICDIChangedEvent ) - { + else if ( event instanceof ICDIChangedEvent ) { if ( source instanceof ICDIBreakpoint ) handleBreakpointChangedEvent( (ICDIBreakpoint)source ); } @@ -216,27 +194,22 @@ public class CBreakpointManager implements ICBreakpointManager, ICDIEventListene } } - public boolean isTargetBreakpoint( ICBreakpoint breakpoint ) - { + public boolean isTargetBreakpoint( ICBreakpoint breakpoint ) { IResource resource = breakpoint.getMarker().getResource(); if ( breakpoint instanceof ICAddressBreakpoint ) return supportsAddressBreakpoint( (ICAddressBreakpoint)breakpoint ); - if ( breakpoint instanceof ICLineBreakpoint ) - { + if ( breakpoint instanceof ICLineBreakpoint ) { ICSourceLocator sl = getSourceLocator(); if ( sl != null ) return sl.contains( resource ); } - else - { + else { IProject project = resource.getProject(); - if ( project != null && project.exists() ) - { + if ( project != null && project.exists() ) { ICSourceLocator sl = getSourceLocator(); if ( sl != null ) return sl.contains( project ); - else - { + else { if ( project.equals( getExecFile().getProject() ) ) return true; return CDebugUtils.isReferencedProject( getExecFile().getProject(), project ); @@ -246,22 +219,17 @@ public class CBreakpointManager implements ICBreakpointManager, ICDIEventListene return true; } - public boolean isCDIRegistered( ICBreakpoint breakpoint ) - { - return ( getBreakpointMap().getCDIBreakpoint( breakpoint ) != null ); + public boolean isCDIRegistered( ICBreakpoint breakpoint ) { + return (getBreakpointMap().getCDIBreakpoint( breakpoint ) != null); } - public boolean supportsAddressBreakpoint( ICAddressBreakpoint breakpoint ) - { - return ( getExecFile() != null && - getExecFile().getLocation().toOSString().equals( breakpoint.getMarker().getResource().getLocation().toOSString() ) ); + public boolean supportsAddressBreakpoint( ICAddressBreakpoint breakpoint ) { + return (getExecFile() != null && getExecFile().getLocation().toOSString().equals( breakpoint.getMarker().getResource().getLocation().toOSString() )); } - public IFile getCDIBreakpointFile( ICDIBreakpoint cdiBreakpoint ) - { + public IFile getCDIBreakpointFile( ICDIBreakpoint cdiBreakpoint ) { IBreakpoint breakpoint = getBreakpointMap().getCBreakpoint( cdiBreakpoint ); - if ( breakpoint instanceof ICLineBreakpoint && !(breakpoint instanceof ICAddressBreakpoint) ) - { + if ( breakpoint instanceof ICLineBreakpoint && !(breakpoint instanceof ICAddressBreakpoint) ) { IResource resource = ((ICLineBreakpoint)breakpoint).getMarker().getResource(); if ( resource instanceof IFile ) return (IFile)resource; @@ -269,57 +237,44 @@ public class CBreakpointManager implements ICBreakpointManager, ICDIEventListene return null; } - public ICBreakpoint getBreakpoint( ICDIBreakpoint cdiBreakpoint ) - { + public ICBreakpoint getBreakpoint( ICDIBreakpoint cdiBreakpoint ) { return getBreakpointMap().getCBreakpoint( cdiBreakpoint ); } - public long getBreakpointAddress( ICBreakpoint breakpoint ) - { - if ( breakpoint != null ) - { + public long getBreakpointAddress( ICBreakpoint breakpoint ) { + if ( breakpoint != null ) { ICDIBreakpoint cdiBreakpoint = getBreakpointMap().getCDIBreakpoint( breakpoint ); - if ( cdiBreakpoint instanceof ICDILocationBreakpoint ) - { - try - { + if ( cdiBreakpoint instanceof ICDILocationBreakpoint ) { + try { ICDILocation location = ((ICDILocationBreakpoint)cdiBreakpoint).getLocation(); if ( location != null ) return location.getAddress(); } - catch( CDIException e ) - { + catch( CDIException e ) { } } } return 0; } - public void setBreakpoint( final ICBreakpoint breakpoint ) throws DebugException - { - Runnable runnable = new Runnable() - { - public void run() - { - try - { - doSetBreakpoint( breakpoint ); - } - catch( DebugException e ) - { - } - } - }; + public void setBreakpoint( final ICBreakpoint breakpoint ) throws DebugException { + Runnable runnable = new Runnable() { + + public void run() { + try { + doSetBreakpoint( breakpoint ); + } + catch( DebugException e ) { + } + } + }; CDebugCorePlugin.getDefault().asyncExec( runnable ); } - protected void doSetBreakpoint( ICBreakpoint breakpoint ) throws DebugException - { - try - { + protected void doSetBreakpoint( ICBreakpoint breakpoint ) throws DebugException { + try { ICDIBreakpoint cdiBreakpoint = getBreakpointMap().getCDIBreakpoint( breakpoint ); - if ( cdiBreakpoint == null ) - { + if ( cdiBreakpoint == null ) { if ( breakpoint instanceof ICFunctionBreakpoint ) cdiBreakpoint = setFunctionBreakpoint( (ICFunctionBreakpoint)breakpoint ); else if ( breakpoint instanceof ICAddressBreakpoint ) @@ -335,315 +290,237 @@ public class CBreakpointManager implements ICBreakpointManager, ICDIEventListene cdiBreakpoint.setEnabled( false ); setBreakpointCondition( breakpoint ); } - catch( CoreException e ) - { - requestFailed( CDebugCorePlugin.getResourceString("internal.core.CBreakpointManager.Set_breakpoint_failed") + e.getMessage(), e ); //$NON-NLS-1$ + catch( CoreException e ) { + requestFailed( CDebugCorePlugin.getResourceString( "internal.core.CBreakpointManager.Set_breakpoint_failed" ) + e.getMessage(), e ); //$NON-NLS-1$ } - catch( NumberFormatException e ) - { - requestFailed( CDebugCorePlugin.getResourceString("internal.core.CBreakpointManager.Set_breakpoint_failed") + e.getMessage(), e ); //$NON-NLS-1$ + catch( NumberFormatException e ) { + requestFailed( CDebugCorePlugin.getResourceString( "internal.core.CBreakpointManager.Set_breakpoint_failed" ) + e.getMessage(), e ); //$NON-NLS-1$ } - catch( CDIException e ) - { - targetRequestFailed( CDebugCorePlugin.getResourceString("internal.core.CBreakpointManager.Set_breakpoint_failed") + e.getMessage(), e ); //$NON-NLS-1$ + catch( CDIException e ) { + targetRequestFailed( CDebugCorePlugin.getResourceString( "internal.core.CBreakpointManager.Set_breakpoint_failed" ) + e.getMessage(), e ); //$NON-NLS-1$ } } - public void removeBreakpoint( final ICBreakpoint breakpoint ) throws DebugException - { - Runnable runnable = new Runnable() - { - public void run() - { - try - { - doRemoveBreakpoint( breakpoint ); - } - catch( DebugException e ) - { - } - } - }; + public void removeBreakpoint( final ICBreakpoint breakpoint ) throws DebugException { + Runnable runnable = new Runnable() { + public void run() { + try { + doRemoveBreakpoint( breakpoint ); + } + catch( DebugException e ) { + } + } + }; CDebugCorePlugin.getDefault().asyncExec( runnable ); } - protected void doRemoveBreakpoint( ICBreakpoint breakpoint ) throws DebugException - { + protected void doRemoveBreakpoint( ICBreakpoint breakpoint ) throws DebugException { ICDIBreakpoint cdiBreakpoint = getBreakpointMap().getCDIBreakpoint( breakpoint ); - if ( cdiBreakpoint != null ) - { + if ( cdiBreakpoint != null ) { ICDIBreakpointManager bm = getCDIBreakpointManager(); - try - { - bm.deleteBreakpoints( new ICDIBreakpoint[] { cdiBreakpoint } ); + try { + bm.deleteBreakpoints( new ICDIBreakpoint[]{ cdiBreakpoint } ); } - catch( CDIException e ) - { - targetRequestFailed( CDebugCorePlugin.getResourceString("internal.core.CBreakpointManager.Delete_breakpoint_failed") + e.getMessage(), e ); //$NON-NLS-1$ + catch( CDIException e ) { + targetRequestFailed( CDebugCorePlugin.getResourceString( "internal.core.CBreakpointManager.Delete_breakpoint_failed" ) + e.getMessage(), e ); //$NON-NLS-1$ } } } - public void changeBreakpointProperties( final ICBreakpoint breakpoint, final IMarkerDelta delta ) throws DebugException - { - Runnable runnable = new Runnable() - { - public void run() - { - try - { - doChangeBreakpointProperties( breakpoint, delta ); - } - catch( DebugException e ) - { - } - } - }; + public void changeBreakpointProperties( final ICBreakpoint breakpoint, final IMarkerDelta delta ) throws DebugException { + Runnable runnable = new Runnable() { + + public void run() { + try { + doChangeBreakpointProperties( breakpoint, delta ); + } + catch( DebugException e ) { + } + } + }; CDebugCorePlugin.getDefault().asyncExec( runnable ); } - protected void doChangeBreakpointProperties( ICBreakpoint breakpoint, IMarkerDelta delta ) throws DebugException - { + protected void doChangeBreakpointProperties( ICBreakpoint breakpoint, IMarkerDelta delta ) throws DebugException { ICDIBreakpoint cdiBreakpoint = getBreakpointMap().getCDIBreakpoint( breakpoint ); if ( cdiBreakpoint == null ) return; ICDIBreakpointManager bm = getCDIBreakpointManager(); - try - { + try { boolean enabled = breakpoint.isEnabled(); boolean oldEnabled = delta.getAttribute( IBreakpoint.ENABLED, true ); int ignoreCount = breakpoint.getIgnoreCount(); int oldIgnoreCount = delta.getAttribute( ICBreakpoint.IGNORE_COUNT, 0 ); String condition = breakpoint.getCondition(); String oldCondition = delta.getAttribute( ICBreakpoint.CONDITION, "" ); //$NON-NLS-1$ - if ( enabled != oldEnabled ) - { + if ( enabled != oldEnabled ) { cdiBreakpoint.setEnabled( enabled ); } - if ( ignoreCount != oldIgnoreCount || !condition.equals( oldCondition ) ) - { + if ( ignoreCount != oldIgnoreCount || !condition.equals( oldCondition ) ) { ICDICondition cdiCondition = bm.createCondition( ignoreCount, condition ); cdiBreakpoint.setCondition( cdiCondition ); } } - catch( CoreException e ) - { - requestFailed( CDebugCorePlugin.getResourceString("internal.core.CBreakpointManager.Change_brkpt_properties_failed") + e.getMessage(), e ); //$NON-NLS-1$ + catch( CoreException e ) { + requestFailed( CDebugCorePlugin.getResourceString( "internal.core.CBreakpointManager.Change_brkpt_properties_failed" ) + e.getMessage(), e ); //$NON-NLS-1$ } - catch( CDIException e ) - { - targetRequestFailed( CDebugCorePlugin.getResourceString("internal.core.CBreakpointManager.Change_brkpt_properties_failed") + e.getMessage(), e ); //$NON-NLS-1$ + catch( CDIException e ) { + targetRequestFailed( CDebugCorePlugin.getResourceString( "internal.core.CBreakpointManager.Change_brkpt_properties_failed" ) + e.getMessage(), e ); //$NON-NLS-1$ } } - private void handleBreakpointCreatedEvent( final ICDIBreakpoint cdiBreakpoint ) - { - Runnable runnable = new Runnable() - { - public void run() - { - if ( cdiBreakpoint instanceof ICDILocationBreakpoint ) - doHandleLocationBreakpointCreatedEvent( (ICDILocationBreakpoint)cdiBreakpoint ); - else if ( cdiBreakpoint instanceof ICDIWatchpoint ) - doHandleWatchpointCreatedEvent( (ICDIWatchpoint)cdiBreakpoint ); - } - }; + private void handleBreakpointCreatedEvent( final ICDIBreakpoint cdiBreakpoint ) { + Runnable runnable = new Runnable() { + + public void run() { + if ( cdiBreakpoint instanceof ICDILocationBreakpoint ) + doHandleLocationBreakpointCreatedEvent( (ICDILocationBreakpoint)cdiBreakpoint ); + else if ( cdiBreakpoint instanceof ICDIWatchpoint ) + doHandleWatchpointCreatedEvent( (ICDIWatchpoint)cdiBreakpoint ); + } + }; CDebugCorePlugin.getDefault().asyncExec( runnable ); } - protected void doHandleLocationBreakpointCreatedEvent( ICDILocationBreakpoint cdiBreakpoint ) - { + protected void doHandleLocationBreakpointCreatedEvent( ICDILocationBreakpoint cdiBreakpoint ) { if ( cdiBreakpoint.isTemporary() ) return; ICBreakpoint breakpoint = getBreakpointMap().getCBreakpoint( cdiBreakpoint ); - if ( breakpoint == null ) - { - try - { - if ( cdiBreakpoint.getLocation().getFile() != null && cdiBreakpoint.getLocation().getFile().length() > 0 ) - { + if ( breakpoint == null ) { + try { + if ( cdiBreakpoint.getLocation().getFile() != null && cdiBreakpoint.getLocation().getFile().length() > 0 ) { ICSourceLocator locator = getSourceLocator(); - if ( locator != null ) - { + if ( locator != null ) { Object sourceElement = locator.findSourceElement( cdiBreakpoint.getLocation().getFile() ); - if ( sourceElement != null && sourceElement instanceof IFile ) - { + if ( sourceElement != null && sourceElement instanceof IFile ) { breakpoint = createLineBreakpoint( (IFile)sourceElement, cdiBreakpoint ); } - else if ( cdiBreakpoint.getLocation().getAddress() > 0 ) - { + else if ( cdiBreakpoint.getLocation().getAddress() > 0 ) { breakpoint = createAddressBreakpoint( cdiBreakpoint ); } } } - else if ( cdiBreakpoint.getLocation().getAddress() > 0 ) - { + else if ( cdiBreakpoint.getLocation().getAddress() > 0 ) { breakpoint = createAddressBreakpoint( cdiBreakpoint ); } } - catch( CDIException e ) - { + catch( CDIException e ) { } - catch( CoreException e ) - { + catch( CoreException e ) { } } - if ( breakpoint != null ) - { - try - { + if ( breakpoint != null ) { + try { ((CBreakpoint)breakpoint).incrementInstallCount(); } - catch( CoreException e ) - { + catch( CoreException e ) { CDebugCorePlugin.log( e.getStatus() ); } } } - protected void doHandleWatchpointCreatedEvent( ICDIWatchpoint cdiWatchpoint ) - { + protected void doHandleWatchpointCreatedEvent( ICDIWatchpoint cdiWatchpoint ) { ICBreakpoint breakpoint = getBreakpointMap().getCBreakpoint( cdiWatchpoint ); - if ( breakpoint == null ) - { - try - { - breakpoint = CDebugModel.createWatchpoint( getExecFile().getProject(), - cdiWatchpoint.isWriteType(), - cdiWatchpoint.isReadType(), - cdiWatchpoint.getWatchExpression(), - cdiWatchpoint.isEnabled(), - cdiWatchpoint.getCondition().getIgnoreCount(), - cdiWatchpoint.getCondition().getExpression(), - false ); - getBreakpointMap().put( breakpoint, cdiWatchpoint ); - ((CBreakpoint)breakpoint).register( true ); + if ( breakpoint == null ) { + try { + breakpoint = createWatchpoint( cdiWatchpoint ); } - catch( CDIException e ) - { + catch( CDIException e ) { } - catch( CoreException e ) - { + catch( CoreException e ) { } } - if ( breakpoint != null ) - { - try - { + if ( breakpoint != null ) { + try { ((CBreakpoint)breakpoint).incrementInstallCount(); } - catch( CoreException e ) - { + catch( CoreException e ) { CDebugCorePlugin.log( e.getStatus() ); } } } - private void handleBreakpointDestroyedEvent( final ICDIBreakpoint cdiBreakpoint ) - { - Runnable runnable = new Runnable() - { - public void run() - { - doHandleBreakpointDestroyedEvent( cdiBreakpoint ); - } - - }; + private void handleBreakpointDestroyedEvent( final ICDIBreakpoint cdiBreakpoint ) { + Runnable runnable = new Runnable() { + + public void run() { + doHandleBreakpointDestroyedEvent( cdiBreakpoint ); + } + }; CDebugCorePlugin.getDefault().asyncExec( runnable ); } - protected void doHandleBreakpointDestroyedEvent( ICDIBreakpoint cdiBreakpoint ) - { + protected void doHandleBreakpointDestroyedEvent( ICDIBreakpoint cdiBreakpoint ) { ICBreakpoint breakpoint = getBreakpointMap().getCBreakpoint( cdiBreakpoint ); - if ( breakpoint != null ) - { + if ( breakpoint != null ) { getBreakpointMap().removeCDIBreakpoint( breakpoint, cdiBreakpoint ); - try - { + try { ((CBreakpoint)breakpoint).decrementInstallCount(); } - catch( CoreException e ) - { + catch( CoreException e ) { CDebugCorePlugin.log( e.getStatus() ); } } } - private void handleBreakpointChangedEvent( final ICDIBreakpoint cdiBreakpoint ) - { - Runnable runnable = new Runnable() - { - public void run() - { - doHandleBreakpointChangedEvent( cdiBreakpoint ); - } - - }; + private void handleBreakpointChangedEvent( final ICDIBreakpoint cdiBreakpoint ) { + Runnable runnable = new Runnable() { + + public void run() { + doHandleBreakpointChangedEvent( cdiBreakpoint ); + } + }; CDebugCorePlugin.getDefault().asyncExec( runnable ); } - protected void doHandleBreakpointChangedEvent( ICDIBreakpoint cdiBreakpoint ) - { + protected void doHandleBreakpointChangedEvent( ICDIBreakpoint cdiBreakpoint ) { ICBreakpoint breakpoint = getBreakpointMap().getCBreakpoint( cdiBreakpoint ); - if ( breakpoint != null ) - { - try - { + if ( breakpoint != null ) { + try { breakpoint.setEnabled( cdiBreakpoint.isEnabled() ); breakpoint.setIgnoreCount( cdiBreakpoint.getCondition().getIgnoreCount() ); breakpoint.setCondition( cdiBreakpoint.getCondition().getExpression() ); } - catch( CDIException e ) - { + catch( CDIException e ) { } - catch( CoreException e ) - { + catch( CoreException e ) { } } } - private void removeAllBreakpoints() - { + private void removeAllBreakpoints() { ICDIBreakpoint[] cdiBreakpoints = getBreakpointMap().getAllCDIBreakpoints(); ICDIBreakpointManager bm = getCDIBreakpointManager(); - if ( cdiBreakpoints.length > 0 ) - { - try - { + if ( cdiBreakpoints.length > 0 ) { + try { bm.deleteBreakpoints( cdiBreakpoints ); } - catch( CDIException e ) - { + catch( CDIException e ) { CDebugCorePlugin.log( e.getMessage() ); } ICBreakpoint[] breakpoints = getBreakpointMap().getAllCBreakpoints(); - for ( int i = 0; i < breakpoints.length; ++i ) - { - try - { + for( int i = 0; i < breakpoints.length; ++i ) { + try { ((CBreakpoint)breakpoints[i]).decrementInstallCount(); } - catch( CoreException e ) - { + catch( CoreException e ) { CDebugCorePlugin.log( e.getMessage() ); } } } } - private synchronized ICDIBreakpoint setFunctionBreakpoint( ICFunctionBreakpoint breakpoint ) throws CDIException, CoreException - { + private synchronized ICDIBreakpoint setFunctionBreakpoint( ICFunctionBreakpoint breakpoint ) throws CDIException, CoreException { ICDIBreakpointManager bm = getCDIBreakpointManager(); String function = breakpoint.getFunction(); - String fileName = ( function != null && function.indexOf( "::" ) == -1 ) ? breakpoint.getFileName() : null; //$NON-NLS-1$ + String fileName = (function != null && function.indexOf( "::" ) == -1) ? breakpoint.getFileName() : null; //$NON-NLS-1$ ICDILocation location = bm.createLocation( fileName, function, -1 ); ICDIBreakpoint cdiBreakpoint = bm.setLocationBreakpoint( ICDIBreakpoint.REGULAR, location, null, null, true ); getBreakpointMap().put( breakpoint, cdiBreakpoint ); return cdiBreakpoint; } - private synchronized ICDIBreakpoint setAddressBreakpoint( ICAddressBreakpoint breakpoint ) throws CDIException, CoreException, NumberFormatException - { + private synchronized ICDIBreakpoint setAddressBreakpoint( ICAddressBreakpoint breakpoint ) throws CDIException, CoreException, NumberFormatException { ICDIBreakpointManager bm = getCDIBreakpointManager(); ICDILocation location = bm.createLocation( Long.parseLong( breakpoint.getAddress() ) ); ICDIBreakpoint cdiBreakpoint = bm.setLocationBreakpoint( ICDIBreakpoint.REGULAR, location, null, null, true ); @@ -651,8 +528,7 @@ public class CBreakpointManager implements ICBreakpointManager, ICDIEventListene return cdiBreakpoint; } - private synchronized ICDIBreakpoint setLineBreakpoint( ICLineBreakpoint breakpoint ) throws CDIException, CoreException - { + private synchronized ICDIBreakpoint setLineBreakpoint( ICLineBreakpoint breakpoint ) throws CDIException, CoreException { ICDIBreakpointManager bm = getCDIBreakpointManager(); ICDILocation location = bm.createLocation( breakpoint.getMarker().getResource().getLocation().lastSegment(), null, breakpoint.getLineNumber() ); ICDIBreakpoint cdiBreakpoint = bm.setLocationBreakpoint( ICDIBreakpoint.REGULAR, location, null, null, true ); @@ -660,84 +536,91 @@ public class CBreakpointManager implements ICBreakpointManager, ICDIEventListene return cdiBreakpoint; } - private synchronized ICDIBreakpoint setWatchpoint( ICWatchpoint watchpoint ) throws CDIException, CoreException - { + private synchronized ICDIBreakpoint setWatchpoint( ICWatchpoint watchpoint ) throws CDIException, CoreException { ICDIBreakpointManager bm = getCDIBreakpointManager(); int accessType = 0; - accessType |= ( watchpoint.isWriteType() ) ? ICDIWatchpoint.WRITE : 0; - accessType |= ( watchpoint.isReadType() ) ? ICDIWatchpoint.READ : 0; + accessType |= (watchpoint.isWriteType()) ? ICDIWatchpoint.WRITE : 0; + accessType |= (watchpoint.isReadType()) ? ICDIWatchpoint.READ : 0; String expression = watchpoint.getExpression(); ICDIWatchpoint cdiWatchpoint = bm.setWatchpoint( ICDIBreakpoint.REGULAR, accessType, expression, null ); getBreakpointMap().put( watchpoint, cdiWatchpoint ); return cdiWatchpoint; } - private void setBreakpointCondition( ICBreakpoint breakpoint ) throws CoreException, CDIException - { + private void setBreakpointCondition( ICBreakpoint breakpoint ) throws CoreException, CDIException { ICDIBreakpoint cdiBreakpoint = getBreakpointMap().getCDIBreakpoint( breakpoint ); ICDIBreakpointManager bm = getCDIBreakpointManager(); ICDICondition condition = bm.createCondition( breakpoint.getIgnoreCount(), breakpoint.getCondition() ); cdiBreakpoint.setCondition( condition ); } - private BreakpointMap getBreakpointMap() - { + private BreakpointMap getBreakpointMap() { return fMap; } - protected void targetRequestFailed( String message, Throwable e ) throws DebugException - { + protected void targetRequestFailed( String message, Throwable e ) throws DebugException { requestFailed0( message, e, DebugException.TARGET_REQUEST_FAILED ); } - protected void requestFailed( String message, Throwable e ) throws DebugException - { + protected void requestFailed( String message, Throwable e ) throws DebugException { requestFailed0( message, e, DebugException.REQUEST_FAILED ); } - private void requestFailed0( String message, Throwable e, int code ) throws DebugException - { - throw new DebugException( new Status( IStatus.ERROR, - CDebugModel.getPluginIdentifier(), - code, - message, - e ) ); + private void requestFailed0( String message, Throwable e, int code ) throws DebugException { + throw new DebugException( new Status( IStatus.ERROR, CDIDebugModel.getPluginIdentifier(), code, message, e ) ); } - private ICLineBreakpoint createLineBreakpoint( IFile file, ICDILocationBreakpoint cdiBreakpoint ) throws CDIException, CoreException - { - ICLineBreakpoint breakpoint = CDebugModel.createLineBreakpoint( file, - cdiBreakpoint.getLocation().getLineNumber(), - cdiBreakpoint.isEnabled(), - cdiBreakpoint.getCondition().getIgnoreCount(), - cdiBreakpoint.getCondition().getExpression(), - false ); + private ICLineBreakpoint createLineBreakpoint( IFile file, ICDILocationBreakpoint cdiBreakpoint ) throws CDIException, CoreException { + ICLineBreakpoint breakpoint = CDIDebugModel.createLineBreakpoint( cdiBreakpoint.getLocation().getFile(), + file, + cdiBreakpoint.getLocation().getLineNumber(), + cdiBreakpoint.isEnabled(), + cdiBreakpoint.getCondition().getIgnoreCount(), + cdiBreakpoint.getCondition().getExpression(), + false ); getBreakpointMap().put( breakpoint, cdiBreakpoint ); ((CBreakpoint)breakpoint).register( true ); return breakpoint; } - private ICAddressBreakpoint createAddressBreakpoint( ICDILocationBreakpoint cdiBreakpoint ) throws CDIException, CoreException - { - ICAddressBreakpoint breakpoint = CDebugModel.createAddressBreakpoint( getExecFile(), - cdiBreakpoint.getLocation().getAddress(), - cdiBreakpoint.isEnabled(), - cdiBreakpoint.getCondition().getIgnoreCount(), - cdiBreakpoint.getCondition().getExpression(), - false ); + private ICAddressBreakpoint createAddressBreakpoint( ICDILocationBreakpoint cdiBreakpoint ) throws CDIException, CoreException { + IFile execFile = getExecFile(); + String sourceHandle = execFile.getFullPath().toOSString(); + ICAddressBreakpoint breakpoint = CDIDebugModel.createAddressBreakpoint( sourceHandle, + execFile, + cdiBreakpoint.getLocation().getAddress(), + cdiBreakpoint.isEnabled(), + cdiBreakpoint.getCondition().getIgnoreCount(), + cdiBreakpoint.getCondition().getExpression(), + false ); getBreakpointMap().put( breakpoint, cdiBreakpoint ); ((CBreakpoint)breakpoint).register( true ); return breakpoint; } - private ICSourceLocator getSourceLocator() - { + private ICWatchpoint createWatchpoint( ICDIWatchpoint cdiWatchpoint ) throws CDIException, CoreException { + IFile execFile = getExecFile(); + String sourceHandle = execFile.getFullPath().toOSString(); + ICWatchpoint watchpoint = CDIDebugModel.createWatchpoint( sourceHandle, + execFile.getProject(), + cdiWatchpoint.isWriteType(), + cdiWatchpoint.isReadType(), + cdiWatchpoint.getWatchExpression(), + cdiWatchpoint.isEnabled(), + cdiWatchpoint.getCondition().getIgnoreCount(), + cdiWatchpoint.getCondition().getExpression(), + false ); + getBreakpointMap().put( watchpoint, cdiWatchpoint ); + ((CBreakpoint)watchpoint).register( true ); + return watchpoint; + } + + private ICSourceLocator getSourceLocator() { ISourceLocator locator = getDebugTarget().getLaunch().getSourceLocator(); - return ( locator instanceof IAdaptable ) ? (ICSourceLocator)((IAdaptable)locator).getAdapter( ICSourceLocator.class ) : null; + return (locator instanceof IAdaptable) ? (ICSourceLocator)((IAdaptable)locator).getAdapter( ICSourceLocator.class ) : null; } - private IFile getExecFile() - { + private IFile getExecFile() { return getDebugTarget().getExecFile(); } -} +} \ No newline at end of file diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/CDebugUtils.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/CDebugUtils.java new file mode 100644 index 00000000000..05585515a5c --- /dev/null +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/CDebugUtils.java @@ -0,0 +1,34 @@ +/********************************************************************** + * Copyright (c) 2004 QNX Software Systems and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: + * QNX Software Systems - Initial API and implementation +***********************************************************************/ +package org.eclipse.cdt.debug.internal.core; + +/** + * Utilities used by C/C++ Debug Plugin's classes. + */ +public class CDebugUtils { + + /** + * Returns the hexadecimal presentation of the given address. + * + * @param address an address to be converted to hex + * @return the hexadecimal presentation of the given address + */ + public static String toHexAddressString( long address ) { + String addressString = Long.toHexString( address ); + StringBuffer sb = new StringBuffer( 10 ); + sb.append( "0x" ); //$NON-NLS-1$ + for( int i = 0; i < 8 - addressString.length(); ++i ) { + sb.append( '0' ); + } + sb.append( addressString ); + return sb.toString(); + } +} diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/BreakpointMessages.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/BreakpointMessages.java new file mode 100644 index 00000000000..ac0f3d2bbda --- /dev/null +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/BreakpointMessages.java @@ -0,0 +1,33 @@ +/********************************************************************** + * Copyright (c) 2004 QNX Software Systems and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: + * QNX Software Systems - Initial API and implementation + ***********************************************************************/ +package org.eclipse.cdt.debug.internal.core.breakpoints; + +import java.util.MissingResourceException; +import java.util.ResourceBundle; + +public class BreakpointMessages { + + private static final String BUNDLE_NAME = "org.eclipse.cdt.debug.internal.core.breakpoints.BreakpointMessages";//$NON-NLS-1$ + + private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle( BUNDLE_NAME ); + + private BreakpointMessages() { + } + + public static String getString( String key ) { + try { + return RESOURCE_BUNDLE.getString( key ); + } + catch( MissingResourceException e ) { + return '!' + key + '!'; + } + } +} \ No newline at end of file diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/BreakpointMessages.properties b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/BreakpointMessages.properties new file mode 100644 index 00000000000..7dd0038d1a0 --- /dev/null +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/BreakpointMessages.properties @@ -0,0 +1,13 @@ +CAddressBreakpoint.1=Address breakpoint: +CAddressBreakpoint.2=[address: {0}] +CBreakpoint.1=\ [ignore count: {0}] +CBreakpoint.2=\ if {0} +CFunctionBreakpoint.2=Function breakpoint: +CFunctionBreakpoint.3=\ [function: {0}] +CLineBreakpoint.1=Line breakpoint: +CLineBreakpoint.2=\ [line: {0}] +CWatchpoint.1=Write watchpoint +CWatchpoint.2=Read watchpoint +CWatchpoint.3=Access watchpoint +CWatchpoint.4=Watchpoint +CWatchpoint.5=\ at \'{0}\' diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CAddressBreakpoint.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CAddressBreakpoint.java index 05107cd5c74..b31fd612540 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CAddressBreakpoint.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CAddressBreakpoint.java @@ -1,116 +1,115 @@ -/* - *(c) Copyright QNX Software Systems Ltd. 2002. - * All Rights Reserved. +/********************************************************************** + * Copyright (c) 2004 QNX Software Systems and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html * - */ + * Contributors: + * QNX Software Systems - Initial API and implementation + ***********************************************************************/ package org.eclipse.cdt.debug.internal.core.breakpoints; +import java.text.MessageFormat; import java.util.Map; -import org.eclipse.cdt.debug.core.CDebugUtils; import org.eclipse.cdt.debug.core.model.ICAddressBreakpoint; +import org.eclipse.cdt.debug.internal.core.CDebugUtils; import org.eclipse.core.resources.IMarker; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.CoreException; -import org.eclipse.debug.core.DebugException; -import org.eclipse.cdt.debug.core.CDebugCorePlugin; /** - * - * Enter type comment. - * - * @since Aug 21, 2002 + * A breakpoint that suspend the execution when a particular address is reached. */ -public class CAddressBreakpoint extends CBreakpoint implements ICAddressBreakpoint -{ +public class CAddressBreakpoint extends CBreakpoint implements ICAddressBreakpoint { + private static final String C_ADDRESS_BREAKPOINT = "org.eclipse.cdt.debug.core.cAddressBreakpointMarker"; //$NON-NLS-1$ /** * Constructor for CAddressBreakpoint. */ - public CAddressBreakpoint() - { + public CAddressBreakpoint() { } /** * Constructor for CAddressBreakpoint. */ - public CAddressBreakpoint( IResource resource, Map attributes, boolean add ) throws DebugException - { + public CAddressBreakpoint( IResource resource, Map attributes, boolean add ) throws CoreException { super( resource, getMarkerType(), attributes, add ); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see org.eclipse.cdt.debug.core.ICAddressBreakpoint#getAddress() */ - public String getAddress() throws CoreException - { + public String getAddress() throws CoreException { return ensureMarker().getAttribute( ADDRESS, null ); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see org.eclipse.cdt.debug.core.ICAddressBreakpoint#setAddress(long) */ - public void setAddress( String address ) throws CoreException - { + public void setAddress( String address ) throws CoreException { setAttribute( ADDRESS, address ); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see org.eclipse.debug.core.model.ILineBreakpoint#getLineNumber() */ - public int getLineNumber() throws CoreException - { + public int getLineNumber() throws CoreException { return ensureMarker().getAttribute( IMarker.LINE_NUMBER, -1 ); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see org.eclipse.debug.core.model.ILineBreakpoint#getCharStart() */ - public int getCharStart() throws CoreException - { + public int getCharStart() throws CoreException { return ensureMarker().getAttribute( IMarker.CHAR_START, -1 ); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see org.eclipse.debug.core.model.ILineBreakpoint#getCharEnd() */ - public int getCharEnd() throws CoreException - { + public int getCharEnd() throws CoreException { return ensureMarker().getAttribute( IMarker.CHAR_END, -1 ); } /** * Returns the type of marker associated with this type of breakpoints */ - public static String getMarkerType() - { + public static String getMarkerType() { return C_ADDRESS_BREAKPOINT; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see org.eclipse.cdt.debug.internal.core.breakpoints.CBreakpoint#getMarkerMessage() */ - protected String getMarkerMessage() throws CoreException - { - StringBuffer sb = new StringBuffer( CDebugCorePlugin.getResourceString("internal.core.breakpoints.CAddressBreakpoint.Address_breakpoint") ); //$NON-NLS-1$ + protected String getMarkerMessage() throws CoreException { + StringBuffer sb = new StringBuffer( BreakpointMessages.getString( "CAddressBreakpoint.1" ) ); //$NON-NLS-1$ String name = ensureMarker().getResource().getName(); - if ( name != null && name.length() > 0 ) - { + if ( name != null && name.length() > 0 ) { sb.append( ' ' ); sb.append( name ); } - try - { + try { long address = Long.parseLong( getAddress() ); - sb.append( CDebugCorePlugin.getResourceString("internal.core.breakpoints.CAddressBreakpoint.address") ); //$NON-NLS-1$ - sb.append( CDebugUtils.toHexAddressString( address ) ); - sb.append( ']' ); + sb.append( MessageFormat.format( BreakpointMessages.getString( "CAddressBreakpoint.2" ), new String[] { CDebugUtils.toHexAddressString( address ) } ) ); //$NON-NLS-1$ } - catch( NumberFormatException e ) - { + catch( NumberFormatException e ) { } sb.append( getConditionText() ); return sb.toString(); } -} +} \ No newline at end of file diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CBreakpoint.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CBreakpoint.java index a54d1877d73..7cc8cd37197 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CBreakpoint.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CBreakpoint.java @@ -1,14 +1,19 @@ -/* - *(c) Copyright QNX Software Systems Ltd. 2002. - * All Rights Reserved. +/********************************************************************** + * Copyright (c) 2004 QNX Software Systems and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html * - */ - + * Contributors: + * QNX Software Systems - Initial API and implementation +***********************************************************************/ package org.eclipse.cdt.debug.internal.core.breakpoints; +import java.text.MessageFormat; import java.util.Map; -import org.eclipse.cdt.debug.core.CDebugModel; +import org.eclipse.cdt.debug.core.CDIDebugModel; import org.eclipse.cdt.debug.core.model.ICBreakpoint; import org.eclipse.core.resources.IMarker; import org.eclipse.core.resources.IResource; @@ -21,263 +26,247 @@ import org.eclipse.debug.core.DebugException; import org.eclipse.debug.core.DebugPlugin; import org.eclipse.debug.core.IDebugEventSetListener; import org.eclipse.debug.core.model.Breakpoint; -import org.eclipse.cdt.debug.core.CDebugCorePlugin; /** - * - * Enter type comment. - * - * @since Aug 21, 2002 + * The base class for all C/C++ specific breakpoints. */ -public abstract class CBreakpoint extends Breakpoint - implements ICBreakpoint, - IDebugEventSetListener -{ +public abstract class CBreakpoint extends Breakpoint implements ICBreakpoint, IDebugEventSetListener { + /** * Constructor for CBreakpoint. */ - public CBreakpoint() - { + public CBreakpoint() { } /** * Constructor for CBreakpoint. */ - public CBreakpoint( final IResource resource, final String markerType, final Map attributes, final boolean add ) throws DebugException - { - IWorkspaceRunnable wr= new IWorkspaceRunnable() - { - public void run( IProgressMonitor monitor ) throws CoreException - { - // create the marker - setMarker( resource.createMarker( markerType ) ); - - // set attributes - ensureMarker().setAttributes( attributes ); - - //set the marker message - setAttribute( IMarker.MESSAGE, getMarkerMessage() ); - - // add to breakpoint manager if requested - register( add ); - } - }; + public CBreakpoint( final IResource resource, final String markerType, final Map attributes, final boolean add ) throws CoreException { + IWorkspaceRunnable wr = new IWorkspaceRunnable() { + + public void run( IProgressMonitor monitor ) throws CoreException { + // create the marker + setMarker( resource.createMarker( markerType ) ); + // set attributes + ensureMarker().setAttributes( attributes ); + //set the marker message + setAttribute( IMarker.MESSAGE, getMarkerMessage() ); + // add to breakpoint manager if requested + register( add ); + } + }; run( wr ); } - public void createMarker( final IResource resource, final String markerType, final Map attributes, final boolean add ) throws DebugException - { - IWorkspaceRunnable wr= new IWorkspaceRunnable() - { - public void run( IProgressMonitor monitor ) throws CoreException - { - // create the marker - setMarker( resource.createMarker( markerType ) ); - - // set attributes - ensureMarker().setAttributes( attributes ); - - //set the marker message - setAttribute( IMarker.MESSAGE, getMarkerMessage() ); - - // add to breakpoint manager if requested - register( add ); - } - }; + public void createMarker( final IResource resource, final String markerType, final Map attributes, final boolean add ) throws DebugException { + IWorkspaceRunnable wr = new IWorkspaceRunnable() { + public void run( IProgressMonitor monitor ) throws CoreException { + // create the marker + setMarker( resource.createMarker( markerType ) ); + // set attributes + ensureMarker().setAttributes( attributes ); + //set the marker message + setAttribute( IMarker.MESSAGE, getMarkerMessage() ); + // add to breakpoint manager if requested + register( add ); + } + }; run( wr ); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see org.eclipse.debug.core.model.IBreakpoint#getModelIdentifier() */ - public String getModelIdentifier() - { - return CDebugModel.getPluginIdentifier(); + public String getModelIdentifier() { + return CDIDebugModel.getPluginIdentifier(); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see org.eclipse.cdt.debug.core.ICBreakpoint#isInstalled() */ - public boolean isInstalled() throws CoreException - { + public boolean isInstalled() throws CoreException { return ensureMarker().getAttribute( INSTALL_COUNT, 0 ) > 0; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see org.eclipse.cdt.debug.core.ICBreakpoint#getCondition() */ - public String getCondition() throws CoreException - { + public String getCondition() throws CoreException { return ensureMarker().getAttribute( CONDITION, "" ); //$NON-NLS-1$ } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see org.eclipse.cdt.debug.core.ICBreakpoint#setCondition(String) */ - public void setCondition( String condition ) throws CoreException - { + public void setCondition( String condition ) throws CoreException { setAttribute( CONDITION, condition ); setAttribute( IMarker.MESSAGE, getMarkerMessage() ); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see org.eclipse.cdt.debug.core.ICBreakpoint#getIgnoreCount() */ - public int getIgnoreCount() throws CoreException - { + public int getIgnoreCount() throws CoreException { return ensureMarker().getAttribute( IGNORE_COUNT, 0 ); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see org.eclipse.cdt.debug.core.ICBreakpoint#setIgnoreCount(int) */ - public void setIgnoreCount( int ignoreCount ) throws CoreException - { + public void setIgnoreCount( int ignoreCount ) throws CoreException { setAttribute( IGNORE_COUNT, ignoreCount ); setAttribute( IMarker.MESSAGE, getMarkerMessage() ); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see org.eclipse.cdt.debug.core.ICBreakpoint#getThreadId() */ - public String getThreadId() throws CoreException - { + public String getThreadId() throws CoreException { return ensureMarker().getAttribute( THREAD_ID, null ); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see org.eclipse.cdt.debug.core.ICBreakpoint#setThreadId(String) */ - public void setThreadId( String threadId ) throws CoreException - { + public void setThreadId( String threadId ) throws CoreException { setAttribute( THREAD_ID, threadId ); } /* (non-Javadoc) + * @see org.eclipse.cdt.debug.core.model.ICBreakpoint#getSourceHandle() + */ + public String getSourceHandle() throws CoreException { + return ensureMarker().getAttribute( SOURCE_HANDLE, null ); + } + + /* (non-Javadoc) + * @see org.eclipse.cdt.debug.core.model.ICBreakpoint#setSourceHandle(java.lang.String) + */ + public void setSourceHandle( String sourceHandle ) throws CoreException { + setAttribute( SOURCE_HANDLE, sourceHandle ); + } + + /* + * (non-Javadoc) + * * @see org.eclipse.debug.core.IDebugEventSetListener#handleDebugEvents(DebugEvent[]) */ - public void handleDebugEvents( DebugEvent[] events ) - { + public void handleDebugEvents( DebugEvent[] events ) { } /** * Execute the given workspace runnable */ - protected void run( IWorkspaceRunnable wr ) throws DebugException - { - try - { + protected void run( IWorkspaceRunnable wr ) throws DebugException { + try { ResourcesPlugin.getWorkspace().run( wr, null ); } - catch ( CoreException e ) - { + catch( CoreException e ) { throw new DebugException( e.getStatus() ); } } /** - * Add this breakpoint to the breakpoint manager, - * or sets it as unregistered. + * Add this breakpoint to the breakpoint manager, or sets it as + * unregistered. */ - public void register( boolean register ) throws CoreException - { - if ( register ) - { + public void register( boolean register ) throws CoreException { + if ( register ) { DebugPlugin.getDefault().getBreakpointManager().addBreakpoint( this ); } -/* - else - { - setRegistered( false ); - } -*/ + /* + * else { setRegistered( false ); } + */ } - protected String getMarkerMessage() throws CoreException - { - return null; - } + abstract protected String getMarkerMessage() throws CoreException; /** * Resets the install count of this breakpoint */ - public synchronized void resetInstallCount() throws CoreException - { + public synchronized void resetInstallCount() throws CoreException { setAttribute( INSTALL_COUNT, 0 ); } /** * Increments the install count of this breakpoint */ - public synchronized void incrementInstallCount() throws CoreException - { + public synchronized void incrementInstallCount() throws CoreException { int count = getInstallCount(); setAttribute( INSTALL_COUNT, count + 1 ); } /** - * Returns the INSTALL_COUNT attribute of this breakpoint - * or 0 if the attribute is not set. + * Returns the INSTALL_COUNT attribute of this breakpoint or + * 0 if the attribute is not set. */ - public int getInstallCount() throws CoreException - { + public int getInstallCount() throws CoreException { return ensureMarker().getAttribute( INSTALL_COUNT, 0 ); } /** * Decrements the install count of this breakpoint. */ - public synchronized void decrementInstallCount() throws CoreException - { + public synchronized void decrementInstallCount() throws CoreException { int count = getInstallCount(); - if ( count > 0 ) - { + if ( count > 0 ) { setAttribute( INSTALL_COUNT, count - 1 ); } } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see org.eclipse.debug.core.model.Breakpoint#ensureMarker() */ - protected IMarker ensureMarker() throws DebugException - { + protected IMarker ensureMarker() throws DebugException { return super.ensureMarker(); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see org.eclipse.debug.core.model.Breakpoint#setAttribute(String, Object) */ - protected void setAttribute( String attributeName, Object value ) throws CoreException - { + protected void setAttribute( String attributeName, Object value ) throws CoreException { super.setAttribute( attributeName, value ); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see org.eclipse.cdt.debug.core.model.ICBreakpoint#isConditional() */ - public boolean isConditional() throws CoreException - { - return ( (getCondition() != null && getCondition().trim().length() > 0) || getIgnoreCount() > 0 ); + public boolean isConditional() throws CoreException { + return ((getCondition() != null && getCondition().trim().length() > 0) || getIgnoreCount() > 0); } - protected String getConditionText() throws CoreException - { + protected String getConditionText() throws CoreException { StringBuffer sb = new StringBuffer(); int ignoreCount = getIgnoreCount(); - if ( ignoreCount > 0 ) - { - sb.append( " [" ); //$NON-NLS-1$ - sb.append( CDebugCorePlugin.getResourceString("internal.core.breakpoints.CBreakpoint.ignore_count") ); //$NON-NLS-1$ - sb.append( ' ' ); - sb.append( ignoreCount ); - sb.append( ']' ); + if ( ignoreCount > 0 ) { + sb.append( MessageFormat.format( BreakpointMessages.getString( "CBreakpoint.1" ), new Integer[] { new Integer( ignoreCount ) } ) ); //$NON-NLS-1$ } String condition = getCondition(); - if ( condition != null && condition.length() > 0 ) - { - sb.append( CDebugCorePlugin.getResourceString("internal.core.breakpoints.CBreakpoint.if") ); //$NON-NLS-1$ - sb.append( condition ); + if ( condition != null && condition.length() > 0 ) { + sb.append( MessageFormat.format( BreakpointMessages.getString( "CBreakpoint.2" ), new String[] { condition } ) ); //$NON-NLS-1$ } return sb.toString(); } -} +} \ No newline at end of file diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CFunctionBreakpoint.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CFunctionBreakpoint.java index 5e09694bf45..3f247543cc1 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CFunctionBreakpoint.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CFunctionBreakpoint.java @@ -1,10 +1,16 @@ -/* - *(c) Copyright QNX Software Systems Ltd. 2002. - * All Rights Reserved. +/********************************************************************** + * Copyright (c) 2004 QNX Software Systems and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html * - */ + * Contributors: + * QNX Software Systems - Initial API and implementation + ***********************************************************************/ package org.eclipse.cdt.debug.internal.core.breakpoints; +import java.text.MessageFormat; import java.util.Map; import org.eclipse.cdt.debug.core.model.ICFunctionBreakpoint; @@ -12,21 +18,16 @@ import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IMarker; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.CoreException; -import org.eclipse.debug.core.DebugException; -import org.eclipse.cdt.debug.core.CDebugCorePlugin; /** - * - * Enter type comment. - * - * @since Aug 21, 2002 + * A breakpoint that suspends the execution when a function is entered. */ -public class CFunctionBreakpoint extends CBreakpoint implements ICFunctionBreakpoint -{ +public class CFunctionBreakpoint extends CBreakpoint implements ICFunctionBreakpoint { + private static final String C_FUNCTION_BREAKPOINT = "org.eclipse.cdt.debug.core.cFunctionBreakpointMarker"; //$NON-NLS-1$ /** - * Breakpoint attribute storing the function this breakpoint suspends + * Breakpoint attribute storing the function this breakpoint suspends * execution in (value "org.eclipse.cdt.debug.core.function"). * This attribute is a String. */ @@ -35,101 +36,98 @@ public class CFunctionBreakpoint extends CBreakpoint implements ICFunctionBreakp /** * Constructor for CFunctionBreakpoint. */ - public CFunctionBreakpoint() - { + public CFunctionBreakpoint() { } /** * Constructor for CFunctionBreakpoint. */ - public CFunctionBreakpoint( IResource resource, Map attributes, boolean add ) throws DebugException - { + public CFunctionBreakpoint( IResource resource, Map attributes, boolean add ) throws CoreException { super( resource, getMarkerType(), attributes, add ); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see org.eclipse.cdt.debug.core.ICFunctionBreakpoint#getFunction() */ - public String getFunction() throws CoreException - { + public String getFunction() throws CoreException { return ensureMarker().getAttribute( FUNCTION, null ); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see org.eclipse.cdt.debug.core.ICFunctionBreakpoint#setFunction(String) */ - public void setFunction( String function ) throws CoreException - { + public void setFunction( String function ) throws CoreException { setAttribute( FUNCTION, function ); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see org.eclipse.debug.core.model.ILineBreakpoint#getLineNumber() */ - public int getLineNumber() throws CoreException - { + public int getLineNumber() throws CoreException { return ensureMarker().getAttribute( IMarker.LINE_NUMBER, -1 ); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see org.eclipse.debug.core.model.ILineBreakpoint#getCharStart() */ - public int getCharStart() throws CoreException - { + public int getCharStart() throws CoreException { return ensureMarker().getAttribute( IMarker.CHAR_START, -1 ); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see org.eclipse.debug.core.model.ILineBreakpoint#getCharEnd() */ - public int getCharEnd() throws CoreException - { + public int getCharEnd() throws CoreException { return ensureMarker().getAttribute( IMarker.CHAR_END, -1 ); } /** * Returns the type of marker associated with this type of breakpoints */ - public static String getMarkerType() - { + public static String getMarkerType() { return C_FUNCTION_BREAKPOINT; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see org.eclipse.cdt.debug.core.model.ICFunctionBreakpoint#getFileName() */ - public String getFileName() throws CoreException - { + public String getFileName() throws CoreException { IResource resource = ensureMarker().getResource(); - if ( resource instanceof IFile ) - { + if ( resource instanceof IFile ) { return ((IFile)resource).getLocation().lastSegment(); } return null; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see org.eclipse.cdt.debug.internal.core.breakpoints.CBreakpoint#getMarkerMessage() */ - protected String getMarkerMessage() throws CoreException - { - StringBuffer sb = new StringBuffer( CDebugCorePlugin.getResourceString("internal.core.breakpoints.CFunctionBreakpoint.Function_breakpoint") ); //$NON-NLS-1$ + protected String getMarkerMessage() throws CoreException { + StringBuffer sb = new StringBuffer( BreakpointMessages.getString( "CFunctionBreakpoint.2" ) ); //$NON-NLS-1$ String name = ensureMarker().getResource().getName(); - if ( name != null && name.length() > 0 ) - { + if ( name != null && name.length() > 0 ) { sb.append( ' ' ); sb.append( name ); } String function = getFunction(); - if ( function != null && function.trim().length() > 0 ) - { - sb.append( " [" ); //$NON-NLS-1$ - sb.append( CDebugCorePlugin.getResourceString("internal.core.breakpoints.CFunctionBreakpoint.function") ); //$NON-NLS-1$ - sb.append( ' ' ); - sb.append( function.trim() ); - sb.append( ']' ); + if ( function != null && function.trim().length() > 0 ) { + sb.append( MessageFormat.format( BreakpointMessages.getString( "CFunctionBreakpoint.3" ), new String[] { function.trim() } ) ); //$NON-NLS-1$ } sb.append( getConditionText() ); return sb.toString(); } -} +} \ No newline at end of file diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CLineBreakpoint.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CLineBreakpoint.java index 93528d6615d..2e4c758df8c 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CLineBreakpoint.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CLineBreakpoint.java @@ -1,98 +1,95 @@ -/* - *(c) Copyright QNX Software Systems Ltd. 2002. - * All Rights Reserved. +/********************************************************************** + * Copyright (c) 2004 QNX Software Systems and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html * - */ + * Contributors: + * QNX Software Systems - Initial API and implementation + ***********************************************************************/ package org.eclipse.cdt.debug.internal.core.breakpoints; +import java.text.MessageFormat; import java.util.Map; import org.eclipse.cdt.debug.core.model.ICLineBreakpoint; import org.eclipse.core.resources.IMarker; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.CoreException; -import org.eclipse.debug.core.DebugException; -import org.eclipse.cdt.debug.core.CDebugCorePlugin; /** - * - * Enter type comment. - * - * @since Aug 21, 2002 + * A breakpoint that suspends the execution when a particular line of code is + * reached. */ -public class CLineBreakpoint extends CBreakpoint implements ICLineBreakpoint -{ +public class CLineBreakpoint extends CBreakpoint implements ICLineBreakpoint { + private static final String C_LINE_BREAKPOINT = "org.eclipse.cdt.debug.core.cLineBreakpointMarker"; //$NON-NLS-1$ /** * Constructor for CLineBreakpoint. */ - public CLineBreakpoint() - { + public CLineBreakpoint() { } /** * Constructor for CLineBreakpoint. */ - public CLineBreakpoint( IResource resource, Map attributes, boolean add ) throws DebugException - { + public CLineBreakpoint( IResource resource, Map attributes, boolean add ) throws CoreException { super( resource, getMarkerType(), attributes, add ); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see org.eclipse.debug.core.model.ILineBreakpoint#getLineNumber() */ - public int getLineNumber() throws CoreException - { + public int getLineNumber() throws CoreException { return ensureMarker().getAttribute( IMarker.LINE_NUMBER, -1 ); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see org.eclipse.debug.core.model.ILineBreakpoint#getCharStart() */ - public int getCharStart() throws CoreException - { + public int getCharStart() throws CoreException { return ensureMarker().getAttribute( IMarker.CHAR_START, -1 ); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see org.eclipse.debug.core.model.ILineBreakpoint#getCharEnd() */ - public int getCharEnd() throws CoreException - { + public int getCharEnd() throws CoreException { return ensureMarker().getAttribute( IMarker.CHAR_END, -1 ); } /** * Returns the type of marker associated with this type of breakpoints */ - public static String getMarkerType() - { + public static String getMarkerType() { return C_LINE_BREAKPOINT; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see org.eclipse.cdt.debug.internal.core.breakpoints.CBreakpoint#getMarkerMessage() */ - protected String getMarkerMessage() throws CoreException - { - StringBuffer sb = new StringBuffer( CDebugCorePlugin.getResourceString("internal.core.breakpoints.CLineBreakpoint.Line_breakpoint") ); //$NON-NLS-1$ + protected String getMarkerMessage() throws CoreException { + StringBuffer sb = new StringBuffer( BreakpointMessages.getString( "CLineBreakpoint.1" ) ); //$NON-NLS-1$ String fileName = ensureMarker().getResource().getName(); - if ( fileName != null && fileName.length() > 0 ) - { + if ( fileName != null && fileName.length() > 0 ) { sb.append( ' ' ); sb.append( fileName ); } int lineNumber = getLineNumber(); - if ( lineNumber > 0 ) - { - sb.append( " [" ); //$NON-NLS-1$ - sb.append( CDebugCorePlugin.getResourceString("internal.core.breakpoints.CLineBreakpoint.line") ); //$NON-NLS-1$ - sb.append( ' ' ); - sb.append( lineNumber ); - sb.append( ']' ); + if ( lineNumber > 0 ) { + sb.append( MessageFormat.format( BreakpointMessages.getString( "CLineBreakpoint.2" ), new Integer[] { new Integer( lineNumber ) } ) ); //$NON-NLS-1$ } sb.append( getConditionText() ); return sb.toString(); } -} +} \ No newline at end of file diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CWatchpoint.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CWatchpoint.java index 6e12128ae05..5a3b59a16ab 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CWatchpoint.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CWatchpoint.java @@ -1,106 +1,102 @@ -/* - *(c) Copyright QNX Software Systems Ltd. 2002. - * All Rights Reserved. +/********************************************************************** + * Copyright (c) 2004 QNX Software Systems and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html * - */ + * Contributors: + * QNX Software Systems - Initial API and implementation + ***********************************************************************/ package org.eclipse.cdt.debug.internal.core.breakpoints; +import java.text.MessageFormat; import java.util.Map; -import org.eclipse.cdt.debug.core.CDebugCorePlugin; import org.eclipse.cdt.debug.core.model.ICWatchpoint; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.CoreException; -import org.eclipse.debug.core.DebugException; /** - * - * Enter type comment. - * - * @since Sep 4, 2002 + * A watchpoint specific to the C/C++ debug model. */ -public class CWatchpoint extends CBreakpoint implements ICWatchpoint -{ +public class CWatchpoint extends CBreakpoint implements ICWatchpoint { + private static final String C_WATCHPOINT = "org.eclipse.cdt.debug.core.cWatchpointMarker"; //$NON-NLS-1$ /** * Constructor for CWatchpoint. */ - public CWatchpoint() - { + public CWatchpoint() { } /** * Constructor for CWatchpoint. */ - public CWatchpoint( IResource resource, Map attributes, boolean add ) throws DebugException - { + public CWatchpoint( IResource resource, Map attributes, boolean add ) throws CoreException { super( resource, getMarkerType(), attributes, add ); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see org.eclipse.cdt.debug.core.ICWatchpoint#isWriteType() */ - public boolean isWriteType() throws CoreException - { + public boolean isWriteType() throws CoreException { return ensureMarker().getAttribute( WRITE, true ); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see org.eclipse.cdt.debug.core.ICWatchpoint#isReadType() */ - public boolean isReadType() throws CoreException - { + public boolean isReadType() throws CoreException { return ensureMarker().getAttribute( READ, false ); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see org.eclipse.cdt.debug.core.ICWatchpoint#getExpression() */ - public String getExpression() throws CoreException - { + public String getExpression() throws CoreException { return ensureMarker().getAttribute( EXPRESSION, "" ); //$NON-NLS-1$ } /** * Returns the type of marker associated with this type of breakpoints */ - public static String getMarkerType() - { + public static String getMarkerType() { return C_WATCHPOINT; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see org.eclipse.cdt.debug.internal.core.breakpoints.CBreakpoint#getMarkerMessage() */ - protected String getMarkerMessage() throws CoreException - { + protected String getMarkerMessage() throws CoreException { StringBuffer sb = new StringBuffer(); if ( isWriteType() && !isReadType() ) - sb.append( CDebugCorePlugin.getResourceString("internal.core.breakpoints.CWatchpoint.Write_watchpoint") ); //$NON-NLS-1$ + sb.append( BreakpointMessages.getString( "CWatchpoint.1" ) ); //$NON-NLS-1$ else if ( !isWriteType() && isReadType() ) - sb.append( CDebugCorePlugin.getResourceString("internal.core.breakpoints.CWatchpoint.Read_watchpoint") ); //$NON-NLS-1$ + sb.append( BreakpointMessages.getString( "CWatchpoint.2" ) ); //$NON-NLS-1$ else if ( isWriteType() && isReadType() ) - sb.append( CDebugCorePlugin.getResourceString("internal.core.breakpoints.CWatchpoint.Access_watchpoint") ); //$NON-NLS-1$ + sb.append( BreakpointMessages.getString( "CWatchpoint.3" ) ); //$NON-NLS-1$ else - sb.append( CDebugCorePlugin.getResourceString("internal.core.breakpoints.CWatchpoint.Watchpoint") ); //$NON-NLS-1$ + sb.append( BreakpointMessages.getString( "CWatchpoint.4" ) ); //$NON-NLS-1$ sb.append( ' ' ); String fileName = ensureMarker().getResource().getName(); - if ( fileName != null && fileName.length() > 0 ) - { + if ( fileName != null && fileName.length() > 0 ) { sb.append( ' ' ); sb.append( fileName ); } String expression = getExpression(); - if ( expression != null && expression.length() > 0 ) - { - sb.append( " " ); //$NON-NLS-1$ - sb.append( CDebugCorePlugin.getResourceString("internal.core.breakpoints.CWatchpoint.at") ); //$NON-NLS-1$ - sb.append( " \'" ); //$NON-NLS-1$ - sb.append( expression ); - sb.append( '\'' ); + if ( expression != null && expression.length() > 0 ) { + sb.append( MessageFormat.format( BreakpointMessages.getString( "CWatchpoint.5" ), new String[]{ expression } ) ); //$NON-NLS-1$ } sb.append( getConditionText() ); return sb.toString(); } -} +} \ No newline at end of file diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CDebugTarget.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CDebugTarget.java index 5cef0a6156d..bbb1e7ef4fe 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CDebugTarget.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CDebugTarget.java @@ -19,7 +19,6 @@ import org.eclipse.cdt.core.model.IParent; import org.eclipse.cdt.debug.core.CDebugCorePlugin; import org.eclipse.cdt.debug.core.CDebugModel; import org.eclipse.cdt.debug.core.CDebugUtils; -import org.eclipse.cdt.debug.core.ICBreakpointManager; import org.eclipse.cdt.debug.core.ICMemoryManager; import org.eclipse.cdt.debug.core.ICRegisterManager; import org.eclipse.cdt.debug.core.ICSharedLibraryManager; @@ -991,7 +990,7 @@ public class CDebugTarget extends CDebugElement return this; if ( adapter.equals( IJumpToAddress.class ) ) return this; - if ( adapter.equals( ICBreakpointManager.class ) ) + if ( adapter.equals( CBreakpointManager.class ) ) return getBreakpointManager(); if ( adapter.equals( DisassemblyManager.class ) ) return getDisassemblyManager(); diff --git a/debug/org.eclipse.cdt.debug.ui/ChangeLog b/debug/org.eclipse.cdt.debug.ui/ChangeLog index 5f6384ea4ed..dc4402314c6 100644 --- a/debug/org.eclipse.cdt.debug.ui/ChangeLog +++ b/debug/org.eclipse.cdt.debug.ui/ChangeLog @@ -1,3 +1,15 @@ +2004-04-12 Mikhail Khodjaiants + Implementing retargettable breakpoint related actions. + * AddAddressBreakpointActionDelegate.java + * AddWatchpointActionDelegate.java + * ManageBreakpointRulerAction.java + * ManageBreakpointRulerActionDelegate.java + * ManageFunctionBreakpointActionDelegate.java + * ToggleBreakpointAdapter.java + * DisassemblyMarkerAnnotationModel.java + * plugin.properties + * plugin.xml + 2004-04-11 Mikhail Khodjaiants Implementation of the "Run To Line" retargettable action. * plugin.xml diff --git a/debug/org.eclipse.cdt.debug.ui/plugin.properties b/debug/org.eclipse.cdt.debug.ui/plugin.properties index 85f4b077d9f..e8db6e1f70f 100644 --- a/debug/org.eclipse.cdt.debug.ui/plugin.properties +++ b/debug/org.eclipse.cdt.debug.ui/plugin.properties @@ -28,7 +28,7 @@ SwitchToDisassemblyAction.tooltip=Disassembly Mode On/Off ShowDebuggerConsoleAction.label=Show Debugger Console ShowDebuggerConsoleAction.tooltip=Show Debugger Console On Target Selection -AddBreakpoint.label=Add/Remove &Breakpoint +AddBreakpoint.label=Add &Breakpoint EnableBreakpoint.label=T&oggle Breakpoint BreakpointProperties.label=Breakpoint P&roperties... GlobalManageBreakpointAction.label=Add/Remove Brea&kpoint (C/C++) diff --git a/debug/org.eclipse.cdt.debug.ui/plugin.xml b/debug/org.eclipse.cdt.debug.ui/plugin.xml index 485dc25738e..6193fe22ced 100644 --- a/debug/org.eclipse.cdt.debug.ui/plugin.xml +++ b/debug/org.eclipse.cdt.debug.ui/plugin.xml @@ -69,8 +69,8 @@ + relationship="stack" + id="org.eclipse.cdt.debug.ui.MemoryView"> @@ -78,8 +78,8 @@ + relationship="stack" + id="org.eclipse.cdt.debug.ui.SharedLibrariesView"> @@ -87,8 +87,8 @@ + relationship="stack" + id="org.eclipse.cdt.debug.ui.SignalsView"> @@ -177,20 +177,6 @@ - - - - - - @@ -693,8 +679,8 @@ label="%SignalAction.label" icon="icons/full/clcl16/signal_co.gif" helpContextId="signal_action_context" - tooltip="%SignalAction.tooltip" class="org.eclipse.cdt.debug.internal.ui.actions.SignalActionDelegate" + tooltip="%SignalAction.tooltip" menubarPath="additions" enablesFor="1" id="org.eclipse.cdt.debug.internal.ui.actions.SignalActionDelegate"> @@ -709,8 +695,8 @@ label="%SignalPropertiesAction.label" style="pulldown" helpContextId="signal_properties_action_context" - tooltip="%SignalPropertiesAction.tooltip" class="org.eclipse.cdt.debug.internal.ui.actions.SignalPropertiesActionDelegate" + tooltip="%SignalPropertiesAction.tooltip" enablesFor="1" id="org.eclipse.cdt.debug.ui.SignalPropertiesAction"> @@ -746,8 +732,8 @@ @@ -762,8 +748,8 @@ label="%CastToTypeAction.label" icon="icons/full/clcl16/casttotype_co.gif" helpContextId="cast_to_type_action_context" - class="org.eclipse.cdt.debug.internal.ui.actions.CastToTypeActionDelegate" tooltip="%CastToTypeAction.tooltip" + class="org.eclipse.cdt.debug.internal.ui.actions.CastToTypeActionDelegate" menubarPath="additions" enablesFor="1" id="org.eclipse.cdt.debug.internal.ui.actions.CastToTypeActionDelegate"> @@ -778,8 +764,8 @@ label="%CastToArrayAction.label" icon="icons/full/clcl16/showasarray_co.gif" helpContextId="cast_to_array_action_context" - class="org.eclipse.cdt.debug.internal.ui.actions.CastToArrayActionDelegate" tooltip="%CastToArrayAction.tooltip" + class="org.eclipse.cdt.debug.internal.ui.actions.CastToArrayActionDelegate" menubarPath="additions" enablesFor="1" id="org.eclipse.cdt.debug.internal.ui.actions.CastToArrayActionDelegate"> @@ -798,8 +784,8 @@ label="%ManageFunctionBreakpointAction.label" icon="icons/full/obj16/funbrkp_obj.gif" helpContextId="manage_function_breakpoint_action_context" - class="org.eclipse.cdt.debug.internal.ui.actions.ManageFunctionBreakpointActionDelegate" tooltip="%ManageFunctionBreakpointAction.tooltip" + class="org.eclipse.cdt.debug.internal.ui.actions.ManageFunctionBreakpointActionDelegate" menubarPath="additions" enablesFor="1" id="org.eclipse.cdt.debug.internal.ui.actions.ManageFunctionBreakpointActionDelegate"> @@ -818,8 +804,8 @@ label="%DisableVariablesAction.label" icon="icons/full/clcl16/disabled_co.gif" helpContextId="disable_variables_action_context" - class="org.eclipse.cdt.debug.internal.ui.actions.DisableVariablesActionDelegate" tooltip="%DisableVariablesAction.tooltip" + class="org.eclipse.cdt.debug.internal.ui.actions.DisableVariablesActionDelegate" menubarPath="variableGroup" enablesFor="2+" id="org.eclipse.cdt.debug.internal.ui.actions.DisableVariablesActionDelegate"> @@ -831,8 +817,8 @@ label="%EnableVariablesAction.label" icon="icons/full/clcl16/enabled_co.gif" helpContextId="enable_variables_action_context" - class="org.eclipse.cdt.debug.internal.ui.actions.EnableVariablesActionDelegate" tooltip="%EnableVariablesAction.tooltip" + class="org.eclipse.cdt.debug.internal.ui.actions.EnableVariablesActionDelegate" menubarPath="variableGroup" enablesFor="2+" id="org.eclipse.cdt.debug.internal.ui.actions.EnableVariablesActionDelegate"> @@ -855,8 +841,8 @@ disabledIcon="icons/full/dlcl16/restart.gif" enablesFor="1" icon="icons/full/elcl16/restart.gif" - label="%RestartAction.label" helpContextId="restart_action_context" + label="%RestartAction.label" tooltip="%RestartAction.tooltip"> @@ -914,11 +900,11 @@ id="org.eclipse.cdt.debug.ui.breakpointView.menu"> @@ -940,8 +926,8 @@ disabledIcon="icons/full/dlcl16/watch_globals.gif" enablesFor="1" icon="icons/full/elcl16/watch_globals.gif" - label="%AddGlobalsAction.label" helpContextId="add_globals_action_context" + label="%AddGlobalsAction.label" tooltip="%AddGlobalsAction.tooltip"> @@ -1051,20 +1037,20 @@ @@ -1121,16 +1107,16 @@ point="org.eclipse.ui.editors"> @@ -1152,8 +1138,8 @@ + parentId="org.eclipse.debug.ui.debugging" + id="org.eclipse.cdt.debug.ui.debugging">
    diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/AddAddressBreakpointActionDelegate.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/AddAddressBreakpointActionDelegate.java index 3bb33b41c61..2ca406bbd71 100644 --- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/AddAddressBreakpointActionDelegate.java +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/AddAddressBreakpointActionDelegate.java @@ -71,12 +71,12 @@ public class AddAddressBreakpointActionDelegate extends AbstractListenerActionDe new AddressValidator() ); if ( dialog.open() == Window.OK ) { - CDebugModel.createAddressBreakpoint( ((IExecFileInfo)getDebugTarget( element ).getAdapter( IExecFileInfo.class )).getExecFile(), - parseValue( dialog.getValue().trim() ), - true, - 0, - "", //$NON-NLS-1$ - true ); +// CDebugModel.createAddressBreakpoint( ((IExecFileInfo)getDebugTarget( element ).getAdapter( IExecFileInfo.class )).getExecFile(), +// parseValue( dialog.getValue().trim() ), +// true, +// 0, +// "", //$NON-NLS-1$ +// true ); } } diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/AddWatchpointActionDelegate.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/AddWatchpointActionDelegate.java index 90e8e2f4dc4..cd45ab57007 100644 --- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/AddWatchpointActionDelegate.java +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/AddWatchpointActionDelegate.java @@ -1,11 +1,16 @@ -/* - *(c) Copyright QNX Software Systems Ltd. 2002. - * All Rights Reserved. +/********************************************************************** + * Copyright (c) 2004 QNX Software Systems and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html * - */ + * Contributors: + * QNX Software Systems - Initial API and implementation + ***********************************************************************/ package org.eclipse.cdt.debug.internal.ui.actions; -import org.eclipse.cdt.debug.core.CDebugModel; +import org.eclipse.cdt.debug.core.CDIDebugModel; import org.eclipse.cdt.debug.ui.CDebugUIPlugin; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IProject; @@ -34,35 +39,34 @@ import org.eclipse.ui.texteditor.ITextEditor; * * @since Sep 4, 2002 */ -public class AddWatchpointActionDelegate extends ActionDelegate - implements IWorkbenchWindowActionDelegate, - IPartListener -{ +public class AddWatchpointActionDelegate extends ActionDelegate implements IWorkbenchWindowActionDelegate, IPartListener { + private boolean fInitialized = false; + private IAction fAction = null; + private ITextEditor fTextEditor = null; + private IWorkbenchWindow fWorkbenchWindow = null; + private IProject fProject = null; /** * Constructor for AddWatchpointActionDelegate. */ - public AddWatchpointActionDelegate() - { + public AddWatchpointActionDelegate() { } /* (non-Javadoc) * @see org.eclipse.ui.IWorkbenchWindowActionDelegate#dispose() */ - public void dispose() - { + public void dispose() { } /* (non-Javadoc) * @see org.eclipse.ui.IWorkbenchWindowActionDelegate#init(IWorkbenchWindow) */ - public void init( IWorkbenchWindow window ) - { + public void init( IWorkbenchWindow window ) { setWorkbenchWindow( window ); window.getPartService().addPartListener( this ); } @@ -70,41 +74,28 @@ public class AddWatchpointActionDelegate extends ActionDelegate /* (non-Javadoc) * @see org.eclipse.ui.IActionDelegate#run(IAction) */ - public void run( IAction action ) - { + public void run( IAction action ) { String expression = getSelectedExpression(); - AddWatchpointDialog dlg = new AddWatchpointDialog( CDebugUIPlugin.getActiveWorkbenchShell(), - true, - false, - expression ); + AddWatchpointDialog dlg = new AddWatchpointDialog( CDebugUIPlugin.getActiveWorkbenchShell(), true, false, expression ); if ( dlg.open() != Window.OK ) return; - if ( getTextEditor() != null ) - { + if ( getTextEditor() != null ) { update(); - addWatchpoint( getTextEditor().getEditorInput(), - dlg.getWriteAccess(), - dlg.getReadAccess(), - dlg.getExpression() ); + addWatchpoint( getTextEditor().getEditorInput(), dlg.getWriteAccess(), dlg.getReadAccess(), dlg.getExpression() ); } } /* (non-Javadoc) * @see org.eclipse.ui.IActionDelegate#selectionChanged(IAction, ISelection) */ - public void selectionChanged( IAction action, ISelection selection ) - { - if ( !fInitialized ) - { + public void selectionChanged( IAction action, ISelection selection ) { + if ( !fInitialized ) { setAction( action ); - if ( getWorkbenchWindow() != null ) - { + if ( getWorkbenchWindow() != null ) { IWorkbenchPage page = getWorkbenchWindow().getActivePage(); - if ( page != null ) - { + if ( page != null ) { IEditorPart part = page.getActiveEditor(); - if ( part instanceof ITextEditor ) - { + if ( part instanceof ITextEditor ) { setTextEditor( (ITextEditor)part ); } } @@ -113,53 +104,42 @@ public class AddWatchpointActionDelegate extends ActionDelegate } } - protected IAction getAction() - { + protected IAction getAction() { return fAction; } - protected void setAction( IAction action ) - { + protected void setAction( IAction action ) { fAction = action; } - protected IWorkbenchWindow getWorkbenchWindow() - { + protected IWorkbenchWindow getWorkbenchWindow() { return fWorkbenchWindow; } - protected void setWorkbenchWindow( IWorkbenchWindow workbenchWindow ) - { + protected void setWorkbenchWindow( IWorkbenchWindow workbenchWindow ) { fWorkbenchWindow = workbenchWindow; } - protected ITextEditor getTextEditor() - { + protected ITextEditor getTextEditor() { return fTextEditor; } - protected void setTextEditor( ITextEditor editor ) - { + protected void setTextEditor( ITextEditor editor ) { fTextEditor = editor; - if ( fTextEditor != null ) - { + if ( fTextEditor != null ) { IEditorInput input = fTextEditor.getEditorInput(); - IFile file = ( input != null && input instanceof IFileEditorInput ) ? ((IFileEditorInput)input).getFile() : null; - setProject( ( file != null ) ? file.getProject() : null ); + IFile file = (input != null && input instanceof IFileEditorInput) ? ((IFileEditorInput)input).getFile() : null; + setProject( (file != null) ? file.getProject() : null ); } setEnabledState( editor ); } - - protected String getSelectedExpression() - { - if ( getTextEditor() != null ) - { + + protected String getSelectedExpression() { + if ( getTextEditor() != null ) { ISelectionProvider sp = getTextEditor().getSelectionProvider(); - if ( sp != null ) - { + if ( sp != null ) { ISelection s = sp.getSelection(); - if ( s instanceof ITextSelection ) - { + if ( s instanceof ITextSelection ) { return ((ITextSelection)s).getText().trim(); } } @@ -167,70 +147,51 @@ public class AddWatchpointActionDelegate extends ActionDelegate return ""; //$NON-NLS-1$ } - protected void update( ISelection selection ) - { + protected void update( ISelection selection ) { setEnabledState( getTextEditor() ); } - protected void update() - { + protected void update() { IAction action = getAction(); - if ( action != null ) - { + if ( action != null ) { action.setEnabled( getTextEditor() != null ); } } - protected void setEnabledState( ITextEditor editor ) - { - if ( getAction() != null ) - { + protected void setEnabledState( ITextEditor editor ) { + if ( getAction() != null ) { getAction().setEnabled( editor != null ); } } - protected IProject getProject() - { + protected IProject getProject() { return fProject; } - protected void setProject( IProject project ) - { + protected void setProject( IProject project ) { fProject = project; } - - protected void addWatchpoint( IEditorInput editorInput, boolean write, boolean read, String expression ) - { + + protected void addWatchpoint( IEditorInput editorInput, boolean write, boolean read, String expression ) { if ( getProject() == null ) return; IDocument document = getTextEditor().getDocumentProvider().getDocument( editorInput ); WatchpointExpressionVerifier wev = new WatchpointExpressionVerifier(); - if ( wev.isValidExpression( document, expression ) ) - { - try - { - CDebugModel.createWatchpoint( getProject(), - write, - read, - expression, - true, - 0, - "", //$NON-NLS-1$ - true ); + if ( wev.isValidExpression( document, expression ) ) { + try { + CDIDebugModel.createWatchpoint( "", getProject(), write, read, expression, true, 0, "", true ); //$NON-NLS-1$ } - catch( CoreException ce ) - { - CDebugUIPlugin.errorDialog( CDebugUIPlugin.getResourceString("internal.ui.actions.AddWatchpointActionDelegate.Cannot_add_watchpoint"), ce ); //$NON-NLS-1$ + catch( CoreException ce ) { + CDebugUIPlugin.errorDialog( CDebugUIPlugin.getResourceString( "internal.ui.actions.AddWatchpointActionDelegate.Cannot_add_watchpoint" ), ce ); //$NON-NLS-1$ } } } + /* (non-Javadoc) * @see org.eclipse.ui.IPartListener#partActivated(IWorkbenchPart) */ - public void partActivated( IWorkbenchPart part ) - { - if ( part instanceof ITextEditor ) - { + public void partActivated( IWorkbenchPart part ) { + if ( part instanceof ITextEditor ) { setTextEditor( (ITextEditor)part ); } } @@ -238,20 +199,16 @@ public class AddWatchpointActionDelegate extends ActionDelegate /* (non-Javadoc) * @see org.eclipse.ui.IPartListener#partBroughtToTop(IWorkbenchPart) */ - public void partBroughtToTop( IWorkbenchPart part ) - { + public void partBroughtToTop( IWorkbenchPart part ) { } /* (non-Javadoc) * @see org.eclipse.ui.IPartListener#partClosed(IWorkbenchPart) */ - public void partClosed( IWorkbenchPart part ) - { - if ( part == getTextEditor() ) - { + public void partClosed( IWorkbenchPart part ) { + if ( part == getTextEditor() ) { setTextEditor( null ); - if ( getAction() != null ) - { + if ( getAction() != null ) { getAction().setEnabled( false ); } } @@ -260,21 +217,17 @@ public class AddWatchpointActionDelegate extends ActionDelegate /* (non-Javadoc) * @see org.eclipse.ui.IPartListener#partDeactivated(IWorkbenchPart) */ - public void partDeactivated( IWorkbenchPart part ) - { + public void partDeactivated( IWorkbenchPart part ) { } /* (non-Javadoc) * @see org.eclipse.ui.IPartListener#partOpened(IWorkbenchPart) */ - public void partOpened( IWorkbenchPart part ) - { - if ( part instanceof ITextEditor ) - { - if ( getTextEditor() == null ) - { + public void partOpened( IWorkbenchPart part ) { + if ( part instanceof ITextEditor ) { + if ( getTextEditor() == null ) { setTextEditor( (ITextEditor)part ); } } } -} +} \ No newline at end of file diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/ManageBreakpointActionDelegate.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/ManageBreakpointActionDelegate.java deleted file mode 100644 index 48dc172ca0e..00000000000 --- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/ManageBreakpointActionDelegate.java +++ /dev/null @@ -1,317 +0,0 @@ -/* - *(c) Copyright QNX Software Systems Ltd. 2002. - * All Rights Reserved. - * - */ -package org.eclipse.cdt.debug.internal.ui.actions; - -import org.eclipse.cdt.debug.core.CDebugModel; -import org.eclipse.cdt.debug.core.model.ICLineBreakpoint; -import org.eclipse.cdt.debug.ui.CDebugUIPlugin; -import org.eclipse.core.resources.IFile; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.debug.core.DebugPlugin; -import org.eclipse.jface.action.IAction; -import org.eclipse.jface.text.IDocument; -import org.eclipse.jface.text.ITextSelection; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.jface.viewers.ISelectionProvider; -import org.eclipse.ui.IEditorInput; -import org.eclipse.ui.IEditorPart; -import org.eclipse.ui.IFileEditorInput; -import org.eclipse.ui.IPartListener; -import org.eclipse.ui.IWorkbenchPage; -import org.eclipse.ui.IWorkbenchPart; -import org.eclipse.ui.IWorkbenchWindow; -import org.eclipse.ui.IWorkbenchWindowActionDelegate; -import org.eclipse.ui.texteditor.ITextEditor; - -/** - * - * Action for adding/removing breakpoints at a line in the source file - * shown in the active C/C++ Editor. - * - * @since Sep 3, 2002 - */ -public class ManageBreakpointActionDelegate implements IWorkbenchWindowActionDelegate, - IPartListener -{ - private boolean fInitialized = false; - private IAction fAction = null; - private int fLineNumber; - private ITextEditor fTextEditor = null; - private IWorkbenchWindow fWorkbenchWindow = null; - private IFile fFile = null; - - /** - * Constructor for ManageBreakpointActionDelegate. - */ - public ManageBreakpointActionDelegate() - { - } - - /* (non-Javadoc) - * @see org.eclipse.ui.IWorkbenchWindowActionDelegate#dispose() - */ - public void dispose() - { - getWorkbenchWindow().getPartService().removePartListener( this ); - } - - /* (non-Javadoc) - * @see org.eclipse.ui.IWorkbenchWindowActionDelegate#init(IWorkbenchWindow) - */ - public void init( IWorkbenchWindow window ) - { - setWorkbenchWindow( window ); - window.getPartService().addPartListener( this ); - } - - /* (non-Javadoc) - * @see org.eclipse.ui.IPartListener#partActivated(IWorkbenchPart) - */ - public void partActivated( IWorkbenchPart part ) - { - if ( part instanceof ITextEditor ) - { - setTextEditor( (ITextEditor)part ); - } - } - - /* (non-Javadoc) - * @see org.eclipse.ui.IPartListener#partBroughtToTop(IWorkbenchPart) - */ - public void partBroughtToTop( IWorkbenchPart part ) - { - } - - /* (non-Javadoc) - * @see org.eclipse.ui.IPartListener#partClosed(IWorkbenchPart) - */ - public void partClosed( IWorkbenchPart part ) - { - if ( part == getTextEditor() ) - { - setTextEditor( null ); - if ( getAction() != null ) - { - getAction().setEnabled( false ); - } - } - } - - /* (non-Javadoc) - * @see org.eclipse.ui.IPartListener#partDeactivated(IWorkbenchPart) - */ - public void partDeactivated( IWorkbenchPart part ) - { - } - - /* (non-Javadoc) - * @see org.eclipse.ui.IPartListener#partOpened(IWorkbenchPart) - */ - public void partOpened( IWorkbenchPart part ) - { - if ( part instanceof ITextEditor ) - { - if ( getTextEditor() == null ) - { - setTextEditor( (ITextEditor)part ); - } - } - } - - /* (non-Javadoc) - * @see org.eclipse.ui.IActionDelegate#run(IAction) - */ - public void run( IAction action ) - { - if ( getTextEditor() != null ) - { - update(); - manageBreakpoint( getTextEditor().getEditorInput() ); - } - } - - protected void update( ISelection selection ) - { - setEnabledState( getTextEditor() ); - } - - protected void update() - { - IAction action = getAction(); - if ( action != null ) - { - if ( getTextEditor() != null ) - { - breakpointExists( getTextEditor().getEditorInput() ); - } - action.setEnabled( getTextEditor() != null && getFile() != null ); - } - } - - /* (non-Javadoc) - * @see org.eclipse.ui.IActionDelegate#selectionChanged(IAction, ISelection) - */ - public void selectionChanged( IAction action, ISelection selection ) - { - if ( !fInitialized ) - { - setAction( action ); - if ( getWorkbenchWindow() != null ) - { - IWorkbenchPage page = getWorkbenchWindow().getActivePage(); - if ( page != null ) - { - IEditorPart part = page.getActiveEditor(); - if ( part instanceof ITextEditor ) - { - setTextEditor( (ITextEditor)part ); - update( getTextEditor().getSelectionProvider().getSelection() ); - } - } - } - fInitialized = true; - } - update( selection ); - } - - /** - * Manages a breakpoint. - */ - protected void manageBreakpoint( IEditorInput editorInput ) - { - ISelectionProvider sp = getTextEditor().getSelectionProvider(); - if ( sp == null || getFile() == null ) - { - beep(); - return; - } - ISelection selection = sp.getSelection(); - if ( selection instanceof ITextSelection ) - { - if ( getFile() == null ) - return; - IDocument document = getTextEditor().getDocumentProvider().getDocument( editorInput ); - BreakpointLocationVerifier bv = new BreakpointLocationVerifier(); - int lineNumber = bv.getValidLineBreakpointLocation( document, ((ITextSelection)selection).getStartLine()); - if ( lineNumber > -1 ) - { - try - { - ICLineBreakpoint breakpoint = CDebugModel.lineBreakpointExists( getFile().getLocation().toOSString(), lineNumber ); - if ( breakpoint != null ) - { - DebugPlugin.getDefault().getBreakpointManager().removeBreakpoint( breakpoint, true ); - } - else - { - CDebugModel.createLineBreakpoint( getFile(), - lineNumber, - true, - 0, - "", //$NON-NLS-1$ - true ); - } - } - catch( CoreException ce ) - { - CDebugUIPlugin.errorDialog( CDebugUIPlugin.getResourceString("internal.ui.actions.ManageBreakpointActionDelegate.Cannot_add_breakpoint"), ce ); //$NON-NLS-1$ - } - } - } - } - - /** - * Determines if a breakpoint exists on the line of the current selection. - */ - protected boolean breakpointExists(IEditorInput editorInput) - { - if ( getFile() != null ) - { - try - { - return CDebugModel.lineBreakpointExists( getFile().getLocation().toOSString(), getLineNumber() ) == null; - } - catch (CoreException ce) - { - CDebugUIPlugin.log( ce ); - } - } - - return false; - } - - protected IWorkbenchWindow getWorkbenchWindow() - { - return fWorkbenchWindow; - } - - protected void setWorkbenchWindow( IWorkbenchWindow workbenchWindow ) - { - fWorkbenchWindow = workbenchWindow; - } - - protected ITextEditor getTextEditor() - { - return fTextEditor; - } - - protected void setTextEditor( ITextEditor editor ) - { - fTextEditor = editor; - if ( fTextEditor != null ) - { - IEditorInput input = fTextEditor.getEditorInput(); - setFile( ( input != null && input instanceof IFileEditorInput ) ? ((IFileEditorInput)input).getFile() : null ); - } - setEnabledState( editor ); - } - - protected void setEnabledState( ITextEditor editor ) - { - if ( getAction() != null ) - { - getAction().setEnabled( editor != null ); - } - } - - protected void beep() - { - if ( CDebugUIPlugin.getActiveWorkbenchShell() != null ) - { - CDebugUIPlugin.getActiveWorkbenchShell().getDisplay().beep(); - } - } - - protected int getLineNumber() - { - return fLineNumber; - } - - protected void setLineNumber( int lineNumber ) - { - fLineNumber = lineNumber; - } - - protected IAction getAction() - { - return fAction; - } - - protected void setAction( IAction action ) - { - fAction = action; - } - - protected IFile getFile() - { - return fFile; - } - - protected void setFile( IFile file ) - { - fFile = file; - } -} diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/ManageBreakpointRulerAction.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/ManageBreakpointRulerAction.java index 363149f97b6..074823883d9 100644 --- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/ManageBreakpointRulerAction.java +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/ManageBreakpointRulerAction.java @@ -1,17 +1,19 @@ -/* - *(c) Copyright QNX Software Systems Ltd. 2002. - * All Rights Reserved. +/********************************************************************** + * Copyright (c) 2004 QNX Software Systems and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html * - */ + * Contributors: + * QNX Software Systems - Initial API and implementation +***********************************************************************/ package org.eclipse.cdt.debug.internal.ui.actions; import java.util.ArrayList; import java.util.Iterator; import java.util.List; -import org.eclipse.cdt.debug.core.CDebugModel; -import org.eclipse.cdt.debug.core.sourcelookup.IDisassemblyStorage; -import org.eclipse.cdt.debug.internal.ui.editors.DisassemblyEditorInput; import org.eclipse.cdt.debug.ui.CDebugUIPlugin; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IMarker; @@ -19,37 +21,29 @@ import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.IWorkspaceRoot; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; -import org.eclipse.debug.core.DebugException; import org.eclipse.debug.core.DebugPlugin; import org.eclipse.debug.core.IBreakpointManager; import org.eclipse.debug.core.model.IBreakpoint; +import org.eclipse.debug.internal.ui.DebugUIPlugin; import org.eclipse.jface.action.Action; import org.eclipse.jface.text.BadLocationException; import org.eclipse.jface.text.IDocument; +import org.eclipse.jface.text.IRegion; +import org.eclipse.jface.text.ITextSelection; import org.eclipse.jface.text.Position; +import org.eclipse.jface.text.TextSelection; import org.eclipse.jface.text.source.IAnnotationModel; import org.eclipse.jface.text.source.IVerticalRulerInfo; import org.eclipse.ui.IEditorInput; -import org.eclipse.ui.IFileEditorInput; import org.eclipse.ui.texteditor.AbstractMarkerAnnotationModel; import org.eclipse.ui.texteditor.IDocumentProvider; import org.eclipse.ui.texteditor.ITextEditor; -import org.eclipse.ui.texteditor.IUpdate; -/** - * - * Enter type comment. - * - * @since Aug 23, 2002 - */ -public class ManageBreakpointRulerAction extends Action implements IUpdate -{ +public class ManageBreakpointRulerAction extends Action { + private IVerticalRulerInfo fRuler; private ITextEditor fTextEditor; - private List fMarkers; - - private String fAddLabel; - private String fRemoveLabel; + private ToggleBreakpointAdapter fBreakpointAdapter; /** * Constructor for ManageBreakpointRulerAction. @@ -57,80 +51,86 @@ public class ManageBreakpointRulerAction extends Action implements IUpdate * @param ruler * @param editor */ - public ManageBreakpointRulerAction( IVerticalRulerInfo ruler, ITextEditor editor ) - { + public ManageBreakpointRulerAction( IVerticalRulerInfo ruler, ITextEditor editor ) { + super( "Toggle &Breakpoint" ); fRuler = ruler; fTextEditor = editor; - fAddLabel = CDebugUIPlugin.getResourceString("internal.ui.actions.ManageBreakpointRulerAction.Add_Breakpoint"); //$NON-NLS-1$ - fRemoveLabel = CDebugUIPlugin.getResourceString("internal.ui.actions.ManageBreakpointRulerAction.Remove_Breakpoint"); //$NON-NLS-1$ + fBreakpointAdapter = new ToggleBreakpointAdapter(); } - /* (non-Javadoc) - * @see org.eclipse.ui.texteditor.IUpdate#update() + /** + * Disposes this action */ - public void update() - { - fMarkers = getMarkers(); - setText( fMarkers.isEmpty() ? fAddLabel : fRemoveLabel ); + public void dispose() { + fTextEditor = null; + fRuler = null; } /** * @see Action#run() */ - public void run() - { - if ( fMarkers.isEmpty() ) - { - addMarker(); + public void run() { + try { + List list = getMarkers(); + if ( list.isEmpty() ) { + // create new markers + IDocument document = getDocument(); + int lineNumber = getVerticalRulerInfo().getLineOfLastMouseButtonActivity(); + IRegion line = document.getLineInformation( lineNumber ); + ITextSelection selection = new TextSelection( document, line.getOffset(), line.getLength() ); + fBreakpointAdapter.toggleLineBreakpoints( fTextEditor, selection ); + } + else { + // remove existing breakpoints of any type + IBreakpointManager manager = DebugPlugin.getDefault().getBreakpointManager(); + Iterator iterator = list.iterator(); + while( iterator.hasNext() ) { + IMarker marker = (IMarker)iterator.next(); + IBreakpoint breakpoint = manager.getBreakpoint( marker ); + if ( breakpoint != null ) { + breakpoint.delete(); + } + } + } } - else - { - removeMarkers( fMarkers ); + catch( BadLocationException e ) { + DebugUIPlugin.errorDialog( getTextEditor().getSite().getShell(), + "Error", + "Operation failed", + e ); + } + catch( CoreException e ) { + DebugUIPlugin.errorDialog( getTextEditor().getSite().getShell(), + "Error", + "Operation failed", + e.getStatus() ); } } - protected List getMarkers() - { + protected List getMarkers() { List breakpoints = new ArrayList(); - - IResource resource = getResource(); + IResource resource = ToggleBreakpointAdapter.getResource( fTextEditor ); IDocument document = getDocument(); AbstractMarkerAnnotationModel model = getAnnotationModel(); - - if ( model != null ) - { - try - { + if ( model != null ) { + try { IMarker[] markers = null; - if ( resource instanceof IFile && !(getTextEditor().getEditorInput() instanceof DisassemblyEditorInput) ) - { - markers = resource.findMarkers( IBreakpoint.BREAKPOINT_MARKER, - true, - IResource.DEPTH_INFINITE ); - } - else - { + if ( resource instanceof IFile ) + markers = resource.findMarkers( IBreakpoint.BREAKPOINT_MARKER, true, IResource.DEPTH_INFINITE ); + else { IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); - markers = root.findMarkers( IBreakpoint.BREAKPOINT_MARKER, - true, - IResource.DEPTH_INFINITE ); + markers = root.findMarkers( IBreakpoint.BREAKPOINT_MARKER, true, IResource.DEPTH_INFINITE ); } - - if ( markers != null ) - { + if ( markers != null ) { IBreakpointManager breakpointManager = DebugPlugin.getDefault().getBreakpointManager(); - for ( int i = 0; i < markers.length; i++ ) - { + for( int i = 0; i < markers.length; i++ ) { IBreakpoint breakpoint = breakpointManager.getBreakpoint( markers[i] ); - if ( breakpoint != null && - breakpointManager.isRegistered( breakpoint ) && - includesRulerLine( model.getMarkerPosition( markers[i] ), document ) ) + if ( breakpoint != null && breakpointManager.isRegistered( breakpoint ) && includesRulerLine( model.getMarkerPosition( markers[i] ), document ) ) breakpoints.add( markers[i] ); } } } - catch( CoreException x ) - { + catch( CoreException x ) { CDebugUIPlugin.log( x.getStatus() ); } } @@ -143,8 +143,7 @@ public class ManageBreakpointRulerAction extends Action implements IUpdate * * @return the resource for which to create the marker or null */ - protected IResource getResource() - { + protected IResource getResource() { IEditorInput input = fTextEditor.getEditorInput(); IResource resource = (IResource)input.getAdapter( IFile.class ); if ( resource == null ) @@ -159,21 +158,16 @@ public class ManageBreakpointRulerAction extends Action implements IUpdate * @param document the document the position refers to * @return true if the line is included by the given position */ - protected boolean includesRulerLine( Position position, IDocument document ) - { - if ( position != null ) - { - try - { + protected boolean includesRulerLine( Position position, IDocument document ) { + if ( position != null ) { + try { int markerLine = document.getLineOfOffset( position.getOffset() ); int line = fRuler.getLineOfLastMouseButtonActivity(); - if ( line == markerLine ) - { + if ( line == markerLine ) { return true; } } - catch( BadLocationException x ) - { + catch( BadLocationException x ) { } } return false; @@ -184,8 +178,7 @@ public class ManageBreakpointRulerAction extends Action implements IUpdate * * @return this action's vertical ruler */ - protected IVerticalRulerInfo getVerticalRulerInfo() - { + protected IVerticalRulerInfo getVerticalRulerInfo() { return fRuler; } @@ -194,8 +187,7 @@ public class ManageBreakpointRulerAction extends Action implements IUpdate * * @return this action's editor */ - protected ITextEditor getTextEditor() - { + protected ITextEditor getTextEditor() { return fTextEditor; } @@ -204,12 +196,10 @@ public class ManageBreakpointRulerAction extends Action implements IUpdate * * @return the marker annotation model */ - protected AbstractMarkerAnnotationModel getAnnotationModel() - { + protected AbstractMarkerAnnotationModel getAnnotationModel() { IDocumentProvider provider = fTextEditor.getDocumentProvider(); IAnnotationModel model = provider.getAnnotationModel( fTextEditor.getEditorInput() ); - if ( model instanceof AbstractMarkerAnnotationModel ) - { + if ( model instanceof AbstractMarkerAnnotationModel ) { return (AbstractMarkerAnnotationModel)model; } return null; @@ -220,92 +210,8 @@ public class ManageBreakpointRulerAction extends Action implements IUpdate * * @return the document of the editor's input */ - protected IDocument getDocument() - { + protected IDocument getDocument() { IDocumentProvider provider = fTextEditor.getDocumentProvider(); return provider.getDocument( fTextEditor.getEditorInput() ); } - - protected void addMarker() - { - IEditorInput editorInput = getTextEditor().getEditorInput(); - int rulerLine = getVerticalRulerInfo().getLineOfLastMouseButtonActivity(); - try - { - if ( editorInput instanceof IFileEditorInput ) - { - createLineBreakpoint( (IFileEditorInput)editorInput, rulerLine ); - } - else if ( editorInput.getAdapter( DisassemblyEditorInput.class ) != null ) - { - createAddressBreakpoint( (DisassemblyEditorInput)editorInput.getAdapter( DisassemblyEditorInput.class ), rulerLine ); - } - } - catch( DebugException e ) - { - CDebugUIPlugin.errorDialog( CDebugUIPlugin.getResourceString("internal.ui.actions.ManageBreakpointRulerAction.Cannot_add_breakpoint"), e ); //$NON-NLS-1$ - } - catch( CoreException e ) - { - CDebugUIPlugin.errorDialog( CDebugUIPlugin.getResourceString("internal.ui.actions.ManageBreakpointRulerAction.Cannot_add_breakpoint"), e ); //$NON-NLS-1$ - } - } - - private void createLineBreakpoint( IFileEditorInput editorInput, int rulerLine ) throws CoreException - { - IDocument document = getDocument(); - BreakpointLocationVerifier bv = new BreakpointLocationVerifier(); - int lineNumber = bv.getValidLineBreakpointLocation( document, rulerLine ); - if ( lineNumber > -1 ) - { - String fileName = editorInput.getFile().getLocation().toString(); - if ( fileName != null ) - { - if ( CDebugModel.lineBreakpointExists( fileName, lineNumber ) == null ) - { - CDebugModel.createLineBreakpoint( editorInput.getFile(), lineNumber, true, 0, "", true ); //$NON-NLS-1$ - } - } - } - } - - private void createAddressBreakpoint( DisassemblyEditorInput editorInput, int rulerLine ) throws CoreException - { - IDocument document = getDocument(); - BreakpointLocationVerifier bv = new BreakpointLocationVerifier(); - int lineNumber = bv.getValidAddressBreakpointLocation( document, rulerLine ); - if ( lineNumber > -1 ) - { - IResource resource = (IResource)editorInput.getAdapter( IResource.class ); - if ( resource != null ) - { - if ( editorInput.getStorage() != null ) - { - long address = ((IDisassemblyStorage)editorInput.getStorage()).getAddress( lineNumber ); - if ( address != 0 && CDebugModel.addressBreakpointExists( resource, address ) == null ) - { - CDebugModel.createAddressBreakpoint( resource, address, true, 0, "", true ); //$NON-NLS-1$ - } - } - } - } - } - - protected void removeMarkers( List markers ) - { - IBreakpointManager breakpointManager = DebugPlugin.getDefault().getBreakpointManager(); - try - { - Iterator e = markers.iterator(); - while( e.hasNext() ) - { - IBreakpoint breakpoint = breakpointManager.getBreakpoint( (IMarker)e.next() ); - breakpointManager.removeBreakpoint( breakpoint, true ); - } - } - catch( CoreException e ) - { - CDebugUIPlugin.errorDialog( CDebugUIPlugin.getResourceString("internal.ui.actions.ManageBreakpointRulerAction.Cannot_remove_breakpoint"), e ); //$NON-NLS-1$ - } - } -} +} \ No newline at end of file diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/ManageBreakpointRulerActionDelegate.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/ManageBreakpointRulerActionDelegate.java index e9f02a1327b..84154f578c8 100644 --- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/ManageBreakpointRulerActionDelegate.java +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/ManageBreakpointRulerActionDelegate.java @@ -1,29 +1,45 @@ -/* - *(c) Copyright QNX Software Systems Ltd. 2002. - * All Rights Reserved. +/********************************************************************** + * Copyright (c) 2004 QNX Software Systems and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html * - */ - + * Contributors: + * QNX Software Systems - Initial API and implementation +***********************************************************************/ package org.eclipse.cdt.debug.internal.ui.actions; import org.eclipse.jface.action.IAction; import org.eclipse.jface.text.source.IVerticalRulerInfo; +import org.eclipse.ui.IEditorPart; import org.eclipse.ui.texteditor.AbstractRulerActionDelegate; import org.eclipse.ui.texteditor.ITextEditor; -/** - * - * Enter type comment. - * - * @since Aug 23, 2002 - */ -public class ManageBreakpointRulerActionDelegate extends AbstractRulerActionDelegate -{ +public class ManageBreakpointRulerActionDelegate extends AbstractRulerActionDelegate { + + private ManageBreakpointRulerAction fTargetAction; + private IEditorPart fActiveEditor; + /* (non-Javadoc) * @see org.eclipse.ui.texteditor.AbstractRulerActionDelegate#createAction(ITextEditor, IVerticalRulerInfo) */ - public IAction createAction( ITextEditor editor, IVerticalRulerInfo rulerInfo ) - { - return new ManageBreakpointRulerAction( rulerInfo, editor ); + public IAction createAction( ITextEditor editor, IVerticalRulerInfo rulerInfo ) { + fTargetAction = new ManageBreakpointRulerAction( rulerInfo, editor ); + return fTargetAction; } -} + + /* (non-Javadoc) + * @see org.eclipse.ui.IEditorActionDelegate#setActiveEditor(org.eclipse.jface.action.IAction, org.eclipse.ui.IEditorPart) + */ + public void setActiveEditor( IAction callerAction, IEditorPart targetEditor ) { + if ( fActiveEditor != null ) { + if ( fTargetAction != null ) { + fTargetAction.dispose(); + fTargetAction = null; + } + } + fActiveEditor = targetEditor; + super.setActiveEditor( callerAction, targetEditor ); + } +} \ No newline at end of file diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/ManageFunctionBreakpointActionDelegate.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/ManageFunctionBreakpointActionDelegate.java index e19fb26e805..b1d316c07f7 100644 --- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/ManageFunctionBreakpointActionDelegate.java +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/ManageFunctionBreakpointActionDelegate.java @@ -98,22 +98,22 @@ public class ManageFunctionBreakpointActionDelegate extends ActionDelegate private void manageBreakpoint( IFunction function ) { - try - { - ICFunctionBreakpoint breakpoint = CDebugModel.functionBreakpointExists( function ); - if ( breakpoint != null ) - { - DebugPlugin.getDefault().getBreakpointManager().removeBreakpoint( breakpoint, true ); - } - else - { - CDebugModel.createFunctionBreakpoint( function, true, 0, "", true ); //$NON-NLS-1$ - } - } - catch( CoreException e ) - { - CDebugUIPlugin.errorDialog( CDebugUIPlugin.getResourceString("internal.ui.actions.ManageFunctionBreakpointActionDelegate.Cannot_add_breakpoint"), e ); //$NON-NLS-1$ - } +// try +// { +// ICFunctionBreakpoint breakpoint = CDebugModel.functionBreakpointExists( function ); +// if ( breakpoint != null ) +// { +// DebugPlugin.getDefault().getBreakpointManager().removeBreakpoint( breakpoint, true ); +// } +// else +// { +// CDebugModel.createFunctionBreakpoint( function, true, 0, "", true ); //$NON-NLS-1$ +// } +// } +// catch( CoreException e ) +// { +// CDebugUIPlugin.errorDialog( CDebugUIPlugin.getResourceString("internal.ui.actions.ManageFunctionBreakpointActionDelegate.Cannot_add_breakpoint"), e ); //$NON-NLS-1$ +// } } private IFunction getFunction() @@ -123,22 +123,22 @@ public class ManageFunctionBreakpointActionDelegate extends ActionDelegate private void manageBreakpoint( IMethod method ) { - try - { - ICFunctionBreakpoint breakpoint = CDebugModel.methodBreakpointExists( method ); - if ( breakpoint != null ) - { - DebugPlugin.getDefault().getBreakpointManager().removeBreakpoint( breakpoint, true ); - } - else - { - CDebugModel.createMethodBreakpoint( method, true, 0, "", true ); //$NON-NLS-1$ - } - } - catch( CoreException e ) - { - CDebugUIPlugin.errorDialog( CDebugUIPlugin.getResourceString("internal.ui.actions.ManageFunctionBreakpointActionDelegate.Cannot_add_breakpoint"), e ); //$NON-NLS-1$ - } +// try +// { +// ICFunctionBreakpoint breakpoint = CDebugModel.methodBreakpointExists( method ); +// if ( breakpoint != null ) +// { +// DebugPlugin.getDefault().getBreakpointManager().removeBreakpoint( breakpoint, true ); +// } +// else +// { +// CDebugModel.createMethodBreakpoint( method, true, 0, "", true ); //$NON-NLS-1$ +// } +// } +// catch( CoreException e ) +// { +// CDebugUIPlugin.errorDialog( CDebugUIPlugin.getResourceString("internal.ui.actions.ManageFunctionBreakpointActionDelegate.Cannot_add_breakpoint"), e ); //$NON-NLS-1$ +// } } private IMethod getMethod() diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/ToggleBreakpointAdapter.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/ToggleBreakpointAdapter.java index c67f5798de9..599c5f97015 100644 --- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/ToggleBreakpointAdapter.java +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/ToggleBreakpointAdapter.java @@ -10,13 +10,31 @@ ***********************************************************************/ package org.eclipse.cdt.debug.internal.ui.actions; +import org.eclipse.cdt.debug.core.CDIDebugModel; +import org.eclipse.cdt.debug.core.model.ICLineBreakpoint; +import org.eclipse.cdt.debug.core.model.ICWatchpoint; import org.eclipse.cdt.debug.ui.CDebugUIPlugin; +import org.eclipse.cdt.debug.ui.ICDebugUIConstants; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.IWorkspaceRoot; +import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Status; +import org.eclipse.debug.core.DebugPlugin; import org.eclipse.debug.ui.actions.IToggleBreakpointsTarget; +import org.eclipse.jface.text.IDocument; import org.eclipse.jface.text.ITextSelection; +import org.eclipse.jface.text.TextSelection; import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.window.Window; +import org.eclipse.ui.IEditorInput; +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.IFileEditorInput; +import org.eclipse.ui.IStorageEditorInput; import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.texteditor.IEditorStatusLine; +import org.eclipse.ui.texteditor.ITextEditor; /** @@ -28,7 +46,50 @@ public class ToggleBreakpointAdapter implements IToggleBreakpointsTarget { * @see org.eclipse.debug.ui.actions.IToggleBreakpointsTarget#toggleLineBreakpoints(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection) */ public void toggleLineBreakpoints( IWorkbenchPart part, ISelection selection ) throws CoreException { - // TODO Auto-generated method stub + IEditorPart editorPart = (IEditorPart)part; + IEditorInput input = editorPart.getEditorInput(); + String errorMessage = null; + if ( input == null ) { + errorMessage = "Empty editor"; + } + else { + final ITextEditor textEditor = (ITextEditor)editorPart; + final IDocument document = textEditor.getDocumentProvider().getDocument( input ); + if ( document == null ) { + errorMessage = "Missing document"; + } + else { + IResource resource = getResource( textEditor ); + if ( resource == null ) { + errorMessage = "Missing resource"; + } + else { + BreakpointLocationVerifier bv = new BreakpointLocationVerifier(); + int lineNumber = bv.getValidLineBreakpointLocation( document, ((ITextSelection)selection).getStartLine() ); + if ( lineNumber == -1 ) { + errorMessage = "Invalid line"; + } + else { + String sourceHandle = getSourceHandle( input ); + ICLineBreakpoint breakpoint = CDIDebugModel.lineBreakpointExists( sourceHandle, resource, lineNumber ); + if ( breakpoint != null ) { + DebugPlugin.getDefault().getBreakpointManager().removeBreakpoint( breakpoint, true ); + } + else { + CDIDebugModel.createLineBreakpoint( sourceHandle, + resource, + lineNumber, + true, + 0, + "", //$NON-NLS-1$ + true ); + } + return; + } + } + } + } + throw new CoreException( new Status( IStatus.ERROR, CDebugUIPlugin.getUniqueIdentifier(), ICDebugUIConstants.INTERNAL_ERROR, errorMessage, null ) ); } /* (non-Javadoc) @@ -49,22 +110,70 @@ public class ToggleBreakpointAdapter implements IToggleBreakpointsTarget { * @see org.eclipse.debug.ui.actions.IToggleBreakpointsTarget#canToggleMethodBreakpoints(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection) */ public boolean canToggleMethodBreakpoints( IWorkbenchPart part, ISelection selection ) { - // TODO for now - return ( selection instanceof ITextSelection ); + 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 { - // TODO Auto-generated method stub + IEditorPart editorPart = (IEditorPart)part; + IEditorInput input = editorPart.getEditorInput(); + String errorMessage = null; + if ( input == null ) { + errorMessage = "Empty editor"; + } + else { + final ITextEditor textEditor = (ITextEditor)editorPart; + final IDocument document = textEditor.getDocumentProvider().getDocument( input ); + if ( document == null ) { + errorMessage = "Missing document"; + } + else { + IResource resource = getResource( textEditor ); + if ( resource == null ) { + errorMessage = "Missing resource"; + } + else { + if ( !(resource instanceof IWorkspaceRoot) ) + resource = resource.getProject(); + String expression = ( selection instanceof TextSelection ) ? ((TextSelection)selection).getText().trim() : ""; //$NON-NLS-1$ + AddWatchpointDialog dlg = new AddWatchpointDialog( textEditor.getSite().getShell(), true, false, expression ); + if ( dlg.open() != Window.OK ) + return; + WatchpointExpressionVerifier wev = new WatchpointExpressionVerifier(); + if ( !wev.isValidExpression( document, expression ) ) { + errorMessage = "Invalid expression: " + expression; + } + else { + String sourceHandle = getSourceHandle( input ); + ICWatchpoint watchpoint = CDIDebugModel.watchpointExists( sourceHandle, resource, expression ); + if ( watchpoint != null ) { + DebugPlugin.getDefault().getBreakpointManager().removeBreakpoint( watchpoint, true ); + } + else { + CDIDebugModel.createWatchpoint( sourceHandle, + resource, + dlg.getWriteAccess(), + dlg.getReadAccess(), + expression, + true, + 0, + "", //$NON-NLS-1$ + true ); + } + return; + } + } + } + } + throw new CoreException( new Status( IStatus.ERROR, CDebugUIPlugin.getUniqueIdentifier(), ICDebugUIConstants.INTERNAL_ERROR, errorMessage, null ) ); } /* (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 ) { - // TODO for now return ( selection instanceof ITextSelection ); } @@ -82,4 +191,26 @@ public class ToggleBreakpointAdapter implements IToggleBreakpointsTarget { CDebugUIPlugin.getActiveWorkbenchShell().getDisplay().beep(); } } + + protected static IResource getResource( IEditorPart editor ) { + IResource resource; + IEditorInput editorInput = editor.getEditorInput(); + if ( editorInput instanceof IFileEditorInput ) { + resource = ((IFileEditorInput)editorInput).getFile(); + } + else { + resource = ResourcesPlugin.getWorkspace().getRoot(); + } + return resource; + } + + private String getSourceHandle( IEditorInput input ) throws CoreException { + if ( input instanceof IFileEditorInput ) { + return ((IFileEditorInput)input).getFile().getFullPath().toOSString(); + } + if ( input instanceof IStorageEditorInput ) { + return ((IStorageEditorInput)input).getStorage().getName(); + } + return ""; //$NON-NLS-1$ + } } diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/editors/DisassemblyMarkerAnnotationModel.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/editors/DisassemblyMarkerAnnotationModel.java index f41450f4ff2..d09c636cc99 100644 --- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/editors/DisassemblyMarkerAnnotationModel.java +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/editors/DisassemblyMarkerAnnotationModel.java @@ -7,13 +7,12 @@ package org.eclipse.cdt.debug.internal.ui.editors; import java.util.ArrayList; -import org.eclipse.cdt.debug.core.ICBreakpointManager; import org.eclipse.cdt.debug.core.model.ICAddressBreakpoint; -import org.eclipse.cdt.debug.core.model.ICBreakpoint; import org.eclipse.cdt.debug.core.sourcelookup.IDisassemblyStorage; import org.eclipse.cdt.debug.internal.core.breakpoints.CAddressBreakpoint; import org.eclipse.cdt.debug.internal.core.breakpoints.CFunctionBreakpoint; import org.eclipse.cdt.debug.internal.core.breakpoints.CLineBreakpoint; +import org.eclipse.cdt.debug.ui.CDebugUIPlugin; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IMarker; import org.eclipse.core.resources.IMarkerDelta; @@ -34,7 +33,6 @@ import org.eclipse.jface.text.BadLocationException; import org.eclipse.jface.text.Position; import org.eclipse.ui.texteditor.AbstractMarkerAnnotationModel; import org.eclipse.ui.texteditor.MarkerAnnotation; -import org.eclipse.cdt.debug.ui.CDebugUIPlugin; /** * Enter type comment. @@ -242,21 +240,21 @@ public class DisassemblyMarkerAnnotationModel extends AbstractMarkerAnnotationMo private Position createPositionFromLineBreakpoint( IMarker marker ) { - if ( fStorage != null ) - { - IBreakpoint breakpoint = DebugPlugin.getDefault().getBreakpointManager().getBreakpoint( marker ); - if ( breakpoint instanceof ICBreakpoint ) - { - IDebugTarget target = fStorage.getDebugTarget(); - if ( target != null && target.getAdapter( ICBreakpointManager.class ) != null ) - { - ICBreakpointManager bm = (ICBreakpointManager)target.getAdapter( ICBreakpointManager.class ); - long address = bm.getBreakpointAddress( (ICBreakpoint)breakpoint ); - if ( address != 0 ) - return createPositionFromAddress( address ); - } - } - } +// if ( fStorage != null ) +// { +// IBreakpoint breakpoint = DebugPlugin.getDefault().getBreakpointManager().getBreakpoint( marker ); +// if ( breakpoint instanceof ICBreakpoint ) +// { +// IDebugTarget target = fStorage.getDebugTarget(); +// if ( target != null && target.getAdapter( ICBreakpointManager.class ) != null ) +// { +// ICBreakpointManager bm = (ICBreakpointManager)target.getAdapter( ICBreakpointManager.class ); +// long address = bm.getBreakpointAddress( (ICBreakpoint)breakpoint ); +// if ( address != 0 ) +// return createPositionFromAddress( address ); +// } +// } +// } return null; }