diff --git a/debug/org.eclipse.cdt.debug.core/ChangeLog b/debug/org.eclipse.cdt.debug.core/ChangeLog index bc8e31cb705..d9c4fae3ade 100644 --- a/debug/org.eclipse.cdt.debug.core/ChangeLog +++ b/debug/org.eclipse.cdt.debug.core/ChangeLog @@ -1,3 +1,11 @@ +2003-05-06 Mikhail Khodjaiants + Added tooltips to breakpoints and watchpoints. + * CAddressBreakpoint.java + * CBreakpoint.java + * CFunctionBreakpoint.java + * CLineBreakpoint.java + * CWatchpoint.java + 2003-05-05 Mikhail Khodjaiants Added a status functionality to the CDebugElement class. This allows to reflect the problems occured in the element in UI. 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 d0c33bfce10..24a652b3bbb 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 @@ -8,6 +8,7 @@ package org.eclipse.cdt.debug.internal.core.breakpoints; import java.util.Map; 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; @@ -85,4 +86,30 @@ public class CAddressBreakpoint extends CBreakpoint implements ICAddressBreakpoi { return C_ADDRESS_BREAKPOINT; } + + /* (non-Javadoc) + * @see org.eclipse.cdt.debug.internal.core.breakpoints.CBreakpoint#getMarkerMessage() + */ + protected String getMarkerMessage() throws CoreException + { + StringBuffer sb = new StringBuffer( "Address breakpoint:" ); + String name = ensureMarker().getResource().getName(); + if ( name != null && name.length() > 0 ) + { + sb.append( ' ' ); + sb.append( name ); + } + try + { + long address = Long.parseLong( getAddress() ); + sb.append( " [address: " ); + sb.append( CDebugUtils.toHexAddressString( address ) ); + sb.append( ']' ); + } + catch( NumberFormatException e ) + { + } + sb.append( getConditionText() ); + return sb.toString(); + } } 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 5c5a54fd297..43131c16aba 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 @@ -116,6 +116,7 @@ public abstract class CBreakpoint extends Breakpoint public void setCondition( String condition ) throws CoreException { setAttribute( CONDITION, condition ); + setAttribute( IMarker.MESSAGE, getMarkerMessage() ); } /* (non-Javadoc) @@ -132,6 +133,7 @@ public abstract class CBreakpoint extends Breakpoint public void setIgnoreCount( int ignoreCount ) throws CoreException { setAttribute( IGNORE_COUNT, ignoreCount ); + setAttribute( IMarker.MESSAGE, getMarkerMessage() ); } /* (non-Javadoc) @@ -256,4 +258,25 @@ public abstract class CBreakpoint extends Breakpoint { return ( (getCondition() != null && getCondition().trim().length() > 0) || getIgnoreCount() > 0 ); } + + protected String getConditionText() throws CoreException + { + StringBuffer sb = new StringBuffer(); + int ignoreCount = getIgnoreCount(); + if ( ignoreCount > 0 ) + { + sb.append( " [" ); + sb.append( "ignore count:" ); + sb.append( ' ' ); + sb.append( ignoreCount ); + sb.append( ']' ); + } + String condition = getCondition(); + if ( condition != null && condition.length() > 0 ) + { + sb.append( " if " ); + sb.append( condition ); + } + return sb.toString(); + } } 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 1867216bc5a..c3e2156abac 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 @@ -106,4 +106,29 @@ public class CFunctionBreakpoint extends CBreakpoint implements ICFunctionBreakp } return null; } + + /* (non-Javadoc) + * @see org.eclipse.cdt.debug.internal.core.breakpoints.CBreakpoint#getMarkerMessage() + */ + protected String getMarkerMessage() throws CoreException + { + StringBuffer sb = new StringBuffer( "Function breakpoint:" ); + String name = ensureMarker().getResource().getName(); + if ( name != null && name.length() > 0 ) + { + sb.append( ' ' ); + sb.append( name ); + } + String function = getFunction(); + if ( function != null && function.trim().length() > 0 ) + { + sb.append( " [" ); + sb.append( "function:" ); + sb.append( ' ' ); + sb.append( function.trim() ); + sb.append( ']' ); + } + sb.append( getConditionText() ); + return sb.toString(); + } } 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 6404205b9ba..fc871430e20 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 @@ -69,4 +69,29 @@ public class CLineBreakpoint extends CBreakpoint implements ICLineBreakpoint { return C_LINE_BREAKPOINT; } + + /* (non-Javadoc) + * @see org.eclipse.cdt.debug.internal.core.breakpoints.CBreakpoint#getMarkerMessage() + */ + protected String getMarkerMessage() throws CoreException + { + StringBuffer sb = new StringBuffer( "Line breakpoint:" ); + String fileName = ensureMarker().getResource().getName(); + if ( fileName != null && fileName.length() > 0 ) + { + sb.append( ' ' ); + sb.append( fileName ); + } + int lineNumber = getLineNumber(); + if ( lineNumber > 0 ) + { + sb.append( " [" ); + sb.append( "line:" ); + sb.append( ' ' ); + sb.append( lineNumber ); + sb.append( ']' ); + } + sb.append( getConditionText() ); + return sb.toString(); + } } 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 f6ee2c296d9..220acac293f 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 @@ -68,4 +68,34 @@ public class CWatchpoint extends CBreakpoint implements ICWatchpoint { return C_WATCHPOINT; } + + /* (non-Javadoc) + * @see org.eclipse.cdt.debug.internal.core.breakpoints.CBreakpoint#getMarkerMessage() + */ + protected String getMarkerMessage() throws CoreException + { + StringBuffer sb = new StringBuffer(); + if ( isWriteType() && !isReadType() ) + sb.append( "Write " ); + else if ( !isWriteType() && isReadType() ) + sb.append( "Read " ); + else if ( isWriteType() && isReadType() ) + sb.append( "Access " ); + sb.append( "watchpoint: " ); + String fileName = ensureMarker().getResource().getName(); + if ( fileName != null && fileName.length() > 0 ) + { + sb.append( ' ' ); + sb.append( fileName ); + } + String expression = getExpression(); + if ( expression != null && expression.length() > 0 ) + { + sb.append( " at \'" ); + sb.append( expression ); + sb.append( '\'' ); + } + sb.append( getConditionText() ); + return sb.toString(); + } }