Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Cortell2008-02-14 20:40:26 +0000
committerJohn Cortell2008-02-14 20:40:26 +0000
commit60dd429b5ce0d8cfd6451b826ab5296add599ef8 (patch)
tree98d4666e372bfa7dcb3824470fafa733280dbf01 /debug/org.eclipse.cdt.debug.ui
parente0716ec914e88c1ec232f9aac994a946a84be60e (diff)
downloadorg.eclipse.cdt-60dd429b5ce0d8cfd6451b826ab5296add599ef8.tar.gz
org.eclipse.cdt-60dd429b5ce0d8cfd6451b826ab5296add599ef8.tar.xz
org.eclipse.cdt-60dd429b5ce0d8cfd6451b826ab5296add599ef8.zip
Fixed way in which the new Add Watchpoint action gets its context from the memory rendering.
Diffstat (limited to 'debug/org.eclipse.cdt.debug.ui')
-rw-r--r--debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/AddWatchpointOnMemoryActionDelegate.java42
1 files changed, 23 insertions, 19 deletions
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/AddWatchpointOnMemoryActionDelegate.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/AddWatchpointOnMemoryActionDelegate.java
index a3b8579f4ca..5ab31d1bf1f 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/AddWatchpointOnMemoryActionDelegate.java
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/AddWatchpointOnMemoryActionDelegate.java
@@ -4,13 +4,13 @@ package org.eclipse.cdt.debug.internal.ui.actions;
import java.math.BigInteger;
import org.eclipse.cdt.debug.internal.core.model.CMemoryBlockExtension;
-import org.eclipse.cdt.debug.internal.ui.actions.AddWatchpointDialog;
import org.eclipse.cdt.debug.ui.CDebugUIPlugin;
-import org.eclipse.cdt.debug.ui.ICMemorySelection;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.debug.core.DebugException;
import org.eclipse.debug.core.model.IMemoryBlock;
+import org.eclipse.debug.core.model.IMemoryBlockExtension;
import org.eclipse.debug.core.model.MemoryByte;
-import org.eclipse.debug.internal.ui.memory.provisional.AbstractAsyncTableRendering;
-import org.eclipse.debug.ui.memory.AbstractMemoryRendering;
+import org.eclipse.debug.ui.memory.IRepositionableMemoryRendering;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
@@ -50,19 +50,23 @@ public class AddWatchpointOnMemoryActionDelegate extends AddWatchpointActionDele
String address = ""; //$NON-NLS-1$
String range = "1"; //$NON-NLS-1$
- if (obj instanceof AbstractAsyncTableRendering) {
- AbstractAsyncTableRendering r = (AbstractAsyncTableRendering) obj;
- memorySpace = getMemorySpace(r.getMemoryBlock(), memorySpace);
- address = getSelectedAddress(r.getSelectedAddress(), address);
- range = getRange(r.getSelectedAsBytes(), range);
- } else if (obj instanceof ICMemorySelection) {
- ICMemorySelection sel = (ICMemorySelection) obj;
- memorySpace = getMemorySpace(sel.getContainingBlock(), memorySpace);
- address = getSelectedAddress(sel.getAddress(), address);
- range = sel.getUnits().toString();
- } else if (obj instanceof AbstractMemoryRendering) {
- AbstractMemoryRendering r = (AbstractMemoryRendering) obj;
- address = getSelectedAddress(BigInteger.valueOf(r.getMemoryBlock().getStartAddress()), address);
+ if (obj instanceof IAdaptable) {
+ IRepositionableMemoryRendering rendering = (IRepositionableMemoryRendering) ((IAdaptable)obj).getAdapter(IRepositionableMemoryRendering.class);
+ if (rendering != null) {
+ int addressableSize = 1;
+ IMemoryBlock memblock = rendering.getMemoryBlock();
+ if (memblock instanceof IMemoryBlockExtension) {
+ try {
+ addressableSize = ((IMemoryBlockExtension)memblock).getAddressableSize();
+ } catch (DebugException e) {
+ CDebugUIPlugin.log(e);
+ }
+ }
+
+ memorySpace = getMemorySpace(rendering.getMemoryBlock(), memorySpace);
+ address = getSelectedAddress(rendering.getSelectedAddress(), address);
+ range = getRange(rendering.getSelectedAsBytes(), addressableSize, range);
+ }
}
AddWatchpointDialog dlg = new AddWatchpointDialog(CDebugUIPlugin.getActiveWorkbenchShell(),
@@ -91,9 +95,9 @@ public class AddWatchpointOnMemoryActionDelegate extends AddWatchpointActionDele
return def;
}
- private String getRange(MemoryByte[] selectedBytes, String def) {
+ private String getRange(MemoryByte[] selectedBytes, int addressableSize, String def) {
if (selectedBytes != null && selectedBytes.length > 0) {
- return Integer.toString(selectedBytes.length);
+ return Integer.toString(selectedBytes.length / addressableSize);
}
return def;
}

Back to the top