diff options
author | John Cortell | 2008-02-14 20:40:26 +0000 |
---|---|---|
committer | John Cortell | 2008-02-14 20:40:26 +0000 |
commit | 60dd429b5ce0d8cfd6451b826ab5296add599ef8 (patch) | |
tree | 98d4666e372bfa7dcb3824470fafa733280dbf01 /debug/org.eclipse.cdt.debug.ui | |
parent | e0716ec914e88c1ec232f9aac994a946a84be60e (diff) | |
download | org.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.java | 42 |
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; } |