diff options
Diffstat (limited to 'org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/renderings/AsyncTableRenderingCellModifier.java')
-rw-r--r-- | org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/renderings/AsyncTableRenderingCellModifier.java | 276 |
1 files changed, 138 insertions, 138 deletions
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/renderings/AsyncTableRenderingCellModifier.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/renderings/AsyncTableRenderingCellModifier.java index a48396771..9312bf799 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/renderings/AsyncTableRenderingCellModifier.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/renderings/AsyncTableRenderingCellModifier.java @@ -40,16 +40,16 @@ import org.eclipse.swt.widgets.TableItem; // to plug cell modifier in case the element is not MemorySegment public class AsyncTableRenderingCellModifier implements ICellModifier { - private AbstractAsyncTableRendering fRendering; - private boolean fMBSupportsValueModification = false; + private AbstractAsyncTableRendering fRendering; + private boolean fMBSupportsValueModification = false; - private ICellModifier fCustomModifier; + private ICellModifier fCustomModifier; - public AsyncTableRenderingCellModifier(AbstractAsyncTableRendering rendering, ICellModifier customModifier) { - fRendering = rendering; - fCustomModifier = customModifier; + public AsyncTableRenderingCellModifier(AbstractAsyncTableRendering rendering, ICellModifier customModifier) { + fRendering = rendering; + fCustomModifier = customModifier; - Job job = new Job("AsyncTableRenderingCellModifier"){ //$NON-NLS-1$ + Job job = new Job("AsyncTableRenderingCellModifier"){ //$NON-NLS-1$ @Override protected IStatus run(IProgressMonitor monitor) { @@ -58,126 +58,126 @@ public class AsyncTableRenderingCellModifier implements ICellModifier { }}; job.setSystem(true); job.schedule(); - } + } - @Override + @Override public boolean canModify(Object element, String property) { - boolean canModify = true; - try { - if (!(element instanceof MemorySegment)) { + boolean canModify = true; + try { + if (!(element instanceof MemorySegment)) { return false; } - if (!isValueModificationSupported()) { - return false; - } - - MemorySegment line = (MemorySegment) element; - if (TableRenderingLine.P_ADDRESS.equals(property)) { - return false; - } - - // property is stored as number of addressable unit away from the - // line address - // to calculate offset to the memory line array, offset = - // numberofAddressableUnit * addressableSize - int addressableSize = getAddressableSize(); - - int offset = Integer.valueOf(property, 16).intValue() * addressableSize; - - MemoryByte[] bytes = line.getBytes(offset, fRendering.getBytesPerColumn()); - - if (fCustomModifier != null) - { - BigInteger address = line.getAddress().add(BigInteger.valueOf(offset)); - MemoryRenderingElement mElement = new MemoryRenderingElement(fRendering, address, bytes); - return fCustomModifier.canModify(mElement, null); - } - - for (int i = 0; i < bytes.length; i++) { - if (!bytes[i].isWritable()) { - canModify = false; - } - } - return canModify; - } catch (NumberFormatException e) { - canModify = false; - return canModify; - } - } - - /** - * @return the rendering addressable size - */ - private int getAddressableSize() { - int addressableSize = fRendering.getAddressableSize(); - if (addressableSize < 1) { + if (!isValueModificationSupported()) { + return false; + } + + MemorySegment line = (MemorySegment) element; + if (TableRenderingLine.P_ADDRESS.equals(property)) { + return false; + } + + // property is stored as number of addressable unit away from the + // line address + // to calculate offset to the memory line array, offset = + // numberofAddressableUnit * addressableSize + int addressableSize = getAddressableSize(); + + int offset = Integer.valueOf(property, 16).intValue() * addressableSize; + + MemoryByte[] bytes = line.getBytes(offset, fRendering.getBytesPerColumn()); + + if (fCustomModifier != null) + { + BigInteger address = line.getAddress().add(BigInteger.valueOf(offset)); + MemoryRenderingElement mElement = new MemoryRenderingElement(fRendering, address, bytes); + return fCustomModifier.canModify(mElement, null); + } + + for (int i = 0; i < bytes.length; i++) { + if (!bytes[i].isWritable()) { + canModify = false; + } + } + return canModify; + } catch (NumberFormatException e) { + canModify = false; + return canModify; + } + } + + /** + * @return the rendering addressable size + */ + private int getAddressableSize() { + int addressableSize = fRendering.getAddressableSize(); + if (addressableSize < 1) { addressableSize = 1; } - return addressableSize; - } + return addressableSize; + } - @Override + @Override public Object getValue(Object element, String property) { - // give back the value of the column + // give back the value of the column - if (!(element instanceof MemorySegment)) { + if (!(element instanceof MemorySegment)) { return null; } - MemorySegment line = (MemorySegment) element; - try { - if (TableRenderingLine.P_ADDRESS.equals(property)) { + MemorySegment line = (MemorySegment) element; + try { + if (TableRenderingLine.P_ADDRESS.equals(property)) { return line.getAddress(); } - int offsetToLineBuffer = Integer.valueOf(property, 16).intValue() * getAddressableSize(); - MemoryByte[] memory = line.getBytes(offsetToLineBuffer, fRendering.getBytesPerColumn()); + int offsetToLineBuffer = Integer.valueOf(property, 16).intValue() * getAddressableSize(); + MemoryByte[] memory = line.getBytes(offsetToLineBuffer, fRendering.getBytesPerColumn()); - int offsetFromLineAddress = Integer.valueOf(property, 16).intValue(); - BigInteger address = line.getAddress().add(BigInteger.valueOf(offsetFromLineAddress)); + int offsetFromLineAddress = Integer.valueOf(property, 16).intValue(); + BigInteger address = line.getAddress().add(BigInteger.valueOf(offsetFromLineAddress)); - if (fCustomModifier != null) - { - MemoryRenderingElement mElement = new MemoryRenderingElement(fRendering, address, memory); - return fCustomModifier.getValue(mElement, null); - } + if (fCustomModifier != null) + { + MemoryRenderingElement mElement = new MemoryRenderingElement(fRendering, address, memory); + return fCustomModifier.getValue(mElement, null); + } - // ask the rendering for a string representation of the bytes - return fRendering.getString(fRendering.getRenderingId(), address, memory); + // ask the rendering for a string representation of the bytes + return fRendering.getString(fRendering.getRenderingId(), address, memory); - } catch (NumberFormatException e) { - return "00"; //$NON-NLS-1$ - } - } + } catch (NumberFormatException e) { + return "00"; //$NON-NLS-1$ + } + } - @Override + @Override public void modify(Object element, final String property, final Object value) { - MemorySegment segment = null; - if (element instanceof TableItem) { - Object data = ((TableItem)element).getData(); - if (data != null && data instanceof MemorySegment) { + MemorySegment segment = null; + if (element instanceof TableItem) { + Object data = ((TableItem)element).getData(); + if (data != null && data instanceof MemorySegment) { segment = (MemorySegment)data; } - } else if (element instanceof MemorySegment){ - segment = (MemorySegment) element; - } + } else if (element instanceof MemorySegment){ + segment = (MemorySegment) element; + } - if (segment == null) { + if (segment == null) { return; } - final MemorySegment line = segment; + final MemorySegment line = segment; - Job job = new Job("Set Values"){ //$NON-NLS-1$ + Job job = new Job("Set Values"){ //$NON-NLS-1$ @Override protected IStatus run(IProgressMonitor monitor) { try { - // calculate offset to update + // calculate offset to update final IMemoryBlock memoryBlk = fRendering.getMemoryBlock(); // number of addressable units from the line's start address @@ -198,7 +198,7 @@ public class AsyncTableRenderingCellModifier implements ICellModifier { address = address.add(BigInteger.valueOf(offsetFromLineAddress)); if (fCustomModifier != null) { - MemoryRenderingElement mElement = new MemoryRenderingElement(fRendering, address, oldArray); + MemoryRenderingElement mElement = new MemoryRenderingElement(fRendering, address, oldArray); fCustomModifier.modify(mElement, null, value); return Status.OK_STATUS; } @@ -209,77 +209,77 @@ public class AsyncTableRenderingCellModifier implements ICellModifier { return Status.OK_STATUS; } - byte[] bytes = null; - String oldValue = (String) getValue(line, property); - if (!oldValue.equals(value)) { - bytes = fRendering.getBytes(fRendering.getRenderingId(), address, oldArray, (String) value); + byte[] bytes = null; + String oldValue = (String) getValue(line, property); + if (!oldValue.equals(value)) { + bytes = fRendering.getBytes(fRendering.getRenderingId(), address, oldArray, (String) value); - if (bytes == null) { + if (bytes == null) { return Status.OK_STATUS; } - if (bytes.length == 0) { + if (bytes.length == 0) { return Status.OK_STATUS; } - if (bytes.length <= oldArray.length) { - boolean changed = false; - // check that the bytes returned has actually changed - for (int i = 0; i < bytes.length; i++) { - if (bytes[i] != oldArray[i].getValue()) { - changed = true; - break; - } - } - if (!changed) { + if (bytes.length <= oldArray.length) { + boolean changed = false; + // check that the bytes returned has actually changed + for (int i = 0; i < bytes.length; i++) { + if (bytes[i] != oldArray[i].getValue()) { + changed = true; + break; + } + } + if (!changed) { return Status.OK_STATUS; } - } - } else { - // return if value has not changed - return Status.OK_STATUS; - } + } + } else { + // return if value has not changed + return Status.OK_STATUS; + } - final byte[] newByteValues = bytes; + final byte[] newByteValues = bytes; - if (memoryBlk instanceof IMemoryBlockExtension) { + if (memoryBlk instanceof IMemoryBlockExtension) { ((IMemoryBlockExtension) memoryBlk).setValue(offsetFromMBBase, newByteValues); } else { memoryBlk.setValue(offsetFromMBBase.longValue(), newByteValues); } - } catch (DebugException e) { - MemoryViewUtil.openError(DebugUIMessages.MemoryViewCellModifier_failure_title, DebugUIMessages.MemoryViewCellModifier_failed, e); - } catch (NumberFormatException e) { - MemoryViewUtil.openError(DebugUIMessages.MemoryViewCellModifier_failure_title, DebugUIMessages.MemoryViewCellModifier_failed + "\n" + DebugUIMessages.MemoryViewCellModifier_data_is_invalid, null); //$NON-NLS-1$ - } - return Status.OK_STATUS; + } catch (DebugException e) { + MemoryViewUtil.openError(DebugUIMessages.MemoryViewCellModifier_failure_title, DebugUIMessages.MemoryViewCellModifier_failed, e); + } catch (NumberFormatException e) { + MemoryViewUtil.openError(DebugUIMessages.MemoryViewCellModifier_failure_title, DebugUIMessages.MemoryViewCellModifier_failed + "\n" + DebugUIMessages.MemoryViewCellModifier_data_is_invalid, null); //$NON-NLS-1$ + } + return Status.OK_STATUS; }}; - job.setSystem(true); - job.schedule(); - } + job.setSystem(true); + job.schedule(); + } - private BigInteger getOffset(IMemoryBlock memory, BigInteger lineAddress, int lineOffset) throws DebugException { + private BigInteger getOffset(IMemoryBlock memory, BigInteger lineAddress, int lineOffset) throws DebugException { - BigInteger memoryAddr; + BigInteger memoryAddr; - if (memory instanceof IMemoryBlockExtension) { - memoryAddr = ((IMemoryBlockExtension) memory).getBigBaseAddress(); - } else { - memoryAddr = BigInteger.valueOf(memory.getStartAddress()); - } + if (memory instanceof IMemoryBlockExtension) { + memoryAddr = ((IMemoryBlockExtension) memory).getBigBaseAddress(); + } else { + memoryAddr = BigInteger.valueOf(memory.getStartAddress()); + } - if (memoryAddr == null) + if (memoryAddr == null) { memoryAddr = new BigInteger("0"); //$NON-NLS-1$ } - return lineAddress.subtract(memoryAddr).add(BigInteger.valueOf(lineOffset)); - } + return lineAddress.subtract(memoryAddr).add(BigInteger.valueOf(lineOffset)); + } - private boolean isValueModificationSupported() - { - return fMBSupportsValueModification; - } + private boolean isValueModificationSupported() + { + return fMBSupportsValueModification; + } } |