Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui')
-rw-r--r--org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/DebugUIMessages.java6
-rw-r--r--org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/DebugUIMessages.properties2
-rw-r--r--org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/memory/provisional/AbstractAsyncTableRendering.java37
-rw-r--r--org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/renderings/GoToAddressComposite.java25
4 files changed, 64 insertions, 6 deletions
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/DebugUIMessages.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/DebugUIMessages.java
index 59a254352..f8aa7ef78 100644
--- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/DebugUIMessages.java
+++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/DebugUIMessages.java
@@ -252,12 +252,12 @@ public class DebugUIMessages extends NLS {
public static String ViewPaneOrientationAction_3;
public static String GoToAddressComposite_0;
public static String GoToAddressComposite_1;
- public static String GoToAddressComposite_2;
+ public static String GoToAddressComposite_2;
+ public static String GoToAddressComposite_3;
+ public static String GoToAddressComposite_4;
static {
// load message values from bundle file
NLS.initializeMessages(BUNDLE_NAME, DebugUIMessages.class);
}
-
-
} \ No newline at end of file
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/DebugUIMessages.properties b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/DebugUIMessages.properties
index 769cff065..132460b0d 100644
--- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/DebugUIMessages.properties
+++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/DebugUIMessages.properties
@@ -81,6 +81,8 @@ GoToAddressAction_title = Go to Address...
GoToAddressComposite_0=Go to Address:
GoToAddressComposite_1=OK
GoToAddressComposite_2=Cancel
+GoToAddressComposite_3=Offset
+GoToAddressComposite_4=Go to Offset:
GoToAddressAction_Go_to_address_failed = Go To Address Failed
GoToAddressAction_Address_is_invalid = Address is invalid
GoToAddressAction_tooltip = Go to Address...
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/memory/provisional/AbstractAsyncTableRendering.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/memory/provisional/AbstractAsyncTableRendering.java
index 6171b7784..bec4477aa 100644
--- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/memory/provisional/AbstractAsyncTableRendering.java
+++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/memory/provisional/AbstractAsyncTableRendering.java
@@ -2790,7 +2790,11 @@ public abstract class AbstractAsyncTableRendering extends AbstractBaseTableRende
*/
private void doGoToAddress() {
try {
- String exp = fGoToAddressAction.parseExpression(fGoToAddressComposite.getExpressionText());
+ String exp = null;
+ if (fGoToAddressComposite.isOffset())
+ exp = getOffsetAddress(getSelectedAddress(), fGoToAddressComposite.getExpressionText());
+ else
+ exp = fGoToAddressAction.parseExpression(fGoToAddressComposite.getExpressionText());
fGoToAddressAction.doGoToAddress(exp);
hideGotoAddressComposite();
} catch (DebugException e1) {
@@ -2803,6 +2807,37 @@ public abstract class AbstractAsyncTableRendering extends AbstractBaseTableRende
}
}
+ private String getOffsetAddress(BigInteger address, String expression) throws NumberFormatException
+ {
+ boolean add = true;
+ boolean hex = false;
+
+ if (expression.startsWith("+")) //$NON-NLS-1$
+ {
+ expression = expression.substring(1);
+ }
+ else if (expression.startsWith("-")) //$NON-NLS-1$
+ {
+ expression = expression.substring(1);
+ add = false;
+ }
+
+ if (expression.startsWith("0x") || expression.startsWith("0X")) //$NON-NLS-1$ //$NON-NLS-2$
+ hex = true;
+
+ expression = fGoToAddressAction.parseExpression(expression);
+
+ BigInteger gotoAddress = hex?new BigInteger(expression, 16):new BigInteger(expression);
+
+ if (add)
+ gotoAddress = address.add(gotoAddress);
+ else
+ gotoAddress = address.subtract(gotoAddress);
+
+ return gotoAddress.toString(16);
+
+ }
+
public void activated() {
super.activated();
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/renderings/GoToAddressComposite.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/renderings/GoToAddressComposite.java
index 844c9fa5b..25a0d5a65 100644
--- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/renderings/GoToAddressComposite.java
+++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/renderings/GoToAddressComposite.java
@@ -13,6 +13,8 @@ package org.eclipse.debug.internal.ui.views.memory.renderings;
import org.eclipse.debug.internal.ui.DebugUIMessages;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
@@ -28,6 +30,7 @@ public class GoToAddressComposite {
private Button fOKButton;
private Button fCancelButton;
private Composite fComposite;
+ private Button fOffsetButton;
/**
* @param parent
@@ -37,7 +40,7 @@ public class GoToAddressComposite {
{
fComposite = new Composite(parent, SWT.NONE);
GridLayout layout = new GridLayout();
- layout.numColumns = 4;
+ layout.numColumns = 5;
layout.makeColumnsEqualWidth = false;
layout.marginHeight = 0;
layout.marginLeft = 0;
@@ -49,9 +52,20 @@ public class GoToAddressComposite {
fExpression = new Text(fComposite, SWT.SINGLE | SWT.BORDER);
fExpression.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ fOffsetButton = new Button(fComposite, SWT.CHECK);
+ fOffsetButton.setText(DebugUIMessages.GoToAddressComposite_3);
+ fOffsetButton.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ if (fOffsetButton.getSelection())
+ fLabel.setText(DebugUIMessages.GoToAddressComposite_4);
+ else
+ fLabel.setText(DebugUIMessages.GoToAddressComposite_0);
+ fComposite.layout();
+ }});
+
+
fOKButton = new Button(fComposite, SWT.NONE);
fOKButton.setText(DebugUIMessages.GoToAddressComposite_1);
-
fCancelButton = new Button(fComposite, SWT.NONE);
fCancelButton.setText(DebugUIMessages.GoToAddressComposite_2);
@@ -83,4 +97,11 @@ public class GoToAddressComposite {
{
return fExpression;
}
+
+ public boolean isOffset()
+ {
+ return fOffsetButton.getSelection();
+ }
+
+
}

Back to the top