Skip to main content
aboutsummaryrefslogtreecommitdiffstats
path: root/debug
diff options
context:
space:
mode:
authorMikhail Khodjaiants2003-01-14 20:26:28 +0000
committerMikhail Khodjaiants2003-01-14 20:26:28 +0000
commita9eae1b09a8d64a4ce5bbeda1ccc0566e4063197 (patch)
tree8cb8574d4beb747ed7354cce3af32072cfd909c2 /debug
parent40300813c0a0e5fcb8cbc14f10acbc712538264a (diff)
downloadorg.eclipse.cdt-a9eae1b09a8d64a4ce5bbeda1ccc0566e4063197.tar.gz
org.eclipse.cdt-a9eae1b09a8d64a4ce5bbeda1ccc0566e4063197.tar.xz
org.eclipse.cdt-a9eae1b09a8d64a4ce5bbeda1ccc0566e4063197.zip
Added the 'Add Address Breakpoint' action to the workbench 'Run' menu.
Diffstat (limited to 'debug')
-rw-r--r--debug/org.eclipse.cdt.debug.ui/ChangeLog9
-rw-r--r--debug/org.eclipse.cdt.debug.ui/icons/full/obj16/brkp_obj.gifbin0 -> 140 bytes
-rw-r--r--debug/org.eclipse.cdt.debug.ui/plugin.properties1
-rw-r--r--debug/org.eclipse.cdt.debug.ui/plugin.xml30
-rw-r--r--debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/AddAddressBreakpointActionDelegate.java118
5 files changed, 151 insertions, 7 deletions
diff --git a/debug/org.eclipse.cdt.debug.ui/ChangeLog b/debug/org.eclipse.cdt.debug.ui/ChangeLog
index 470ffa02bec..b627a52eb0b 100644
--- a/debug/org.eclipse.cdt.debug.ui/ChangeLog
+++ b/debug/org.eclipse.cdt.debug.ui/ChangeLog
@@ -1,4 +1,11 @@
-2003-01-10 Mikhail Khodjaiants
+2003-01-14 Mikhail Khodjaiants
+ Added the 'Add Address Breakpoint' action to the workbench 'Run' menu.
+ * AddAddressBreakpointActionDelegate.java
+ * plugin.properties
+ * plugin.xml
+ * icons/full/obj16/brkp_obj.gif
+
+2003-01-13 Mikhail Khodjaiants
Implementation of the 'Run To Line' action for disassembly.
* RunToLineActionDelegate.java
diff --git a/debug/org.eclipse.cdt.debug.ui/icons/full/obj16/brkp_obj.gif b/debug/org.eclipse.cdt.debug.ui/icons/full/obj16/brkp_obj.gif
new file mode 100644
index 00000000000..06d007905b2
--- /dev/null
+++ b/debug/org.eclipse.cdt.debug.ui/icons/full/obj16/brkp_obj.gif
Binary files differ
diff --git a/debug/org.eclipse.cdt.debug.ui/plugin.properties b/debug/org.eclipse.cdt.debug.ui/plugin.properties
index f7a72711b3e..fc9d8a8c41e 100644
--- a/debug/org.eclipse.cdt.debug.ui/plugin.properties
+++ b/debug/org.eclipse.cdt.debug.ui/plugin.properties
@@ -33,6 +33,7 @@ ManageBreakpointAction.label=Add/Remove C/C++ Brea&kpoint
BreakpointPropertiesAction.label=P&roperties...
ManageWatchpointAction.label=Add C/C++ &Watchpoint...
AddExpressionAction.label=Add C/C++ &Expression...
+AddAddressBreakpointAction.label=Add &Address Breakpoint...
RunToLineAction.label=Run To C/C++ &Line
ShowFullPathsAction.label=Show Full Paths
ShowFullPathsAction.tooltip=Show Full Paths
diff --git a/debug/org.eclipse.cdt.debug.ui/plugin.xml b/debug/org.eclipse.cdt.debug.ui/plugin.xml
index f2fa8828d1c..81650fb8488 100644
--- a/debug/org.eclipse.cdt.debug.ui/plugin.xml
+++ b/debug/org.eclipse.cdt.debug.ui/plugin.xml
@@ -146,7 +146,7 @@
</action>
<action
label="%ManageBreakpointAction.label"
- icon="icons/full/obj16/brkpi_obj.gif"
+ icon="icons/full/obj16/brkp_obj.gif"
helpContextId="manage_breakpoint_action_context"
class="org.eclipse.cdt.debug.internal.ui.actions.ManageBreakpointActionDelegate"
menubarPath="org.eclipse.ui.run/cBreakpointGroup"
@@ -159,6 +159,21 @@
</enablement>
</action>
<action
+ label="%AddAddressBreakpointAction.label"
+ icon="icons/full/obj16/addrbrkp_obj.gif"
+ helpContextId="add_address_breakpoint_action_context"
+ class="org.eclipse.cdt.debug.internal.ui.AddAddressBreakpointActionDelegate"
+ menubarPath="org.eclipse.ui.run/cBreakpointGroup"
+ enablesFor="1"
+ id="org.eclipse.cdt.debug.internal.ui.AddAddressBreakpointActionDelegate">
+ <enablement>
+ <pluginState
+ value="activated"
+ id="org.eclipse.cdt.debug.ui">
+ </pluginState>
+ </enablement>
+ </action>
+ <action
label="%ManageWatchpointAction.label"
icon="icons/full/obj16/readwrite_obj.gif"
helpContextId="manage_watchpoint_action_context"
@@ -747,9 +762,9 @@
targetID="org.eclipse.cdt.ui.editor.asm.AsmEditor"
id="org.eclipse.cdt.ui.editor.asm.AsmEditor.BreakpointRulerActions">
<action
+ label="%Dummy.label"
class="org.eclipse.cdt.debug.internal.ui.actions.ManageBreakpointRulerActionDelegate"
actionID="RulerDoubleClick"
- label="%Dummy.label"
id="org.eclipse.cdt.debug.ui.CEditor.ManageBreakpointRulerAction">
<enablement>
<pluginState
@@ -763,14 +778,14 @@
targetID="org.eclipse.cdt.debug.ui.DisassemblyEditor"
id="org.eclipse.cdt.debug.ui.DisassemblyEditor.BreakpointRulerActions">
<action
- actionID="RulerDoubleClick"
- class="org.eclipse.cdt.debug.internal.ui.actions.ManageBreakpointRulerActionDelegate"
label="%Dummy.label"
+ class="org.eclipse.cdt.debug.internal.ui.actions.ManageBreakpointRulerActionDelegate"
+ actionID="RulerDoubleClick"
id="org.eclipse.cdt.debug.ui.CEditor.ManageBreakpointRulerAction">
<enablement>
<pluginState
- id="org.eclipse.cdt.debug.ui"
- value="activated">
+ value="activated"
+ id="org.eclipse.cdt.debug.ui">
</pluginState>
</enablement>
</action>
@@ -827,6 +842,9 @@
<action
id="org.eclipse.cdt.debug.internal.ui.actions.AddGlobalsActionDelegate">
</action>
+ <action
+ id="org.eclipse.cdt.debug.internal.ui.AddAddressBreakpointActionDelegate">
+ </action>
</debugActionGroup>
</extension>
<extension
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/AddAddressBreakpointActionDelegate.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/AddAddressBreakpointActionDelegate.java
new file mode 100644
index 00000000000..00312e65ef5
--- /dev/null
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/AddAddressBreakpointActionDelegate.java
@@ -0,0 +1,118 @@
+/*
+ *(c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ *
+ */
+package org.eclipse.cdt.debug.internal.ui;
+
+import org.eclipse.cdt.debug.core.CDebugModel;
+import org.eclipse.cdt.debug.core.model.IExecFileInfo;
+import org.eclipse.cdt.debug.internal.ui.actions.AbstractListenerActionDelegate;
+import org.eclipse.debug.core.DebugException;
+import org.eclipse.debug.core.model.IDebugElement;
+import org.eclipse.debug.core.model.IDebugTarget;
+import org.eclipse.jface.dialogs.IInputValidator;
+import org.eclipse.jface.dialogs.InputDialog;
+
+/**
+ *
+ * Enter type comment.
+ *
+ * @since Jan 13, 2003
+ */
+public class AddAddressBreakpointActionDelegate extends AbstractListenerActionDelegate
+{
+ /**
+ *
+ * Enter type comment.
+ *
+ * @since Jan 13, 2003
+ */
+ public class AddressValidator implements IInputValidator
+ {
+ /**
+ * Constructor for AddressValidator.
+ */
+ public AddressValidator()
+ {
+ super();
+ }
+
+ /**
+ * @see org.eclipse.jface.dialogs.IInputValidator#isValid(String)
+ */
+ public String isValid( String newText )
+ {
+ if ( newText.trim().length() == 0 )
+ return "";
+ long value = 0;
+ try
+ {
+ value = parseValue( newText.trim() );
+ }
+ catch( NumberFormatException e )
+ {
+ return "Invalid address.";
+ }
+ return ( value > 0 ) ? null : "Address can not be 0.";
+ }
+ }
+
+ /**
+ * @see org.eclipse.cdt.debug.internal.ui.actions.AbstractDebugActionDelegate#doAction(Object)
+ */
+ protected void doAction( Object element ) throws DebugException
+ {
+ InputDialog dialog = new InputDialog( getPage().getWorkbenchWindow().getShell(),
+ "Add Address Breakpoint",
+ "Enter address:",
+ null,
+ new AddressValidator() );
+ if ( dialog.open() == dialog.OK )
+ {
+ CDebugModel.createAddressBreakpoint( ((IExecFileInfo)getDebugTarget( element ).getAdapter( IExecFileInfo.class )).getExecFile(),
+ -1,
+ parseValue( dialog.getValue().trim() ),
+ true,
+ 0,
+ "",
+ true );
+ }
+ }
+
+ /**
+ * @see org.eclipse.cdt.debug.internal.ui.actions.AbstractDebugActionDelegate#isEnabledFor(Object)
+ */
+ protected boolean isEnabledFor( Object element )
+ {
+ if ( element != null && element instanceof IDebugElement )
+ {
+ IDebugTarget target = getDebugTarget( element );
+ return ( target != null && !target.isTerminated() && target.getAdapter( IExecFileInfo.class ) != null );
+ }
+ return false;
+ }
+
+ protected long parseValue( String text ) throws NumberFormatException
+ {
+ long value = 0;
+ if ( text.trim().startsWith( "0x" ) )
+ {
+ value = Integer.parseInt( text.substring( 2 ), 16 );
+ }
+ else
+ {
+ value = Integer.parseInt( text );
+ }
+ return value;
+ }
+
+ private IDebugTarget getDebugTarget( Object element )
+ {
+ if ( element != null && element instanceof IDebugElement )
+ {
+ return ((IDebugElement)element).getDebugTarget();
+ }
+ return null;
+ }
+}

Back to the top