diff options
Diffstat (limited to 'org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements')
14 files changed, 0 insertions, 2183 deletions
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/AsynchronousDebugLabelAdapter.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/AsynchronousDebugLabelAdapter.java deleted file mode 100644 index 7f84fba56..000000000 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/AsynchronousDebugLabelAdapter.java +++ /dev/null @@ -1,135 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005, 2006 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ - -package org.eclipse.debug.internal.ui.elements.adapters; - -import java.util.Arrays; -import java.util.Iterator; -import java.util.Map; -import java.util.Map.Entry; - -import org.eclipse.core.runtime.CoreException; -import org.eclipse.debug.core.model.IDebugElement; -import org.eclipse.debug.internal.ui.DelegatingModelPresentation; -import org.eclipse.debug.internal.ui.LazyModelPresentation; -import org.eclipse.debug.internal.ui.viewers.PartPresentationContext; -import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext; -import org.eclipse.debug.internal.ui.viewers.provisional.AsynchronousLabelAdapter; -import org.eclipse.debug.internal.ui.viewers.provisional.ILabelRequestMonitor; -import org.eclipse.debug.internal.ui.views.launch.DebugElementHelper; -import org.eclipse.debug.ui.IDebugModelPresentation; -import org.eclipse.debug.ui.IDebugView; -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.swt.graphics.FontData; -import org.eclipse.swt.graphics.RGB; -import org.eclipse.ui.IWorkbenchPart; - -/** - * Asynchronous label adapter for debug elements. - * - * @since 3.2 - */ -public class AsynchronousDebugLabelAdapter extends AsynchronousLabelAdapter { - - /* (non-Javadoc) - * @see org.eclipse.debug.ui.viewers.AsynchronousLabelAdapter#computeLabels(java.lang.Object, org.eclipse.debug.ui.viewers.IPresentationContext, org.eclipse.debug.ui.viewers.ILabelRequestMonitor) - */ - protected void computeLabels(Object element, IPresentationContext context, ILabelRequestMonitor monitor) { - DelegatingModelPresentation presentation = DebugElementHelper.getPresentation(); - // Honor view specific settings in a debug view by copying model presentation settings - // into the debug element helper's presentation before we get the label. This allows - // for qualified name and type name settings to remain in tact. - if (context instanceof PartPresentationContext) { - PartPresentationContext ppc = (PartPresentationContext) context; - if (element instanceof IDebugElement && ppc.getPart() instanceof IDebugView) { - IWorkbenchPart part = ppc.getPart(); - if (part instanceof IDebugView) { - IDebugModelPresentation pres = ((IDebugView)part).getPresentation(((IDebugElement)element).getModelIdentifier()); - Map settings = null; - synchronized (presentation) { - if (pres instanceof DelegatingModelPresentation) { - settings = ((DelegatingModelPresentation)pres).getAttributes(); - } else if (pres instanceof LazyModelPresentation) { - settings = ((LazyModelPresentation)pres).getAttributes(); - } - if (settings != null) { - Iterator iterator = settings.entrySet().iterator(); - while (iterator.hasNext()) { - Map.Entry entry = (Entry) iterator.next(); - presentation.setAttribute((String) entry.getKey(), entry.getValue()); - } - super.computeLabels(element, context, monitor); - return; - } - } - } - } - } - super.computeLabels(element, context, monitor); - } - - /* (non-Javadoc) - * @see org.eclipse.debug.ui.viewers.AsynchronousLabelAdapter#getLabels(java.lang.Object, org.eclipse.debug.ui.viewers.IPresentationContext) - */ - protected String[] getLabels(Object element, IPresentationContext context) throws CoreException { - return new String[] {DebugElementHelper.getLabel(element)}; - } - - /* (non-Javadoc) - * @see org.eclipse.debug.ui.viewers.AsynchronousLabelAdapter#getImageDescriptors(java.lang.Object, org.eclipse.debug.ui.viewers.IPresentationContext) - */ - protected ImageDescriptor[] getImageDescriptors(Object element, IPresentationContext context) throws CoreException { - return new ImageDescriptor[] {DebugElementHelper.getImageDescriptor(element)}; - } - - /* (non-Javadoc) - * @see org.eclipse.debug.ui.viewers.AsynchronousLabelAdapter#getFontDatas(java.lang.Object, org.eclipse.debug.ui.viewers.IPresentationContext) - */ - protected FontData[] getFontDatas(Object element, IPresentationContext context) throws CoreException { - FontData[] datas = new FontData[getNumElements(context)]; - Arrays.fill(datas, DebugElementHelper.getFont(element)); - return datas; - } - - /* (non-Javadoc) - * @see org.eclipse.debug.ui.viewers.AsynchronousLabelAdapter#getForegrounds(java.lang.Object, org.eclipse.debug.ui.viewers.IPresentationContext) - */ - protected RGB[] getForegrounds(Object element, IPresentationContext context) throws CoreException { - RGB[] rgbs = new RGB[getNumElements(context)]; - Arrays.fill(rgbs, DebugElementHelper.getForeground(element)); - return rgbs; - } - - /* (non-Javadoc) - * @see org.eclipse.debug.ui.viewers.AsynchronousLabelAdapter#getBackgrounds(java.lang.Object, org.eclipse.debug.ui.viewers.IPresentationContext) - */ - protected RGB[] getBackgrounds(Object element, IPresentationContext context) throws CoreException { - RGB[] rgbs = new RGB[getNumElements(context)]; - Arrays.fill(rgbs, DebugElementHelper.getBackground(element)); - return rgbs; - } - - /** - * Returns the number of columns in the given presentation context, or 1 - * if there are no columns. - * - * @param context presentation context - * @return number of columns or 1 if none - */ - protected int getNumElements(IPresentationContext context) { - String[] columns = context.getColumns(); - if (columns == null) { - return 1; - } - return columns.length; - } - -} diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/DefaultVariableCellModifier.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/DefaultVariableCellModifier.java deleted file mode 100644 index 346efdc21..000000000 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/DefaultVariableCellModifier.java +++ /dev/null @@ -1,74 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2007 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.debug.internal.ui.elements.adapters; - -import org.eclipse.debug.core.DebugException; -import org.eclipse.debug.core.model.IVariable; -import org.eclipse.debug.internal.ui.DebugUIPlugin; -import org.eclipse.debug.internal.ui.DefaultLabelProvider; -import org.eclipse.debug.internal.ui.actions.variables.details.DetailPaneAssignValueAction; -import org.eclipse.jface.viewers.ICellModifier; - -/** - * @since 3.2 - * - */ -public class DefaultVariableCellModifier implements ICellModifier { - - /* (non-Javadoc) - * @see org.eclipse.jface.viewers.ICellModifier#canModify(java.lang.Object, java.lang.String) - */ - public boolean canModify(Object element, String property) { - if (VariableColumnPresentation.COLUMN_VARIABLE_VALUE.equals(property)) { - if (element instanceof IVariable) { - return ((IVariable) element).supportsValueModification(); - } - } - return false; - } - - /* (non-Javadoc) - * @see org.eclipse.jface.viewers.ICellModifier#getValue(java.lang.Object, java.lang.String) - */ - public Object getValue(Object element, String property) { - if (VariableColumnPresentation.COLUMN_VARIABLE_VALUE.equals(property)) { - if (element instanceof IVariable) { - IVariable variable = (IVariable) element; - try { - return DefaultLabelProvider.escapeSpecialChars(variable.getValue().getValueString()); - } catch (DebugException e) { - DebugUIPlugin.log(e); - } - } - } - return null; - } - - /* (non-Javadoc) - * @see org.eclipse.jface.viewers.ICellModifier#modify(java.lang.Object, java.lang.String, java.lang.Object) - */ - public void modify(Object element, String property, Object value) { - Object oldValue = getValue(element, property); - if (!value.equals(oldValue)) { - if (VariableColumnPresentation.COLUMN_VARIABLE_VALUE.equals(property)) { - if (element instanceof IVariable) { - if (value instanceof String) { - // The value column displays special characters escaped, so encode the string with any special characters escaped properly - String valueExpression = DefaultLabelProvider.encodeEsacpedChars((String)value); - IVariable variable = (IVariable) element; - DetailPaneAssignValueAction.assignValue(DebugUIPlugin.getShell(), variable, valueExpression); - } - } - } - } - } - -} diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/DefaultViewerInputProvider.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/DefaultViewerInputProvider.java deleted file mode 100644 index cd5a10d91..000000000 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/DefaultViewerInputProvider.java +++ /dev/null @@ -1,42 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007 Wind River Systems and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.debug.internal.ui.elements.adapters; - -import org.eclipse.core.runtime.CoreException; -import org.eclipse.debug.core.DebugPlugin; -import org.eclipse.debug.internal.ui.model.elements.ViewerInputProvider; -import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext; -import org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerUpdate; -import org.eclipse.debug.ui.IDebugUIConstants; - -/** - * Default input provider supplies the expression manager as input to the - * expression view. - * - * @since 3.4 - */ -public class DefaultViewerInputProvider extends ViewerInputProvider { - - /* (non-Javadoc) - * @see org.eclipse.debug.internal.ui.model.elements.ViewerInputProvider#getViewerInput(java.lang.Object, org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext, org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerUpdate) - */ - protected Object getViewerInput(Object source, IPresentationContext context, IViewerUpdate update) throws CoreException { - return DebugPlugin.getDefault().getExpressionManager(); - } - - /* (non-Javadoc) - * @see org.eclipse.debug.internal.ui.model.elements.ViewerInputProvider#supportsContextId(java.lang.String) - */ - protected boolean supportsContextId(String id) { - return IDebugUIConstants.ID_EXPRESSION_VIEW.equals(id); - } - -} diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/MemoryBlockContentAdapter.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/MemoryBlockContentAdapter.java deleted file mode 100644 index 65c221efa..000000000 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/MemoryBlockContentAdapter.java +++ /dev/null @@ -1,503 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2008 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - * WindRiver - Bug 192028 [Memory View] Memory view does not - * display memory blocks that do not reference IDebugTarget - *******************************************************************************/ - -package org.eclipse.debug.internal.ui.elements.adapters; - -import java.math.BigInteger; -import java.util.ArrayList; -import java.util.Hashtable; -import java.util.Vector; - -import org.eclipse.core.runtime.CoreException; -import org.eclipse.debug.core.DebugException; -import org.eclipse.debug.core.model.IDebugTarget; -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.DebugUIMessages; -import org.eclipse.debug.internal.ui.DebugUIPlugin; -import org.eclipse.debug.internal.ui.memory.provisional.AbstractAsyncTableRendering; -import org.eclipse.debug.internal.ui.memory.provisional.MemoryViewPresentationContext; -import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext; -import org.eclipse.debug.internal.ui.viewers.provisional.AsynchronousContentAdapter; -import org.eclipse.debug.internal.ui.views.memory.MemoryViewUtil; -import org.eclipse.debug.internal.ui.views.memory.renderings.MemorySegment; -import org.eclipse.debug.internal.ui.views.memory.renderings.TableRenderingContentDescriptor; -import org.eclipse.debug.ui.memory.IMemoryRendering; - -public class MemoryBlockContentAdapter extends AsynchronousContentAdapter { - - // Cache to allow the content provider to comppute change information - // Cache is taken by copying the lineCache after a suspend event - // or change event from the the memory block. - protected Hashtable contentCache; - - public MemoryBlockContentAdapter() - { - contentCache = new Hashtable(); - } - - protected Object[] getChildren(Object parent, IPresentationContext context) - throws CoreException { - - if (!(parent instanceof IMemoryBlock)) - return new Object[0]; - - if (!(context instanceof MemoryViewPresentationContext)) - return new Object[0]; - - MemoryViewPresentationContext memoryViewContext = (MemoryViewPresentationContext)context; - IMemoryRendering rendering = memoryViewContext.getRendering(); - - if (!(rendering instanceof AbstractAsyncTableRendering)) - return new Object[0]; - - try - { - return getMemoryFromMemoryBlock(memoryViewContext); - } catch (DebugException e) { - throw e; - } - - } - - protected boolean hasChildren(Object element, IPresentationContext context) - throws CoreException { - - if (context instanceof MemoryViewPresentationContext) - { - if (((MemoryViewPresentationContext)context).getRendering() != null) - return true; - } - - return false; - } - - protected boolean supportsPartId(String id) { - return true; - } - - - private Object[] getMemoryFromMemoryBlock(MemoryViewPresentationContext context) throws DebugException { - IMemoryBlock memoryBlock = context.getRendering().getMemoryBlock(); - if (memoryBlock instanceof IMemoryBlockExtension) - { - return loadContentForExtendedMemoryBlock(context); - } - - return loadContentForSimpleMemoryBlock(context); - - } - - /** - * @throws DebugException - */ - public Object[] loadContentForSimpleMemoryBlock(MemoryViewPresentationContext context) throws DebugException { - AbstractAsyncTableRendering rendering = getTableRendering(context); - if (rendering != null) - { - IMemoryBlock memoryBlock = rendering.getMemoryBlock(); - long startAddress = memoryBlock.getStartAddress(); - BigInteger address = BigInteger.valueOf(startAddress); - long length = memoryBlock.getLength(); - long numLines = length / rendering.getBytesPerLine(); - return getMemoryToFitTable(address, numLines, context); - } - return EMPTY; - } - - /** - * @throws DebugException - */ - public Object[] loadContentForExtendedMemoryBlock(MemoryViewPresentationContext context) throws DebugException { - - AbstractAsyncTableRendering rendering = getTableRendering(context); - if (rendering != null) - { - TableRenderingContentDescriptor descriptor = (TableRenderingContentDescriptor)rendering.getAdapter(TableRenderingContentDescriptor.class); - - if (descriptor == null) - return new Object[0]; - - if (descriptor.getNumLines() <= 0) - return new Object[0]; - - // calculate top buffered address - BigInteger loadAddress = descriptor.getLoadAddress(); - if (loadAddress == null) - { - loadAddress = new BigInteger("0"); //$NON-NLS-1$ - } - - BigInteger mbStart = descriptor.getStartAddress(); - BigInteger mbEnd = descriptor.getEndAddress(); - - // check that the load address is within range - if (loadAddress.compareTo(mbStart) < 0 || loadAddress.compareTo(mbEnd) > 0) - { - // default load address to memory block base address - loadAddress = ((IMemoryBlockExtension)descriptor.getMemoryBlock()).getBigBaseAddress(); - descriptor.setLoadAddress(loadAddress); - } - - // if address is still out of range, throw an exception - if (loadAddress.compareTo(mbStart) < 0 || loadAddress.compareTo(mbEnd) > 0) - { - throw new DebugException(DebugUIPlugin.newErrorStatus(DebugUIMessages.TableRenderingContentProvider_0 + loadAddress.toString(16), null)); - } - - int addressableUnitsPerLine = rendering.getAddressableUnitPerLine(); - BigInteger bufferStart = loadAddress.subtract(BigInteger.valueOf(descriptor.getPreBuffer()*addressableUnitsPerLine)); - BigInteger bufferEnd = loadAddress.add(BigInteger.valueOf(descriptor.getPostBuffer()*addressableUnitsPerLine)); - bufferEnd = bufferEnd.add(BigInteger.valueOf(descriptor.getNumLines()*addressableUnitsPerLine)); - - // TODO: should rely on input to tell us what to load - // instead of having the content adapter override the setting - if (descriptor.isDynamicLoad()) - { - if (bufferStart.compareTo(mbStart) < 0) - bufferStart = mbStart; - - if (bufferEnd.compareTo(mbEnd) > 0) - { - bufferEnd = mbEnd; - - int numLines = bufferEnd.subtract(bufferStart).divide(BigInteger.valueOf(addressableUnitsPerLine)).intValue(); - if (numLines < descriptor.getNumLines()) - { - // re-calculate buffer start since we may not have enough lines to popoulate the view - bufferStart = bufferEnd.subtract(BigInteger.valueOf(descriptor.getNumLines()*addressableUnitsPerLine)); - bufferStart = bufferStart.subtract(BigInteger.valueOf(descriptor.getPreBuffer()*addressableUnitsPerLine)); - - // if after adjusting buffer start, it goes before the memory block start - // address, adjust it back - if (bufferStart.compareTo(mbStart) < 0) - bufferStart = mbStart; - } - } - - // buffer end must be greater than buffer start - if (bufferEnd.compareTo(bufferStart) <= 0) - throw new DebugException(DebugUIPlugin.newErrorStatus(DebugUIMessages.TableRenderingContentProvider_1, null)); - - int numLines = bufferEnd.subtract(bufferStart).divide(BigInteger.valueOf(addressableUnitsPerLine)).intValue()+1; - // get stoarage to fit the memory view tab size - return getMemoryToFitTable(bufferStart, numLines,context); - } - else - { - if (bufferStart.compareTo(mbStart) < 0) - bufferStart = mbStart; - - if (bufferEnd.compareTo(mbEnd) > 0) - { - bufferStart = mbEnd.subtract(BigInteger.valueOf((descriptor.getNumLines()-1)*addressableUnitsPerLine)); - bufferEnd = mbEnd; - - // after adjusting buffer start, check if it's smaller than memory block's start address - if (bufferStart.compareTo(mbStart) < 0) - bufferStart = mbStart; - } - - // buffer end must be greater than buffer start - if (bufferEnd.compareTo(bufferStart) <= 0) - throw new DebugException(DebugUIPlugin.newErrorStatus(DebugUIMessages.TableRenderingContentProvider_2, null)); - - int numLines = descriptor.getNumLines(); - int bufferNumLines = bufferEnd.subtract(bufferStart).divide(BigInteger.valueOf(addressableUnitsPerLine)).intValue()+1; - - if (bufferNumLines < numLines) - numLines = bufferNumLines; - - // get stoarage to fit the memory view tab size - return getMemoryToFitTable(bufferStart, numLines, context); - } - } - return EMPTY; - } - - /** - * Get memory to fit table - * @param startingAddress - * @param numberOfLines - * @param updateDelta - * @throws DebugException - */ - public Object[] getMemoryToFitTable(BigInteger startAddress, long numberOfLines, MemoryViewPresentationContext context) throws DebugException - { - AbstractAsyncTableRendering tableRendering = getTableRendering(context); - if (tableRendering == null) - { - DebugException e = new DebugException(DebugUIPlugin.newErrorStatus(DebugUIMessages.MemoryViewContentProvider_Unable_to_retrieve_content, null)); - throw e; - } - - TableRenderingContentDescriptor descriptor = (TableRenderingContentDescriptor)tableRendering.getAdapter(TableRenderingContentDescriptor.class); - if(descriptor == null) - return new Object[0]; - - // do not ask for memory from memory block if the debug target - // is already terminated - IDebugTarget target = descriptor.getMemoryBlock().getDebugTarget(); - - // check for null target to not calculate and retrieve memory for standard debug model - if (target != null && (target.isDisconnected() || target.isTerminated())) - return new Object[0]; - - boolean error = false; - DebugException dbgEvt = null; - - String adjustedAddress = startAddress.toString(16); - - // align to the closest boundary based on addressable size per line - if (descriptor.isAlignAddressToBoundary() && descriptor.getMemoryBlock() instanceof IMemoryBlockExtension) - { - startAddress = MemoryViewUtil.alignToBoundary(startAddress, tableRendering.getAddressableUnitPerLine()); - } - - IMemoryBlockExtension extMemoryBlock = null; - MemoryByte[] memoryBuffer = null; - - long reqNumBytes = 0; - try - { - - if (descriptor.getMemoryBlock() instanceof IMemoryBlockExtension) - { - reqNumBytes = tableRendering.getBytesPerLine() * numberOfLines; - // get memory from memory block - extMemoryBlock = (IMemoryBlockExtension) descriptor.getMemoryBlock(); - - long reqNumberOfUnits = tableRendering.getAddressableUnitPerLine() * numberOfLines; - - memoryBuffer = extMemoryBlock.getBytesFromAddress(startAddress, reqNumberOfUnits); - - if(memoryBuffer == null) - { - DebugException e = new DebugException(DebugUIPlugin.newErrorStatus(DebugUIMessages.MemoryViewContentProvider_Unable_to_retrieve_content, null)); - throw e; - } - } - else - { - // get memory from memory block - byte[] memory = descriptor.getMemoryBlock().getBytes(); - - if (memory == null) - { - DebugException e = new DebugException(DebugUIPlugin.newErrorStatus(DebugUIMessages.MemoryViewContentProvider_Unable_to_retrieve_content, null)); - throw e; - } - - int prefillNumBytes = 0; - - // number of bytes need to prefill - if (!startAddress.toString(16).endsWith("0")) //$NON-NLS-1$ - { - adjustedAddress = startAddress.toString(16).substring(0, adjustedAddress.length() - 1); - adjustedAddress += "0"; //$NON-NLS-1$ - BigInteger adjustedStart = new BigInteger(adjustedAddress, 16); - prefillNumBytes = startAddress.subtract(adjustedStart).intValue(); - startAddress = adjustedStart; - } - reqNumBytes = descriptor.getMemoryBlock().getLength() + prefillNumBytes; - - // figure out number of dummy bytes to append - while (reqNumBytes % tableRendering.getBytesPerLine() != 0) - { - reqNumBytes ++; - } - - numberOfLines = reqNumBytes / tableRendering.getBytesPerLine(); - - // create memory byte for IMemoryBlock - memoryBuffer = new MemoryByte[(int)reqNumBytes]; - - // prefill buffer to ensure double-word alignment - for (int i=0; i<prefillNumBytes; i++) - { - MemoryByte tmp = new MemoryByte(); - tmp.setValue((byte)0); - tmp.setWritable(false); - tmp.setReadable(false); - tmp.setEndianessKnown(false); - memoryBuffer[i] = tmp; - } - - // fill buffer with memory returned by debug adapter - int j = prefillNumBytes; // counter for memoryBuffer - for (int i=0; i<memory.length; i++) - { - MemoryByte tmp = new MemoryByte(); - tmp.setValue(memory[i]); - tmp.setReadable(true); - tmp.setWritable(true); - tmp.setEndianessKnown(false); - memoryBuffer[j] = tmp; - j++; - } - - // append to buffer to fill up the entire line - for (int i=j; i<memoryBuffer.length; i++) - { - MemoryByte tmp = new MemoryByte(); - tmp.setValue((byte)0); - tmp.setWritable(false); - tmp.setReadable(false); - tmp.setEndianessKnown(false); - memoryBuffer[i] = tmp; - } - } - } - catch (DebugException e) - { - memoryBuffer = makeDummyContent(numberOfLines, tableRendering.getBytesPerLine()); - - // finish creating the content provider before throwing an event - error = true; - dbgEvt = e; - } - catch (Throwable e) - { - // catch all errors from this process just to be safe - memoryBuffer = makeDummyContent(numberOfLines, tableRendering.getBytesPerLine()); - - // finish creating the content provider before throwing an event - error = true; - dbgEvt = new DebugException(DebugUIPlugin.newErrorStatus(e.getMessage(), e)); - } - - // if debug adapter did not return enough memory, create dummy memory - if (memoryBuffer.length < reqNumBytes) - { - ArrayList newBuffer = new ArrayList(); - - for (int i=0; i<memoryBuffer.length; i++) - { - newBuffer.add(memoryBuffer[i]); - } - - for (int i=memoryBuffer.length; i<reqNumBytes; i++) - { - MemoryByte mb = new MemoryByte(); - mb.setReadable(false); - mb.setWritable(false); - mb.setEndianessKnown(false); - newBuffer.add(mb); - } - - memoryBuffer = (MemoryByte[])newBuffer.toArray(new MemoryByte[newBuffer.size()]); - - } - - boolean manageDelta = true; - - // If change information is not managed by the memory block - // The view tab will manage it and calculate delta information - // for its content cache. - if (descriptor.getMemoryBlock() instanceof IMemoryBlockExtension) - { - manageDelta = !((IMemoryBlockExtension)descriptor.getMemoryBlock()).supportsChangeManagement(); - } - - if (error){ - throw dbgEvt; - } - - // put memory information into MemoryViewLine - return organizeLines(numberOfLines, memoryBuffer, startAddress, manageDelta, context); - - - } - - private Object[] organizeLines(long numberOfLines, MemoryByte[] memoryBuffer, BigInteger address, boolean manageDelta, MemoryViewPresentationContext context) - { - Vector lineCache = new Vector(); - IMemoryRendering rendering = context.getRendering(); - if (!(rendering instanceof AbstractAsyncTableRendering)) - return lineCache.toArray(); - - AbstractAsyncTableRendering tableRendering = (AbstractAsyncTableRendering)rendering; - int addressableUnit = tableRendering.getBytesPerLine()/tableRendering.getAddressableSize(); - - for (int i = 0; i < numberOfLines; i++) - { - int bytesPerLine = tableRendering.getBytesPerLine(); - MemoryByte[] memory = new MemoryByte[bytesPerLine]; - - // counter for memory, starts from 0 to number of bytes per line - int k = 0; - // j is the counter for memArray, memory returned by debug adapter - for (int j = i * bytesPerLine; - j < i * bytesPerLine + bytesPerLine; - j++) - { - - byte changeFlag = memoryBuffer[j].getFlags(); - if (manageDelta) - { - // turn off both change and known bits to make sure that - // the change bits returned by debug adapters do not take - // any effect - - changeFlag |= MemoryByte.HISTORY_KNOWN; - changeFlag ^= MemoryByte.HISTORY_KNOWN; - - changeFlag |= MemoryByte.CHANGED; - changeFlag ^= MemoryByte.CHANGED; - } - - MemoryByte newByteObj = new MemoryByte(memoryBuffer[j].getValue(), changeFlag); - memory[k] = newByteObj; - k++; - } - - MemorySegment newLine = new MemorySegment(address, memory, addressableUnit); - lineCache.add(newLine); - address = address.add(BigInteger.valueOf(addressableUnit)); - } - return lineCache.toArray(); - } - - /** - * @param numberOfLines - * @return an array of dummy MemoryByte - */ - private MemoryByte[] makeDummyContent(long numberOfLines, int bytesPerLine) { - MemoryByte[] memoryBuffer; - // make up dummy memory, needed for recovery in case the debug adapter - // is capable of retrieving memory again - - int numBytes = (int)(bytesPerLine * numberOfLines); - memoryBuffer = new MemoryByte[numBytes]; - - for (int i=0; i<memoryBuffer.length; i++){ - memoryBuffer[i] = new MemoryByte(); - memoryBuffer[i].setValue((byte)0); - memoryBuffer[i].setWritable(false); - memoryBuffer[i].setReadable(false); - memoryBuffer[i].setEndianessKnown(false); - } - return memoryBuffer; - } - - protected AbstractAsyncTableRendering getTableRendering(MemoryViewPresentationContext context) - { - IMemoryRendering memRendering = context.getRendering(); - if (memRendering != null && memRendering instanceof AbstractAsyncTableRendering) - { - return (AbstractAsyncTableRendering)memRendering; - } - return null; - } -} diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/MemoryBlockLabelAdapter.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/MemoryBlockLabelAdapter.java deleted file mode 100644 index 6e9c3c116..000000000 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/MemoryBlockLabelAdapter.java +++ /dev/null @@ -1,60 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005, 2006 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ - -package org.eclipse.debug.internal.ui.elements.adapters; - -import org.eclipse.core.runtime.CoreException; -import org.eclipse.debug.core.model.IMemoryBlock; -import org.eclipse.debug.core.model.IMemoryBlockExtension; -import org.eclipse.debug.internal.ui.DebugPluginImages; -import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext; -import org.eclipse.debug.ui.IDebugUIConstants; -import org.eclipse.jface.resource.ImageDescriptor; - -public class MemoryBlockLabelAdapter extends AsynchronousDebugLabelAdapter { - - protected ImageDescriptor[] getImageDescriptors(Object element, IPresentationContext context) throws CoreException { - if (element instanceof IMemoryBlock) - return new ImageDescriptor[]{DebugPluginImages.getImageDescriptor(IDebugUIConstants.IMG_OBJS_VARIABLE)}; - - return new ImageDescriptor[0]; - } - - /** - * @param memoryBlockLabel - * @return - */ - private String getLabel(IMemoryBlock memoryBlock) { - - String memoryBlockLabel = " "; //$NON-NLS-1$ - if (memoryBlock instanceof IMemoryBlockExtension) - { - // simply return the expression without the address - // do not want to keep track of changes in the address - if (((IMemoryBlockExtension)memoryBlock).getExpression() != null) - { - memoryBlockLabel += ((IMemoryBlockExtension)memoryBlock).getExpression(); - } - } - else - { - long address = memoryBlock.getStartAddress(); - memoryBlockLabel = Long.toHexString(address); - } - return memoryBlockLabel; - } - - protected String[] getLabels(Object element, IPresentationContext context) throws CoreException { - if (element instanceof IMemoryBlock) - return new String[]{getLabel((IMemoryBlock)element)}; - return super.getLabels(element, context); - } -} diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/MemoryRetrievalContentAdapter.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/MemoryRetrievalContentAdapter.java deleted file mode 100644 index eb963920b..000000000 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/MemoryRetrievalContentAdapter.java +++ /dev/null @@ -1,52 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005, 2006 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ - -package org.eclipse.debug.internal.ui.elements.adapters; - -import org.eclipse.core.runtime.CoreException; -import org.eclipse.debug.core.DebugPlugin; -import org.eclipse.debug.core.model.IMemoryBlockRetrieval; -import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext; -import org.eclipse.debug.internal.ui.viewers.provisional.AsynchronousContentAdapter; -import org.eclipse.debug.ui.IDebugUIConstants; - -public class MemoryRetrievalContentAdapter extends AsynchronousContentAdapter{ - - protected Object[] getChildren(Object parent, IPresentationContext context) throws CoreException { - String id = context.getId(); - if (id.equals(IDebugUIConstants.ID_MEMORY_VIEW)) - { - if (parent instanceof IMemoryBlockRetrieval) - { - return DebugPlugin.getDefault().getMemoryBlockManager().getMemoryBlocks((IMemoryBlockRetrieval)parent); - } - } - return EMPTY; - } - - protected boolean hasChildren(Object element, IPresentationContext context) throws CoreException { - String id = context.getId(); - if (id.equals(IDebugUIConstants.ID_MEMORY_VIEW)) - { - if (element instanceof IMemoryBlockRetrieval) - { - if (((IMemoryBlockRetrieval)element).supportsStorageRetrieval()) - return DebugPlugin.getDefault().getMemoryBlockManager().getMemoryBlocks((IMemoryBlockRetrieval)element).length > 0; - } - } - return false; - } - - protected boolean supportsPartId(String id) { - return id.equals(IDebugUIConstants.ID_MEMORY_VIEW); - } - -} diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/MemorySegmentLabelAdapter.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/MemorySegmentLabelAdapter.java deleted file mode 100644 index 5d07d2d1a..000000000 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/MemorySegmentLabelAdapter.java +++ /dev/null @@ -1,418 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2007 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ - -package org.eclipse.debug.internal.ui.elements.adapters; - -import java.math.BigInteger; - -import org.eclipse.core.runtime.CoreException; -import org.eclipse.debug.core.model.MemoryByte; -import org.eclipse.debug.internal.core.IInternalDebugCoreConstants; -import org.eclipse.debug.internal.ui.DebugPluginImages; -import org.eclipse.debug.internal.ui.DebugUIPlugin; -import org.eclipse.debug.internal.ui.IInternalDebugUIConstants; -import org.eclipse.debug.internal.ui.memory.provisional.AbstractAsyncTableRendering; -import org.eclipse.debug.internal.ui.memory.provisional.MemoryViewPresentationContext; -import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext; -import org.eclipse.debug.internal.ui.viewers.provisional.AsynchronousLabelAdapter; -import org.eclipse.debug.internal.ui.views.launch.DebugElementHelper; -import org.eclipse.debug.internal.ui.views.memory.renderings.AbstractBaseTableRendering; -import org.eclipse.debug.internal.ui.views.memory.renderings.MemorySegment; -import org.eclipse.debug.internal.ui.views.memory.renderings.TableRenderingContentDescriptor; -import org.eclipse.debug.ui.IDebugUIConstants; -import org.eclipse.debug.ui.memory.IMemoryBlockTablePresentation; -import org.eclipse.debug.ui.memory.MemoryRenderingElement; -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.jface.viewers.IColorProvider; -import org.eclipse.jface.viewers.IFontProvider; -import org.eclipse.jface.viewers.ILabelProvider; -import org.eclipse.swt.graphics.Color; -import org.eclipse.swt.graphics.Font; -import org.eclipse.swt.graphics.FontData; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.graphics.RGB; - -public class MemorySegmentLabelAdapter extends AsynchronousLabelAdapter { - - protected String[] getLabels(Object element, IPresentationContext context) - throws CoreException { - - if (context instanceof MemoryViewPresentationContext) - { - MemoryViewPresentationContext tableRenderingContext = (MemoryViewPresentationContext)context; - if (tableRenderingContext.getRendering() != null && tableRenderingContext.getRendering() instanceof AbstractAsyncTableRendering) - { - AbstractAsyncTableRendering tableRendering = (AbstractAsyncTableRendering)tableRenderingContext.getRendering(); - TableRenderingContentDescriptor descriptor = (TableRenderingContentDescriptor)tableRendering.getAdapter(TableRenderingContentDescriptor.class); - if (descriptor != null) - { - String addressStr = getColumnText(element, 0, tableRendering, descriptor); - int numColumns = tableRendering.getAddressableUnitPerLine() / tableRendering.getAddressableUnitPerColumn(); - - String[] labels = new String[numColumns+2]; - labels[0] = addressStr; - - for (int i=0; i<=numColumns; i++) - { - labels[i+1] = getColumnText(element, i+1, tableRendering, (TableRenderingContentDescriptor)tableRendering.getAdapter(TableRenderingContentDescriptor.class)); - } - - labels[labels.length - 1 ] = IInternalDebugCoreConstants.EMPTY_STRING; - return labels; - } - } - } - return new String[0]; - } - - private String getColumnText(Object element, int columnIndex, AbstractAsyncTableRendering tableRendering, TableRenderingContentDescriptor descriptor) { - String columnLabel = null; - - if (columnIndex == 0) - { - IMemoryBlockTablePresentation presentation = (IMemoryBlockTablePresentation)tableRendering.getMemoryBlock().getAdapter(IMemoryBlockTablePresentation.class); - if (presentation != null) - { - String rowLabel = presentation.getRowLabel(tableRendering.getMemoryBlock(), ((MemorySegment)element).getAddress()); - if (rowLabel != null) - return rowLabel; - } - - columnLabel = ((MemorySegment)element).getAddress().toString(16).toUpperCase(); - - int addressSize = descriptor.getAddressSize(); - int prefillLength = addressSize * 2 - columnLabel.length(); - StringBuffer buf = new StringBuffer(); - if (prefillLength > 0) - { - for (int i=0; i<prefillLength; i++) - { - buf.append("0"); //$NON-NLS-1$ - } - } - buf.append(columnLabel); - return buf.toString(); - - } - else if (columnIndex > (tableRendering.getBytesPerLine()/tableRendering.getBytesPerColumn())) - { - columnLabel = " "; //$NON-NLS-1$ - } - else - { - if (element instanceof MemorySegment) - { - MemorySegment segment = (MemorySegment)element; - if (segment.getBytes().length != tableRendering.getBytesPerLine()) - return IInternalDebugCoreConstants.EMPTY_STRING; - } - - ILabelProvider labelProvider = (ILabelProvider)tableRendering.getAdapter(ILabelProvider.class); - if (labelProvider != null && columnIndex > 0) - { - MemoryRenderingElement renderingElement = getMemoryRenderingElement(element, columnIndex, tableRendering); - if (renderingElement != null) { - String label = labelProvider.getText(renderingElement); - if (label != null) - return label; - } - } - - int start = (columnIndex-1)*tableRendering.getBytesPerColumn(); - MemoryByte[] bytes = ((MemorySegment)element).getBytes(start, tableRendering.getBytesPerColumn()); - BigInteger address = ((MemorySegment)element).getAddress(); - address = address.add(BigInteger.valueOf(start)); - - columnLabel = tableRendering.getString(tableRendering.getRenderingId(), address, bytes); - } - return columnLabel; - } - - protected ImageDescriptor[] getImageDescriptors(Object element, - IPresentationContext context) throws CoreException { - if (context instanceof MemoryViewPresentationContext) - { - MemoryViewPresentationContext tableRenderingContext = (MemoryViewPresentationContext)context; - if (tableRenderingContext.getRendering() != null && tableRenderingContext.getRendering() instanceof AbstractAsyncTableRendering) - { - AbstractAsyncTableRendering tableRendering = (AbstractAsyncTableRendering)tableRenderingContext.getRendering(); - int numColumns = tableRendering.getAddressableUnitPerLine() / tableRendering.getAddressableUnitPerColumn(); - - ImageDescriptor[] images = new ImageDescriptor[numColumns+2]; - - for (int i=0; i<=numColumns; i++) - { - images[i] = getColumnImageDescriptor(element, i, tableRendering); - } - - images[images.length - 1 ] = null; - return images; - } - } - return new ImageDescriptor[0]; - } - - private ImageDescriptor getColumnImageDescriptor(Object element, int columnIndex, AbstractAsyncTableRendering tableRendering) - { - if (columnIndex == 0) - return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_OBJECT_MEMORY); - - if (element instanceof MemorySegment) - { - MemorySegment segment = (MemorySegment)element; - if (segment.getBytes().length != tableRendering.getBytesPerLine()) - return null; - - ILabelProvider labelProvider = (ILabelProvider)tableRendering.getAdapter(ILabelProvider.class); - if (labelProvider != null && columnIndex > 0) - { - MemoryRenderingElement renderingElement = getMemoryRenderingElement(element, columnIndex, tableRendering); - if (renderingElement != null) { - Image image = labelProvider.getImage(renderingElement); - if (image != null) - { - return DebugElementHelper.getImageDescriptor(image); - } - } - } - - int start = (columnIndex-1)*tableRendering.getBytesPerColumn(); - - MemoryByte[] bytes = ((MemorySegment)element).getBytes(start, tableRendering.getBytesPerColumn()); - boolean allKnown = true; - boolean unchanged = true; - for (int i=0; i<bytes.length; i++) - { - if (!bytes[i].isHistoryKnown()) - allKnown = false; - - if (bytes[i].isChanged()) - unchanged = false; - } - - if (allKnown) - { - // mark changed elements with changed icon - if (!unchanged) - return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_OBJECT_MEMORY_CHANGED); - - } - } - return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_OBJECT_MEMORY); - } - - protected FontData[] getFontDatas(Object element, - IPresentationContext context) throws CoreException { - if (context instanceof MemoryViewPresentationContext) - { - MemoryViewPresentationContext tableRenderingContext = (MemoryViewPresentationContext)context; - if (tableRenderingContext.getRendering() != null && tableRenderingContext.getRendering() instanceof AbstractAsyncTableRendering) - { - AbstractAsyncTableRendering tableRendering = (AbstractAsyncTableRendering)tableRenderingContext.getRendering(); - int numColumns = tableRendering.getAddressableUnitPerLine() / tableRendering.getAddressableUnitPerColumn(); - - FontData[] fontData = new FontData[numColumns+2]; - - for (int i=0; i<fontData.length-1; i++) - { - fontData[i] = getColumnFontData(element, i, tableRendering); - } - return fontData; - } - } - - return new FontData[0]; - } - - private FontData getColumnFontData(Object element, int columnIndex, AbstractAsyncTableRendering tableRendering) - { - if (element instanceof MemorySegment) - { - MemorySegment segment = (MemorySegment)element; - if (segment.getBytes().length != tableRendering.getBytesPerLine()) - return null; - - IFontProvider fontProvider = (IFontProvider)tableRendering.getAdapter(IFontProvider.class); - if (fontProvider != null && columnIndex > 0) - { - MemoryRenderingElement renderingElement = getMemoryRenderingElement(element, columnIndex, tableRendering); - if (renderingElement != null) { - Font font = fontProvider.getFont(renderingElement); - if (font != null) - return font.getFontData()[0]; - } - } - } - return null; - } - - protected RGB[] getForegrounds(Object element, IPresentationContext context) - throws CoreException { - - if (context instanceof MemoryViewPresentationContext) - { - MemoryViewPresentationContext tableRenderingContext = (MemoryViewPresentationContext)context; - if (tableRenderingContext.getRendering() != null && tableRenderingContext.getRendering() instanceof AbstractAsyncTableRendering) - { - AbstractAsyncTableRendering tableRendering = (AbstractAsyncTableRendering)tableRenderingContext.getRendering(); - int numColumns = tableRendering.getAddressableUnitPerLine() / tableRendering.getAddressableUnitPerColumn(); - - RGB[] colors = new RGB[numColumns+2]; - - for (int i=0; i<colors.length-1; i++) - { - colors[i] = getColumnForeground(element, i, tableRendering); - } - - colors[colors.length-1] = null; - - return colors; - } - } - - return new RGB[0]; - } - - private RGB getColumnBackground(Object element, int columnIndex, AbstractAsyncTableRendering tableRendering) - { - if (columnIndex == 0) - return null; - - if (element instanceof MemorySegment) - { - MemorySegment segment = (MemorySegment)element; - if (segment.getBytes().length != tableRendering.getBytesPerLine()) - return null; - - IColorProvider colorProvider = (IColorProvider)tableRendering.getAdapter(IColorProvider.class); - if (colorProvider != null && columnIndex > 0) - { - MemoryRenderingElement renderingElement = getMemoryRenderingElement(element, columnIndex, tableRendering); - if (renderingElement != null) { - Color color = colorProvider.getBackground(renderingElement); - if (color != null) - return color.getRGB(); - } - } - } - return null; - } - - private RGB getColumnForeground(Object element, int columnIndex, AbstractAsyncTableRendering tableRendering) - { - if (columnIndex == 0) - return null; - - if (element instanceof MemorySegment) - { - MemorySegment segment = (MemorySegment)element; - if (segment.getBytes().length != tableRendering.getBytesPerLine()) - return null; - - IColorProvider colorProvider = (IColorProvider)tableRendering.getAdapter(IColorProvider.class); - if (colorProvider != null && columnIndex > 0) - { - MemoryRenderingElement renderingElement = getMemoryRenderingElement(element, columnIndex, tableRendering); - if (renderingElement != null) { - Color color = colorProvider.getForeground(renderingElement); - if (color != null) - return color.getRGB(); - } - } - - int start = (columnIndex-1)*tableRendering.getBytesPerColumn(); - MemoryByte[] bytes = segment.getBytes(start, tableRendering.getBytesPerColumn()); - boolean allKnown = true; - boolean unchanged = true; - for (int i=0; i<bytes.length; i++) - { - if (!bytes[i].isHistoryKnown()) - allKnown = false; - - if (bytes[i].isChanged()) - unchanged = false; - } - - if (allKnown) - { - // mark changed elements in changed color - if (!unchanged) - return DebugUIPlugin.getPreferenceColor(IDebugUIConstants.PREF_CHANGED_DEBUG_ELEMENT_COLOR).getRGB(); - - return DebugUIPlugin.getPreferenceColor(IDebugUIConstants.PREF_MEMORY_HISTORY_KNOWN_COLOR).getRGB(); - } - - return DebugUIPlugin.getPreferenceColor(IDebugUIConstants.PREF_MEMORY_HISTORY_UNKNOWN_COLOR).getRGB(); - - } - return null; - } - - protected RGB[] getBackgrounds(Object element, IPresentationContext context) - throws CoreException { - - if (context instanceof MemoryViewPresentationContext) - { - MemoryViewPresentationContext tableRenderingContext = (MemoryViewPresentationContext)context; - if (tableRenderingContext.getRendering() != null && tableRenderingContext.getRendering() instanceof AbstractAsyncTableRendering) - { - AbstractAsyncTableRendering tableRendering = (AbstractAsyncTableRendering)tableRenderingContext.getRendering(); - int numColumns = tableRendering.getAddressableUnitPerLine() / tableRendering.getAddressableUnitPerColumn(); - - RGB[] colors = new RGB[numColumns+2]; - - for (int i=0; i<colors.length-1; i++) - { - colors[i] = getColumnBackground(element, i, tableRendering); - } - - colors[colors.length-1] = null; - - return colors; - } - } - - return new RGB[0]; - } - - /** - * Returns a memory rendering element corresponding to the given element - * or <code>null</code> if none. - * - * @param element element to be rendered - * @param columnIndex column index at which to render - * @return memory rendering element or <code>null</code> - */ - private MemoryRenderingElement getMemoryRenderingElement(Object element, int columnIndex, AbstractBaseTableRendering rendering) { - if (element instanceof MemorySegment) { - MemorySegment line = (MemorySegment) element; - BigInteger address = line.getAddress(); - int offset = (columnIndex - 1) * rendering.getBytesPerColumn(); - if (offset < rendering.getBytesPerLine() && (offset + rendering.getBytesPerColumn()) <= rendering.getBytesPerLine()) { - return getMemoryRenderingElement(line, address, offset, rendering); - } - } - return null; - } - - private MemoryRenderingElement getMemoryRenderingElement(MemorySegment line, BigInteger lineAddress, int offset, AbstractBaseTableRendering rendering) { - BigInteger cellAddress = lineAddress.add(BigInteger.valueOf(offset)); - MemoryByte[] bytes = line.getBytes(offset, rendering.getBytesPerColumn()); - // make a copy to ensure that the memory bytes are not overwritten - // by clients - MemoryByte[] copy = new MemoryByte[bytes.length]; - System.arraycopy(bytes, 0, copy, 0, bytes.length); - MemoryRenderingElement renderingElement = new MemoryRenderingElement( - rendering, cellAddress, copy); - return renderingElement; - } - -} diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/Messages.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/Messages.java deleted file mode 100644 index 3dc7f87a3..000000000 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/Messages.java +++ /dev/null @@ -1,34 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2009 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.debug.internal.ui.elements.adapters; - -import org.eclipse.osgi.util.NLS; - -/** - * @since 3.2 - * - */ -public class Messages extends NLS { - private static final String BUNDLE_NAME = "org.eclipse.debug.internal.ui.elements.adapters.Messages"; //$NON-NLS-1$ - - private Messages() { - } - - static { - // initialize resource bundle - NLS.initializeMessages(BUNDLE_NAME, Messages.class); - } - - public static String VariableColumnPresentation_0; - public static String VariableColumnPresentation_1; - public static String VariableColumnPresentation_2; - public static String VariableColumnPresentation_3; -} diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/Messages.properties b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/Messages.properties deleted file mode 100644 index 2e62499d3..000000000 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/Messages.properties +++ /dev/null @@ -1,14 +0,0 @@ -############################################################################### -# Copyright (c) 2006, 2009 IBM Corporation and others. -# All rights reserved. This program and the accompanying materials -# are made available under the terms of the Eclipse Public License v1.0 -# which accompanies this distribution, and is available at -# http://www.eclipse.org/legal/epl-v10.html -# -# Contributors: -# IBM Corporation - initial API and implementation -############################################################################### -VariableColumnPresentation_0=Declared Type -VariableColumnPresentation_1=Name -VariableColumnPresentation_2=Value -VariableColumnPresentation_3=Actual Type diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/RegisterGroupProxy.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/RegisterGroupProxy.java deleted file mode 100644 index ba69b6ff7..000000000 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/RegisterGroupProxy.java +++ /dev/null @@ -1,429 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.debug.internal.ui.elements.adapters; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -import org.eclipse.core.runtime.Status; -import org.eclipse.debug.core.DebugException; -import org.eclipse.debug.core.model.IRegisterGroup; -import org.eclipse.debug.core.model.IStackFrame; -import org.eclipse.debug.internal.core.commands.Request; -import org.eclipse.debug.internal.ui.viewers.model.ViewerAdapterService; -import org.eclipse.debug.internal.ui.viewers.model.provisional.IChildrenCountUpdate; -import org.eclipse.debug.internal.ui.viewers.model.provisional.IChildrenUpdate; -import org.eclipse.debug.internal.ui.viewers.model.provisional.IColumnPresentation; -import org.eclipse.debug.internal.ui.viewers.model.provisional.IColumnPresentationFactory; -import org.eclipse.debug.internal.ui.viewers.model.provisional.IElementCompareRequest; -import org.eclipse.debug.internal.ui.viewers.model.provisional.IElementContentProvider; -import org.eclipse.debug.internal.ui.viewers.model.provisional.IElementMementoProvider; -import org.eclipse.debug.internal.ui.viewers.model.provisional.IElementMementoRequest; -import org.eclipse.debug.internal.ui.viewers.model.provisional.IHasChildrenUpdate; -import org.eclipse.debug.internal.ui.viewers.model.provisional.IModelProxy; -import org.eclipse.debug.internal.ui.viewers.model.provisional.IModelProxyFactory; -import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext; -import org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerUpdate; -import org.eclipse.jface.viewers.TreePath; -import org.eclipse.ui.IMemento; - -/** - * Used as input to the registers view for a stack frame. Insulates register groups - * that do not change across stack frame selection to avoid register groups collapsing - * while stepping between frames. - * <p> - * The standard debug model {@link IStackFrame} uses an - * {@link org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerInputProvider} to - * create a register group proxy for the register view's input. - * </p> - * <p> - * This class delegates to the underlying stack frame for the following adapters. This way, - * if a standard model provides custom adapters they are still used to present custom content - * in the view and provide stable register groups while stepping. - * <ul> - * <li>{@link IModelProxyFactory}</li> - * <li>{@link IColumnPresentationFactory}</li> - * <li>{@link IElementContentProvider}</li> - * <li>{@link IElementMementoProvider}</li> - * </ul> - * </p> - * @since 3.4 - */ -public class RegisterGroupProxy implements IModelProxyFactory, IColumnPresentationFactory, IElementContentProvider, IElementMementoProvider { - - private IRegisterGroup[] fGroups; - private IStackFrame fFrame; - - private static final String HASH_CODE = "HASH_CODE"; //$NON-NLS-1$ - - /** - * Local implementation of a viewer update request. This class delegates to the underlying frame - * for viewer requests. The requests have to be wrapped such that the request's element provided - * for existing clients is the underlying frame, rather than the register group proxy (as existing - * models do not know or need to know about the proxy). - */ - private class Update extends Request implements IViewerUpdate { - private IViewerUpdate fViewerUpdate; - - Update(IViewerUpdate update) { - fViewerUpdate = update; - } - /* (non-Javadoc) - * @see org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerUpdate#getElement() - */ - public Object getElement() { - return fFrame; - } - - /* (non-Javadoc) - * @see org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerUpdate#getElementPath() - */ - public TreePath getElementPath() { - return TreePath.EMPTY; - } - - /* (non-Javadoc) - * @see org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerUpdate#getPresentationContext() - */ - public IPresentationContext getPresentationContext() { - return fViewerUpdate.getPresentationContext(); - } - - /* (non-Javadoc) - * @see org.eclipse.debug.internal.core.commands.Request#done() - */ - public void done() { - fViewerUpdate.setStatus(getStatus()); - fViewerUpdate.done(); - } - - /* (non-Javadoc) - * @see org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerUpdate#getViewerInput() - */ - public Object getViewerInput() { - return fFrame; - } - - } - - private class CountUpdate extends Update implements IChildrenCountUpdate { - - private IChildrenCountUpdate fUpdate; - - CountUpdate(IChildrenCountUpdate delegate) { - super(delegate); - fUpdate = delegate; - } - - /* (non-Javadoc) - * @see org.eclipse.debug.internal.ui.viewers.model.provisional.IChildrenCountUpdate#setChildCount(int) - */ - public void setChildCount(int numChildren) { - fUpdate.setChildCount(numChildren); - } - - } - - private class HasUpdate extends Update implements IHasChildrenUpdate { - - private IHasChildrenUpdate fUpdate; - - HasUpdate(IHasChildrenUpdate delegate) { - super(delegate); - fUpdate = delegate; - } - - /* (non-Javadoc) - * @see org.eclipse.debug.internal.ui.viewers.model.provisional.IHasChildrenUpdate#setHasChilren(boolean) - */ - public void setHasChilren(boolean hasChildren) { - fUpdate.setHasChilren(hasChildren); - } - - } - - private class ChildrenUpdate extends Update implements IChildrenUpdate { - - private IChildrenUpdate fUpdate; - - ChildrenUpdate(IChildrenUpdate delegate) { - super(delegate); - fUpdate = delegate; - } - /* (non-Javadoc) - * @see org.eclipse.debug.internal.ui.viewers.model.provisional.IChildrenUpdate#getLength() - */ - public int getLength() { - return fUpdate.getLength(); - } - - /* (non-Javadoc) - * @see org.eclipse.debug.internal.ui.viewers.model.provisional.IChildrenUpdate#getOffset() - */ - public int getOffset() { - return fUpdate.getOffset(); - } - - /* (non-Javadoc) - * @see org.eclipse.debug.internal.ui.viewers.model.provisional.IChildrenUpdate#setChild(java.lang.Object, int) - */ - public void setChild(Object child, int offset) { - fUpdate.setChild(child, offset); - } - - } - - /** - * The memento request has to override {@link #getElement()} to provide the element - * that a memento is requested for (which could be any element in the view, not just - * the root stack frame). - */ - private class MementoRequest extends Update implements IElementMementoRequest { - - private IElementMementoRequest fUpdate; - MementoRequest(IElementMementoRequest request) { - super(request); - fUpdate = request; - } - /* (non-Javadoc) - * @see org.eclipse.debug.internal.ui.viewers.model.provisional.IElementMementoRequest#getMemento() - */ - public IMemento getMemento() { - return fUpdate.getMemento(); - } - public Object getElement() { - return fUpdate.getElement(); - } - public TreePath getElementPath() { - return fUpdate.getElementPath(); - } - - } - - private class ElementCompare extends MementoRequest implements IElementCompareRequest { - - private IElementCompareRequest fRequest; - ElementCompare(IElementCompareRequest request) { - super(request); - fRequest = request; - } - /* (non-Javadoc) - * @see org.eclipse.debug.internal.ui.viewers.model.provisional.IElementCompareRequest#setEqual(boolean) - */ - public void setEqual(boolean equal) { - fRequest.setEqual(equal); - } - - } - - /** - * Creates a new register group proxy for the given stack frame. - * - * @param frame stack frame - * @throws DebugException exception if unable to retrieve register groups - */ - public RegisterGroupProxy(IStackFrame frame) throws DebugException { - fFrame = frame; - init(frame); - } - - /* (non-Javadoc) - * - * A register group proxy is equal to other stack frames that have the same - * register groups. - * - * @see java.lang.Object#equals(java.lang.Object) - */ - public boolean equals(Object obj) { - if (obj instanceof RegisterGroupProxy) { - return Arrays.equals(fGroups, ((RegisterGroupProxy)obj).fGroups); - } - return false; - } - - /* (non-Javadoc) - * @see java.lang.Object#hashCode() - */ - public int hashCode() { - int code = getClass().hashCode(); - for (int i = 0; i < fGroups.length; i++) { - code+=fGroups[i].hashCode(); - } - return code; - } - - /** - * Initializes the register groups for this stack frame. - * - * @param frame stack frame - */ - private void init(IStackFrame frame) throws DebugException { - fGroups = frame.getRegisterGroups(); - } - - /** - * Returns cached register groups for this stack frame. - * - * @return register groups - */ - protected IRegisterGroup[] getRegisterGroups() { - return fGroups; - } - - /* (non-Javadoc) - * @see org.eclipse.debug.internal.ui.viewers.model.provisional.IModelProxyFactory#createModelProxy(java.lang.Object, org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext) - */ - public IModelProxy createModelProxy(Object element, IPresentationContext context) { - IModelProxyFactory factory = ViewerAdapterService.getModelProxyFactory(fFrame); - if (factory != null) { - return factory.createModelProxy(fFrame, context); - } - return null; - } - - /* (non-Javadoc) - * @see org.eclipse.debug.internal.ui.viewers.model.provisional.IColumnPresentationFactory#createColumnPresentation(org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext, java.lang.Object) - */ - public IColumnPresentation createColumnPresentation(IPresentationContext context, Object element) { - IColumnPresentationFactory factory = ViewerAdapterService.getColumnPresentationFactory(fFrame); - if (factory != null) { - return factory.createColumnPresentation(context, fFrame); - } - return null; - } - - /* (non-Javadoc) - * @see org.eclipse.debug.internal.ui.viewers.model.provisional.IColumnPresentationFactory#getColumnPresentationId(org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext, java.lang.Object) - */ - public String getColumnPresentationId(IPresentationContext context, Object element) { - IColumnPresentationFactory factory = ViewerAdapterService.getColumnPresentationFactory(fFrame); - if (factory != null) { - return factory.getColumnPresentationId(context, fFrame); - } - return null; - } - - /* (non-Javadoc) - * @see org.eclipse.debug.internal.ui.viewers.model.provisional.IElementContentProvider#update(org.eclipse.debug.internal.ui.viewers.model.provisional.IChildrenCountUpdate[]) - */ - public void update(IChildrenCountUpdate[] updates) { - IElementContentProvider provider = ViewerAdapterService.getContentProvider(fFrame); - if (provider != null) { - IChildrenCountUpdate[] others = new IChildrenCountUpdate[updates.length]; - for (int i = 0; i < updates.length; i++) { - others[i] = new CountUpdate(updates[i]); - } - provider.update(others); - } else { - cancelUpdates(updates); - } - } - - /* (non-Javadoc) - * @see org.eclipse.debug.internal.ui.viewers.model.provisional.IElementContentProvider#update(org.eclipse.debug.internal.ui.viewers.model.provisional.IChildrenUpdate[]) - */ - public void update(IChildrenUpdate[] updates) { - IElementContentProvider provider = ViewerAdapterService.getContentProvider(fFrame); - if (provider != null) { - IChildrenUpdate[] others = new IChildrenUpdate[updates.length]; - for (int i = 0; i < updates.length; i++) { - others[i] = new ChildrenUpdate(updates[i]); - } - provider.update(others); - } else { - cancelUpdates(updates); - } - - } - - /* (non-Javadoc) - * @see org.eclipse.debug.internal.ui.viewers.model.provisional.IElementContentProvider#update(org.eclipse.debug.internal.ui.viewers.model.provisional.IHasChildrenUpdate[]) - */ - public void update(IHasChildrenUpdate[] updates) { - IElementContentProvider provider = ViewerAdapterService.getContentProvider(fFrame); - if (provider != null) { - IHasChildrenUpdate[] others = new IHasChildrenUpdate[updates.length]; - for (int i = 0; i < updates.length; i++) { - others[i] = new HasUpdate(updates[i]); - } - provider.update(others); - } else { - cancelUpdates(updates); - } - } - - /** - * Cancels a collection of update requests. - * - * @param updates updates to cancel - */ - private void cancelUpdates(IViewerUpdate[] updates) { - for (int i = 0; i < updates.length; i++) { - updates[i].setStatus(Status.CANCEL_STATUS); - updates[i].done(); - } - } - - /* (non-Javadoc) - * @see org.eclipse.debug.internal.ui.viewers.model.provisional.IElementMementoProvider#compareElements(org.eclipse.debug.internal.ui.viewers.model.provisional.IElementCompareRequest[]) - */ - public void compareElements(IElementCompareRequest[] requests) { - IElementMementoProvider provider = ViewerAdapterService.getMementoProvider(fFrame); - if (provider != null) { - List others = new ArrayList(requests.length); - for (int i = 0; i < requests.length; i++) { - IElementCompareRequest request = requests[i]; - if (request.getElement().equals(this)) { - Integer integer = request.getMemento().getInteger(HASH_CODE); - if (integer != null) { - request.setEqual(integer.intValue() == hashCode()); - } else { - request.setEqual(false); - } - request.done(); - } else { - others.add(new ElementCompare(request)); - } - } - if (!others.isEmpty()) { - provider.compareElements((IElementCompareRequest[]) others.toArray(new IElementCompareRequest[others.size()])); - } - } else { - cancelUpdates(requests); - } - } - - /* (non-Javadoc) - * @see org.eclipse.debug.internal.ui.viewers.model.provisional.IElementMementoProvider#encodeElements(org.eclipse.debug.internal.ui.viewers.model.provisional.IElementMementoRequest[]) - */ - public void encodeElements(IElementMementoRequest[] requests) { - IElementMementoProvider provider = ViewerAdapterService.getMementoProvider(fFrame); - if (provider != null) { - List others = new ArrayList(requests.length); - for (int i = 0; i < requests.length; i++) { - IElementMementoRequest request = requests[i]; - if (request.getElement().equals(this)) { - request.getMemento().putInteger(HASH_CODE, this.hashCode()); - request.done(); - } else { - others.add(new MementoRequest(request)); - } - } - if (!others.isEmpty()) { - provider.encodeElements((IElementMementoRequest[]) others.toArray(new IElementMementoRequest[others.size()])); - } - } else { - cancelUpdates(requests); - } - } - -} diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/StackFrameSourceDisplayAdapter.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/StackFrameSourceDisplayAdapter.java deleted file mode 100644 index 5b4045744..000000000 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/StackFrameSourceDisplayAdapter.java +++ /dev/null @@ -1,237 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005, 2009 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.debug.internal.ui.elements.adapters; - -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Status; -import org.eclipse.core.runtime.jobs.Job; -import org.eclipse.debug.core.DebugEvent; -import org.eclipse.debug.core.DebugPlugin; -import org.eclipse.debug.core.IDebugEventSetListener; -import org.eclipse.debug.core.model.IDebugElement; -import org.eclipse.debug.core.model.IDebugTarget; -import org.eclipse.debug.core.model.ISourceLocator; -import org.eclipse.debug.core.model.IStackFrame; -import org.eclipse.debug.core.model.IThread; -import org.eclipse.debug.internal.ui.InstructionPointerManager; -import org.eclipse.debug.internal.ui.sourcelookup.SourceLookupResult; -import org.eclipse.debug.internal.ui.views.launch.DecorationManager; -import org.eclipse.debug.ui.DebugUITools; -import org.eclipse.debug.ui.sourcelookup.ISourceDisplay; -import org.eclipse.debug.ui.sourcelookup.ISourceLookupResult; -import org.eclipse.ui.IWorkbenchPage; -import org.eclipse.ui.progress.UIJob; - -/** - * @since 3.2 - */ -public class StackFrameSourceDisplayAdapter implements ISourceDisplay { - - private IStackFrame fPrevFrame; - private SourceLookupResult fPrevResult; - - /** - * Constructs singleton source display adapter for stack frames. - */ - public StackFrameSourceDisplayAdapter() { - DebugPlugin.getDefault().addDebugEventListener(new IDebugEventSetListener() { - public void handleDebugEvents(DebugEvent[] events) { - for (int i = 0; i < events.length; i++) { - final DebugEvent event = events[i]; - switch (event.getKind()) { - case DebugEvent.TERMINATE: - clearCachedModel(event.getSource()); - // fall through - case DebugEvent.RESUME: - if (!event.isEvaluation()) { - Job uijob = new UIJob("clear source selection"){ //$NON-NLS-1$ - public IStatus runInUIThread( - IProgressMonitor monitor) { - clearSourceSelection(event.getSource()); - return Status.OK_STATUS; - } - - }; - uijob.setSystem(true); - uijob.schedule(); - } - break; - case DebugEvent.CHANGE: - if (event.getSource() instanceof IStackFrame) { - if (event.getDetail() == DebugEvent.CONTENT) { - // force source lookup if a stack frame fires a content change event - clearCachedModel(event.getSource()); - } - } - break; - } - } - } - }); - } - - /** - * A job to perform source lookup on the currently selected stack frame. - */ - class SourceLookupJob extends Job { - - private IStackFrame fTarget; - private ISourceLocator fLocator; - private IWorkbenchPage fPage; - - /** - * Constructs a new source lookup job. - */ - public SourceLookupJob(IStackFrame frame, ISourceLocator locator, IWorkbenchPage page) { - super("Debug Source Lookup"); //$NON-NLS-1$ - setPriority(Job.INTERACTIVE); - setSystem(true); - fTarget = frame; - fLocator = locator; - fPage = page; - } - - /* (non-Javadoc) - * @see org.eclipse.core.runtime.jobs.Job#run(org.eclipse.core.runtime.IProgressMonitor) - */ - protected IStatus run(IProgressMonitor monitor) { - if (!monitor.isCanceled()) { - if (!fTarget.isTerminated()) { - ISourceLookupResult result = DebugUITools.lookupSource(fTarget, fLocator); - synchronized (StackFrameSourceDisplayAdapter.this) { - fPrevResult = (SourceLookupResult)result; - fPrevFrame = fTarget; - } - if (!monitor.isCanceled() && !fTarget.isTerminated()) { - new SourceDisplayJob(result, fPage).schedule(); - } - } - } - return Status.OK_STATUS; - } - - /* (non-Javadoc) - * @see org.eclipse.core.runtime.jobs.Job#belongsTo(java.lang.Object) - */ - public boolean belongsTo(Object family) { - // source lookup jobs are a family per workbench page - if (family instanceof SourceLookupJob) { - SourceLookupJob slj = (SourceLookupJob) family; - return slj.fPage.equals(fPage); - } - return false; - } - - } - - class SourceDisplayJob extends UIJob { - - private ISourceLookupResult fResult; - private IWorkbenchPage fPage; - - public SourceDisplayJob(ISourceLookupResult result, IWorkbenchPage page) { - super("Debug Source Display"); //$NON-NLS-1$ - setSystem(true); - setPriority(Job.INTERACTIVE); - fResult = result; - fPage = page; - } - - - /* (non-Javadoc) - * @see org.eclipse.ui.progress.UIJob#runInUIThread(org.eclipse.core.runtime.IProgressMonitor) - */ - public IStatus runInUIThread(IProgressMonitor monitor) { - if (!monitor.isCanceled() && fResult != null) { - DebugUITools.displaySource(fResult, fPage); - // termination may have occurred while displaying source - if (monitor.isCanceled()) { - Object artifact = fResult.getArtifact(); - if (artifact instanceof IStackFrame) { - clearSourceSelection(((IStackFrame)artifact).getThread()); - } - } - } - - return Status.OK_STATUS; - } - - /* (non-Javadoc) - * @see org.eclipse.core.runtime.jobs.Job#belongsTo(java.lang.Object) - */ - public boolean belongsTo(Object family) { - // source display jobs are a family per workbench page - if (family instanceof SourceDisplayJob) { - SourceDisplayJob sdj = (SourceDisplayJob) family; - return sdj.fPage.equals(fPage); - } - return false; - } - - } - - /* (non-Javadoc) - * @see org.eclipse.debug.ui.contexts.ISourceDisplayAdapter#displaySource(java.lang.Object, org.eclipse.ui.IWorkbenchPage, boolean) - */ - public synchronized void displaySource(Object context, IWorkbenchPage page, boolean force) { - IStackFrame frame = (IStackFrame)context; - if (!force && frame.equals(fPrevFrame)) { - fPrevResult.updateArtifact(context); - SourceDisplayJob sdj = new SourceDisplayJob(fPrevResult, page); - // cancel any existing source display jobs for this page - Job.getJobManager().cancel(sdj); - sdj.schedule(); - } else { - SourceLookupJob slj = new SourceLookupJob(frame, frame.getLaunch().getSourceLocator(), page); - // cancel any existing source lookup jobs for this page - Job.getJobManager().cancel(slj); - slj.schedule(); - } - } - - /** - * Clears any source decorations associated with the given thread or - * debug target. - * - * @param source thread or debug target - */ - private void clearSourceSelection(Object source) { - if (source instanceof IThread) { - IThread thread = (IThread)source; - DecorationManager.removeDecorations(thread); - InstructionPointerManager.getDefault().removeAnnotations(thread); - } else if (source instanceof IDebugTarget) { - IDebugTarget target = (IDebugTarget)source; - DecorationManager.removeDecorations(target); - InstructionPointerManager.getDefault().removeAnnotations(target); - } - } - - /** - * Clear any cached results associated with the given object. - * - * @param source - */ - private synchronized void clearCachedModel(Object source) { - if (fPrevFrame != null) { - IDebugTarget target = null; - if (source instanceof IDebugElement) { - target = ((IDebugElement)source).getDebugTarget(); - } - if (fPrevFrame.getDebugTarget().equals(target)) { - fPrevFrame = null; - fPrevResult = null; - } - } - } - -} diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/StackFrameViewerInputProvider.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/StackFrameViewerInputProvider.java deleted file mode 100644 index d48d9d822..000000000 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/StackFrameViewerInputProvider.java +++ /dev/null @@ -1,47 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - * Wind River Systems - support for alternative expression view content providers - *******************************************************************************/ -package org.eclipse.debug.internal.ui.elements.adapters; - -import org.eclipse.core.runtime.CoreException; -import org.eclipse.debug.core.DebugPlugin; -import org.eclipse.debug.core.model.IStackFrame; -import org.eclipse.debug.internal.ui.model.elements.ViewerInputProvider; -import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext; -import org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerUpdate; -import org.eclipse.debug.ui.IDebugUIConstants; - -/** - * @since 3.4 - */ -public class StackFrameViewerInputProvider extends ViewerInputProvider { - - /* (non-Javadoc) - * @see org.eclipse.debug.internal.ui.model.elements.ViewerInputProvider#getViewerInput(java.lang.Object, org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext, org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerUpdate) - */ - protected Object getViewerInput(Object source, IPresentationContext context, IViewerUpdate update) throws CoreException { - if ( IDebugUIConstants.ID_REGISTER_VIEW.equals(context.getId()) ) { - return new RegisterGroupProxy((IStackFrame) source); - } else { - return DebugPlugin.getDefault().getExpressionManager(); - } - - } - - /* (non-Javadoc) - * @see org.eclipse.debug.internal.ui.model.elements.ViewerInputProvider#supportsContextId(java.lang.String) - */ - protected boolean supportsContextId(String id) { - return IDebugUIConstants.ID_REGISTER_VIEW.equals(id) || - IDebugUIConstants.ID_EXPRESSION_VIEW.equals(id); - } - -} diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/VariableColumnFactoryAdapter.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/VariableColumnFactoryAdapter.java deleted file mode 100644 index c756501a0..000000000 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/VariableColumnFactoryAdapter.java +++ /dev/null @@ -1,52 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2007 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.debug.internal.ui.elements.adapters; - -import org.eclipse.debug.core.model.IStackFrame; -import org.eclipse.debug.internal.ui.viewers.model.provisional.IColumnPresentation; -import org.eclipse.debug.internal.ui.viewers.model.provisional.IColumnPresentationFactory; -import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext; -import org.eclipse.debug.ui.IDebugUIConstants; - -/** - * Factory for default variable column presentation. - * - * @since 3.2 - */ -public class VariableColumnFactoryAdapter implements IColumnPresentationFactory { - - /* (non-Javadoc) - * @see org.eclipse.debug.internal.ui.viewers.provisional.IColumnPresenetationFactoryAdapter#createColumnPresentation(org.eclipse.debug.internal.ui.viewers.provisional.IPresentationContext, java.lang.Object) - */ - public IColumnPresentation createColumnPresentation(IPresentationContext context, Object element) { - String id = context.getId(); - if (IDebugUIConstants.ID_VARIABLE_VIEW.equals(id) || IDebugUIConstants.ID_REGISTER_VIEW.equals(id)) { - if (element instanceof IStackFrame) { - return new VariableColumnPresentation(); - } - } - return null; - } - - /* (non-Javadoc) - * @see org.eclipse.debug.internal.ui.viewers.provisional.IColumnPresenetationFactoryAdapter#getColumnPresentationId(org.eclipse.debug.internal.ui.viewers.provisional.IPresentationContext, java.lang.Object) - */ - public String getColumnPresentationId(IPresentationContext context, Object element) { - String id = context.getId(); - if (IDebugUIConstants.ID_VARIABLE_VIEW.equals(id) || IDebugUIConstants.ID_REGISTER_VIEW.equals(id)) { - if (element instanceof IStackFrame) { - return VariableColumnPresentation.DEFAULT_VARIABLE_COLUMN_PRESENTATION; - } - } - return null; - } - -} diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/VariableColumnPresentation.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/VariableColumnPresentation.java deleted file mode 100644 index 961e340bf..000000000 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/elements/adapters/VariableColumnPresentation.java +++ /dev/null @@ -1,86 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.debug.internal.ui.elements.adapters; - -import org.eclipse.debug.internal.ui.viewers.provisional.AbstractColumnPresentation; -import org.eclipse.debug.ui.IDebugUIConstants; - -/** - * Columns for Java variables. - * - * @since 3.2 - */ -public class VariableColumnPresentation extends AbstractColumnPresentation { - - /** - * Constant identifier for the default variable column presentation. - */ - public final static String DEFAULT_VARIABLE_COLUMN_PRESENTATION = IDebugUIConstants.PLUGIN_ID + ".VARIALBE_COLUMN_PRESENTATION"; //$NON-NLS-1$ - - /** - * Default column identifiers - */ - public final static String COLUMN_VARIABLE_NAME = DEFAULT_VARIABLE_COLUMN_PRESENTATION + ".COL_VAR_NAME"; //$NON-NLS-1$ - public final static String COLUMN_VARIABLE_TYPE = DEFAULT_VARIABLE_COLUMN_PRESENTATION + ".COL_VAR_TYPE"; //$NON-NLS-1$ - public final static String COLUMN_VARIABLE_VALUE = DEFAULT_VARIABLE_COLUMN_PRESENTATION + ".COL_VAR_VALUE"; //$NON-NLS-1$ - public final static String COLUMN_VALUE_TYPE = DEFAULT_VARIABLE_COLUMN_PRESENTATION + ".COL_VALUE_TYPE"; //$NON-NLS-1$ - - private static final String[] ALL_COLUMNS = new String[]{COLUMN_VARIABLE_NAME, COLUMN_VARIABLE_TYPE, COLUMN_VARIABLE_VALUE, COLUMN_VALUE_TYPE}; - private static final String[] INITIAL_COLUMNS = new String[]{COLUMN_VARIABLE_NAME, COLUMN_VARIABLE_VALUE}; - - /* (non-Javadoc) - * @see org.eclipse.debug.internal.ui.viewers.provisional.IColumnPresentation#getColumns() - */ - public String[] getAvailableColumns() { - return ALL_COLUMNS; - } - - /* (non-Javadoc) - * @see org.eclipse.debug.internal.ui.viewers.provisional.IColumnPresentation#getHeader(java.lang.String) - */ - public String getHeader(String id) { - if (COLUMN_VARIABLE_TYPE.equals(id)) { - return Messages.VariableColumnPresentation_0; - } - if (COLUMN_VARIABLE_NAME.equals(id)) { - return Messages.VariableColumnPresentation_1; - } - if (COLUMN_VARIABLE_VALUE.equals(id)) { - return Messages.VariableColumnPresentation_2; - } - if (COLUMN_VALUE_TYPE.equals(id)) { - return Messages.VariableColumnPresentation_3; - } - return null; - } - - /* (non-Javadoc) - * @see org.eclipse.debug.internal.ui.viewers.provisional.IColumnPresentation#getId() - */ - public String getId() { - return DEFAULT_VARIABLE_COLUMN_PRESENTATION; - } - - /* (non-Javadoc) - * @see org.eclipse.debug.internal.ui.viewers.provisional.IColumnPresentation#getInitialColumns() - */ - public String[] getInitialColumns() { - return INITIAL_COLUMNS; - } - - /* (non-Javadoc) - * @see org.eclipse.debug.internal.ui.viewers.provisional.IColumnPresentation#isOptional() - */ - public boolean isOptional() { - return true; - } - -} |