mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
[244435] - [expressions][registers] A register modified in expressions new may not show new value.
This commit is contained in:
parent
eba5a5fe78
commit
938067e4ce
6 changed files with 230 additions and 246 deletions
|
@ -45,15 +45,19 @@ public interface IExpressionVMNode extends IVMNode {
|
||||||
public int getDeltaFlagsForExpression(IExpression expression, Object event);
|
public int getDeltaFlagsForExpression(IExpression expression, Object event);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds delta flags to the given parent delta based on the expression object
|
* Adds delta flags to the given parent delta based on the expression
|
||||||
* given.
|
* object given. The nodes add flags to the expression view's root
|
||||||
|
* delta using this method, regardless of whether the node is directly
|
||||||
|
* below the expression manager or not.
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
public void buildDeltaForExpression(IExpression expression, int elementIdx, Object event, VMDelta parentDelta,
|
public void buildDeltaForExpression(IExpression expression, int elementIdx, Object event, VMDelta parentDelta,
|
||||||
TreePath path, RequestMonitor rm);
|
TreePath path, RequestMonitor rm);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds delta to the given parent delta based on the given element which was created base on
|
* Adds delta to the given parent delta based on the given element that
|
||||||
* an expression parsed by this node.
|
* was created base on an expression parsed by this node. The VM nodes can
|
||||||
|
* add a new delta node to the parentDela by implementing this method.
|
||||||
*/
|
*/
|
||||||
public void buildDeltaForExpressionElement(Object element, int elementIdx, Object event, VMDelta parentDelta, final RequestMonitor rm);
|
public void buildDeltaForExpressionElement(Object element, int elementIdx, Object event, VMDelta parentDelta, final RequestMonitor rm);
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,15 +29,15 @@ import org.eclipse.dd.dsf.debug.internal.provisional.ui.viewmodel.numberformat.I
|
||||||
import org.eclipse.dd.dsf.debug.internal.provisional.ui.viewmodel.register.RegisterBitFieldCellModifier.BitFieldEditorStyle;
|
import org.eclipse.dd.dsf.debug.internal.provisional.ui.viewmodel.register.RegisterBitFieldCellModifier.BitFieldEditorStyle;
|
||||||
import org.eclipse.dd.dsf.debug.internal.ui.DsfDebugUIPlugin;
|
import org.eclipse.dd.dsf.debug.internal.ui.DsfDebugUIPlugin;
|
||||||
import org.eclipse.dd.dsf.debug.service.IFormattedValues;
|
import org.eclipse.dd.dsf.debug.service.IFormattedValues;
|
||||||
import org.eclipse.dd.dsf.debug.service.IMemory;
|
|
||||||
import org.eclipse.dd.dsf.debug.service.IRegisters;
|
import org.eclipse.dd.dsf.debug.service.IRegisters;
|
||||||
import org.eclipse.dd.dsf.debug.service.IRunControl;
|
|
||||||
import org.eclipse.dd.dsf.debug.service.IFormattedValues.FormattedValueDMContext;
|
import org.eclipse.dd.dsf.debug.service.IFormattedValues.FormattedValueDMContext;
|
||||||
import org.eclipse.dd.dsf.debug.service.IFormattedValues.FormattedValueDMData;
|
import org.eclipse.dd.dsf.debug.service.IFormattedValues.FormattedValueDMData;
|
||||||
|
import org.eclipse.dd.dsf.debug.service.IMemory.IMemoryChangedEvent;
|
||||||
import org.eclipse.dd.dsf.debug.service.IRegisters.IBitFieldChangedDMEvent;
|
import org.eclipse.dd.dsf.debug.service.IRegisters.IBitFieldChangedDMEvent;
|
||||||
import org.eclipse.dd.dsf.debug.service.IRegisters.IBitFieldDMContext;
|
import org.eclipse.dd.dsf.debug.service.IRegisters.IBitFieldDMContext;
|
||||||
import org.eclipse.dd.dsf.debug.service.IRegisters.IBitFieldDMData;
|
import org.eclipse.dd.dsf.debug.service.IRegisters.IBitFieldDMData;
|
||||||
import org.eclipse.dd.dsf.debug.service.IRegisters.IMnemonic;
|
import org.eclipse.dd.dsf.debug.service.IRegisters.IMnemonic;
|
||||||
|
import org.eclipse.dd.dsf.debug.service.IRegisters.IRegisterChangedDMEvent;
|
||||||
import org.eclipse.dd.dsf.debug.service.IRegisters.IRegisterDMContext;
|
import org.eclipse.dd.dsf.debug.service.IRegisters.IRegisterDMContext;
|
||||||
import org.eclipse.dd.dsf.debug.service.IRegisters.IRegisterDMData;
|
import org.eclipse.dd.dsf.debug.service.IRegisters.IRegisterDMData;
|
||||||
import org.eclipse.dd.dsf.debug.service.IRegisters.IRegisterGroupDMData;
|
import org.eclipse.dd.dsf.debug.service.IRegisters.IRegisterGroupDMData;
|
||||||
|
@ -154,7 +154,7 @@ public class RegisterBitFieldVMNode extends AbstractExpressionVMNode
|
||||||
private final IFormattedValuePreferenceStore fFormattedPrefStore;
|
private final IFormattedValuePreferenceStore fFormattedPrefStore;
|
||||||
|
|
||||||
public RegisterBitFieldVMNode(IFormattedValuePreferenceStore prefStore, AbstractDMVMProvider provider, DsfSession session, SyncRegisterDataAccess access) {
|
public RegisterBitFieldVMNode(IFormattedValuePreferenceStore prefStore, AbstractDMVMProvider provider, DsfSession session, SyncRegisterDataAccess access) {
|
||||||
super(provider, session, IRegisters.IBitFieldDMContext.class);
|
super(provider, session, IBitFieldDMContext.class);
|
||||||
fSyncRegisterDataAccess = access;
|
fSyncRegisterDataAccess = access;
|
||||||
fFormattedPrefStore = prefStore;
|
fFormattedPrefStore = prefStore;
|
||||||
}
|
}
|
||||||
|
@ -324,7 +324,7 @@ public class RegisterBitFieldVMNode extends AbstractExpressionVMNode
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
final IBitFieldDMContext dmc = findDmcInPath(update.getViewerInput(), update.getElementPath(), IRegisters.IBitFieldDMContext.class);
|
final IBitFieldDMContext dmc = findDmcInPath(update.getViewerInput(), update.getElementPath(), IBitFieldDMContext.class);
|
||||||
|
|
||||||
getDMVMProvider().getModelData(
|
getDMVMProvider().getModelData(
|
||||||
this,
|
this,
|
||||||
|
@ -507,24 +507,19 @@ public class RegisterBitFieldVMNode extends AbstractExpressionVMNode
|
||||||
* @see org.eclipse.dd.dsf.ui.viewmodel.IVMNode#getDeltaFlags(java.lang.Object)
|
* @see org.eclipse.dd.dsf.ui.viewmodel.IVMNode#getDeltaFlags(java.lang.Object)
|
||||||
*/
|
*/
|
||||||
public int getDeltaFlags(Object e) {
|
public int getDeltaFlags(Object e) {
|
||||||
if (e instanceof IRunControl.ISuspendedDMEvent) {
|
if ( e instanceof ISuspendedDMEvent ||
|
||||||
|
e instanceof IMemoryChangedEvent ||
|
||||||
|
e instanceof IRegisterChangedDMEvent ||
|
||||||
|
(e instanceof PropertyChangeEvent &&
|
||||||
|
((PropertyChangeEvent)e).getProperty() == IDebugVMConstants.CURRENT_FORMAT_STORAGE) )
|
||||||
|
{
|
||||||
return IModelDelta.CONTENT;
|
return IModelDelta.CONTENT;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (e instanceof IRegisters.IBitFieldChangedDMEvent) {
|
if (e instanceof IBitFieldChangedDMEvent) {
|
||||||
return IModelDelta.STATE;
|
return IModelDelta.STATE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (e instanceof IMemory.IMemoryChangedEvent) {
|
|
||||||
return IModelDelta.CONTENT;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (e instanceof PropertyChangeEvent &&
|
|
||||||
((PropertyChangeEvent)e).getProperty() == IDebugVMConstants.CURRENT_FORMAT_STORAGE)
|
|
||||||
{
|
|
||||||
return IModelDelta.CONTENT;
|
|
||||||
}
|
|
||||||
|
|
||||||
return IModelDelta.NO_CHANGE;
|
return IModelDelta.NO_CHANGE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -533,28 +528,22 @@ public class RegisterBitFieldVMNode extends AbstractExpressionVMNode
|
||||||
* @see org.eclipse.dd.dsf.ui.viewmodel.IVMNode#buildDelta(java.lang.Object, org.eclipse.dd.dsf.ui.viewmodel.VMDelta, int, org.eclipse.dd.dsf.concurrent.RequestMonitor)
|
* @see org.eclipse.dd.dsf.ui.viewmodel.IVMNode#buildDelta(java.lang.Object, org.eclipse.dd.dsf.ui.viewmodel.VMDelta, int, org.eclipse.dd.dsf.concurrent.RequestMonitor)
|
||||||
*/
|
*/
|
||||||
public void buildDelta(Object e, VMDelta parentDelta, int nodeOffset, RequestMonitor rm) {
|
public void buildDelta(Object e, VMDelta parentDelta, int nodeOffset, RequestMonitor rm) {
|
||||||
if (e instanceof IRunControl.ISuspendedDMEvent) {
|
// The following events can affect any bit field's values,
|
||||||
// Create a delta that the whole register group has changed.
|
// refresh the contents of the parent element (i.e. all the registers).
|
||||||
parentDelta.setFlags(parentDelta.getFlags() | IModelDelta.CONTENT);
|
if ( e instanceof ISuspendedDMEvent ||
|
||||||
}
|
e instanceof IMemoryChangedEvent ||
|
||||||
|
e instanceof IRegisterChangedDMEvent ||
|
||||||
if (e instanceof IRegisters.IBitFieldChangedDMEvent) {
|
(e instanceof PropertyChangeEvent &&
|
||||||
/*
|
((PropertyChangeEvent)e).getProperty() == IDebugVMConstants.CURRENT_FORMAT_STORAGE) )
|
||||||
* Create a delta indicating the bit field has changed.
|
|
||||||
*/
|
|
||||||
parentDelta.addNode( createVMContext(((IRegisters.IBitFieldChangedDMEvent)e).getDMContext()), IModelDelta.STATE );
|
|
||||||
}
|
|
||||||
|
|
||||||
if (e instanceof IMemory.IMemoryChangedEvent) {
|
|
||||||
parentDelta.setFlags(parentDelta.getFlags() | IModelDelta.CONTENT);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (e instanceof PropertyChangeEvent &&
|
|
||||||
((PropertyChangeEvent)e).getProperty() == IDebugVMConstants.CURRENT_FORMAT_STORAGE)
|
|
||||||
{
|
{
|
||||||
parentDelta.setFlags(parentDelta.getFlags() | IModelDelta.CONTENT);
|
parentDelta.setFlags(parentDelta.getFlags() | IModelDelta.CONTENT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (e instanceof IBitFieldChangedDMEvent) {
|
||||||
|
// Create a delta indicating that the value of bit field has changed.
|
||||||
|
parentDelta.addNode( createVMContext(((IBitFieldChangedDMEvent)e).getDMContext()), IModelDelta.STATE );
|
||||||
|
}
|
||||||
|
|
||||||
rm.done();
|
rm.done();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -761,7 +750,7 @@ public class RegisterBitFieldVMNode extends AbstractExpressionVMNode
|
||||||
* @see org.eclipse.dd.dsf.debug.internal.provisional.ui.viewmodel.expression.IExpressionVMNode#getDeltaFlagsForExpression(org.eclipse.debug.core.model.IExpression, java.lang.Object)
|
* @see org.eclipse.dd.dsf.debug.internal.provisional.ui.viewmodel.expression.IExpressionVMNode#getDeltaFlagsForExpression(org.eclipse.debug.core.model.IExpression, java.lang.Object)
|
||||||
*/
|
*/
|
||||||
public int getDeltaFlagsForExpression(IExpression expression, Object event) {
|
public int getDeltaFlagsForExpression(IExpression expression, Object event) {
|
||||||
if (event instanceof IRunControl.ISuspendedDMEvent) {
|
if (event instanceof ISuspendedDMEvent) {
|
||||||
return IModelDelta.CONTENT;
|
return IModelDelta.CONTENT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -770,7 +759,7 @@ public class RegisterBitFieldVMNode extends AbstractExpressionVMNode
|
||||||
return IModelDelta.CONTENT;
|
return IModelDelta.CONTENT;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (event instanceof IMemory.IMemoryChangedEvent) {
|
if (event instanceof IMemoryChangedEvent) {
|
||||||
return IModelDelta.CONTENT;
|
return IModelDelta.CONTENT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -783,16 +772,11 @@ public class RegisterBitFieldVMNode extends AbstractExpressionVMNode
|
||||||
*/
|
*/
|
||||||
public void buildDeltaForExpression(final IExpression expression, final int elementIdx, final Object event, final VMDelta parentDelta, final TreePath path, final RequestMonitor rm)
|
public void buildDeltaForExpression(final IExpression expression, final int elementIdx, final Object event, final VMDelta parentDelta, final TreePath path, final RequestMonitor rm)
|
||||||
{
|
{
|
||||||
|
// Always refresh the contents of the view upon suspended event.
|
||||||
if (event instanceof ISuspendedDMEvent) {
|
if (event instanceof ISuspendedDMEvent) {
|
||||||
// Mark the parent delta indicating that elements were added and/or removed.
|
|
||||||
parentDelta.setFlags(parentDelta.getFlags() | IModelDelta.CONTENT);
|
parentDelta.setFlags(parentDelta.getFlags() | IModelDelta.CONTENT);
|
||||||
}
|
}
|
||||||
else if (event instanceof IRegisters.IRegisterChangedDMEvent) {
|
|
||||||
parentDelta.setFlags(parentDelta.getFlags() | IModelDelta.CONTENT);
|
|
||||||
}
|
|
||||||
else if (event instanceof IMemory.IMemoryChangedEvent) {
|
|
||||||
parentDelta.setFlags(parentDelta.getFlags() | IModelDelta.CONTENT);
|
|
||||||
}
|
|
||||||
rm.done();
|
rm.done();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -802,19 +786,15 @@ public class RegisterBitFieldVMNode extends AbstractExpressionVMNode
|
||||||
*/
|
*/
|
||||||
public void buildDeltaForExpressionElement(Object element, int elementIdx, Object event, VMDelta parentDelta, final RequestMonitor rm)
|
public void buildDeltaForExpressionElement(Object element, int elementIdx, Object event, VMDelta parentDelta, final RequestMonitor rm)
|
||||||
{
|
{
|
||||||
if (event instanceof IMemory.IMemoryChangedEvent) {
|
// The following events can affect register values, refresh the state
|
||||||
parentDelta.addNode(element, IModelDelta.STATE);
|
// of the expression.
|
||||||
}
|
if ( event instanceof IRegisterChangedDMEvent ||
|
||||||
|
event instanceof IMemoryChangedEvent ||
|
||||||
if (event instanceof IBitFieldChangedDMEvent) {
|
(event instanceof PropertyChangeEvent &&
|
||||||
|
((PropertyChangeEvent)event).getProperty() == IDebugVMConstants.CURRENT_FORMAT_STORAGE) )
|
||||||
|
{
|
||||||
parentDelta.addNode(element, IModelDelta.STATE);
|
parentDelta.addNode(element, IModelDelta.STATE);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (event instanceof PropertyChangeEvent &&
|
|
||||||
((PropertyChangeEvent)event).getProperty() == IDebugVMConstants.CURRENT_FORMAT_STORAGE)
|
|
||||||
{
|
|
||||||
parentDelta.addNode(element, IModelDelta.CONTENT);
|
|
||||||
}
|
|
||||||
|
|
||||||
rm.done();
|
rm.done();
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,10 +27,11 @@ import org.eclipse.dd.dsf.debug.internal.provisional.ui.viewmodel.expression.Abs
|
||||||
import org.eclipse.dd.dsf.debug.internal.provisional.ui.viewmodel.expression.WatchExpressionCellModifier;
|
import org.eclipse.dd.dsf.debug.internal.provisional.ui.viewmodel.expression.WatchExpressionCellModifier;
|
||||||
import org.eclipse.dd.dsf.debug.internal.ui.DsfDebugUIPlugin;
|
import org.eclipse.dd.dsf.debug.internal.ui.DsfDebugUIPlugin;
|
||||||
import org.eclipse.dd.dsf.debug.service.IRegisters;
|
import org.eclipse.dd.dsf.debug.service.IRegisters;
|
||||||
import org.eclipse.dd.dsf.debug.service.IRunControl;
|
|
||||||
import org.eclipse.dd.dsf.debug.service.IRegisters.IGroupChangedDMEvent;
|
import org.eclipse.dd.dsf.debug.service.IRegisters.IGroupChangedDMEvent;
|
||||||
|
import org.eclipse.dd.dsf.debug.service.IRegisters.IGroupsChangedDMEvent;
|
||||||
import org.eclipse.dd.dsf.debug.service.IRegisters.IRegisterGroupDMContext;
|
import org.eclipse.dd.dsf.debug.service.IRegisters.IRegisterGroupDMContext;
|
||||||
import org.eclipse.dd.dsf.debug.service.IRegisters.IRegisterGroupDMData;
|
import org.eclipse.dd.dsf.debug.service.IRegisters.IRegisterGroupDMData;
|
||||||
|
import org.eclipse.dd.dsf.debug.service.IRunControl.ISuspendedDMEvent;
|
||||||
import org.eclipse.dd.dsf.service.DsfSession;
|
import org.eclipse.dd.dsf.service.DsfSession;
|
||||||
import org.eclipse.dd.dsf.ui.concurrent.ViewerDataRequestMonitor;
|
import org.eclipse.dd.dsf.ui.concurrent.ViewerDataRequestMonitor;
|
||||||
import org.eclipse.dd.dsf.ui.viewmodel.IVMContext;
|
import org.eclipse.dd.dsf.ui.viewmodel.IVMContext;
|
||||||
|
@ -130,7 +131,7 @@ public class RegisterGroupVMNode extends AbstractExpressionVMNode
|
||||||
private WatchExpressionCellModifier fWatchExpressionCellModifier = new WatchExpressionCellModifier();
|
private WatchExpressionCellModifier fWatchExpressionCellModifier = new WatchExpressionCellModifier();
|
||||||
|
|
||||||
public RegisterGroupVMNode(AbstractDMVMProvider provider, DsfSession session, SyncRegisterDataAccess syncDataAccess) {
|
public RegisterGroupVMNode(AbstractDMVMProvider provider, DsfSession session, SyncRegisterDataAccess syncDataAccess) {
|
||||||
super(provider, session, IRegisters.IRegisterGroupDMContext.class);
|
super(provider, session, IRegisterGroupDMContext.class);
|
||||||
fSyncRegisterDataAccess = syncDataAccess;
|
fSyncRegisterDataAccess = syncDataAccess;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -303,13 +304,13 @@ public class RegisterGroupVMNode extends AbstractExpressionVMNode
|
||||||
* @see org.eclipse.dd.dsf.ui.viewmodel.IVMNode#getDeltaFlags(java.lang.Object)
|
* @see org.eclipse.dd.dsf.ui.viewmodel.IVMNode#getDeltaFlags(java.lang.Object)
|
||||||
*/
|
*/
|
||||||
public int getDeltaFlags(Object e) {
|
public int getDeltaFlags(Object e) {
|
||||||
if (e instanceof IRunControl.ISuspendedDMEvent) {
|
if (e instanceof ISuspendedDMEvent) {
|
||||||
return IModelDelta.CONTENT;
|
return IModelDelta.CONTENT;
|
||||||
}
|
}
|
||||||
else if (e instanceof IRegisters.IGroupsChangedDMEvent) {
|
else if (e instanceof IGroupsChangedDMEvent) {
|
||||||
return IModelDelta.CONTENT;
|
return IModelDelta.CONTENT;
|
||||||
}
|
}
|
||||||
else if (e instanceof IRegisters.IGroupChangedDMEvent) {
|
else if (e instanceof IGroupChangedDMEvent) {
|
||||||
return IModelDelta.STATE;
|
return IModelDelta.STATE;
|
||||||
}
|
}
|
||||||
return IModelDelta.NO_CHANGE;
|
return IModelDelta.NO_CHANGE;
|
||||||
|
@ -320,15 +321,18 @@ public class RegisterGroupVMNode extends AbstractExpressionVMNode
|
||||||
* @see org.eclipse.dd.dsf.ui.viewmodel.IVMNode#buildDelta(java.lang.Object, org.eclipse.dd.dsf.ui.viewmodel.VMDelta, int, org.eclipse.dd.dsf.concurrent.RequestMonitor)
|
* @see org.eclipse.dd.dsf.ui.viewmodel.IVMNode#buildDelta(java.lang.Object, org.eclipse.dd.dsf.ui.viewmodel.VMDelta, int, org.eclipse.dd.dsf.concurrent.RequestMonitor)
|
||||||
*/
|
*/
|
||||||
public void buildDelta(Object e, VMDelta parentDelta, int nodeOffset, RequestMonitor rm) {
|
public void buildDelta(Object e, VMDelta parentDelta, int nodeOffset, RequestMonitor rm) {
|
||||||
if (e instanceof IRunControl.ISuspendedDMEvent) {
|
// Although the register groups themselves are not affected by the
|
||||||
|
// suspended event, typically all the registers are. Add a CONTENT changed
|
||||||
|
// flag to the parent to repaint all the groups and their registers.
|
||||||
|
if (e instanceof ISuspendedDMEvent) {
|
||||||
// Create a delta that indicates all groups have changed
|
// Create a delta that indicates all groups have changed
|
||||||
parentDelta.setFlags(parentDelta.getFlags() | IModelDelta.CONTENT);
|
parentDelta.setFlags(parentDelta.getFlags() | IModelDelta.CONTENT);
|
||||||
}
|
}
|
||||||
else if (e instanceof IRegisters.IGroupsChangedDMEvent) {
|
else if (e instanceof IGroupsChangedDMEvent) {
|
||||||
// Create a delta that indicates all groups have changed
|
// Create a delta that indicates all groups have changed
|
||||||
parentDelta.setFlags(parentDelta.getFlags() | IModelDelta.CONTENT);
|
parentDelta.setFlags(parentDelta.getFlags() | IModelDelta.CONTENT);
|
||||||
}
|
}
|
||||||
else if (e instanceof IRegisters.IGroupChangedDMEvent) {
|
else if (e instanceof IGroupChangedDMEvent) {
|
||||||
// Create a delta that indicates that specific group changed
|
// Create a delta that indicates that specific group changed
|
||||||
parentDelta.addNode( createVMContext(((IGroupChangedDMEvent)e).getDMContext()), IModelDelta.STATE );
|
parentDelta.addNode( createVMContext(((IGroupChangedDMEvent)e).getDMContext()), IModelDelta.STATE );
|
||||||
}
|
}
|
||||||
|
@ -365,10 +369,17 @@ public class RegisterGroupVMNode extends AbstractExpressionVMNode
|
||||||
* @see org.eclipse.dd.dsf.debug.internal.provisional.ui.viewmodel.expression.IExpressionVMNode#getDeltaFlagsForExpression(org.eclipse.debug.core.model.IExpression, java.lang.Object)
|
* @see org.eclipse.dd.dsf.debug.internal.provisional.ui.viewmodel.expression.IExpressionVMNode#getDeltaFlagsForExpression(org.eclipse.debug.core.model.IExpression, java.lang.Object)
|
||||||
*/
|
*/
|
||||||
public int getDeltaFlagsForExpression(IExpression expression, Object event) {
|
public int getDeltaFlagsForExpression(IExpression expression, Object event) {
|
||||||
if (event instanceof IRunControl.ISuspendedDMEvent) {
|
|
||||||
|
if (event instanceof ISuspendedDMEvent ||
|
||||||
|
event instanceof IGroupsChangedDMEvent)
|
||||||
|
{
|
||||||
return IModelDelta.CONTENT;
|
return IModelDelta.CONTENT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (event instanceof IGroupChangedDMEvent) {
|
||||||
|
return IModelDelta.STATE;
|
||||||
|
}
|
||||||
|
|
||||||
return IModelDelta.NO_CHANGE;
|
return IModelDelta.NO_CHANGE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -379,10 +390,19 @@ public class RegisterGroupVMNode extends AbstractExpressionVMNode
|
||||||
public void buildDeltaForExpression(IExpression expression, int elementIdx, Object event, VMDelta parentDelta,
|
public void buildDeltaForExpression(IExpression expression, int elementIdx, Object event, VMDelta parentDelta,
|
||||||
TreePath path, RequestMonitor rm)
|
TreePath path, RequestMonitor rm)
|
||||||
{
|
{
|
||||||
if (event instanceof IRunControl.ISuspendedDMEvent) {
|
if (event instanceof ISuspendedDMEvent) {
|
||||||
// Mark the parent delta indicating that elements were added and/or removed.
|
// Mark the parent delta indicating that elements were added and/or removed.
|
||||||
parentDelta.setFlags(parentDelta.getFlags() | IModelDelta.CONTENT);
|
parentDelta.setFlags(parentDelta.getFlags() | IModelDelta.CONTENT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If the group definitions have changed, refresh the whole expressions
|
||||||
|
// view contents since previously invalid expressions may now evaluate
|
||||||
|
// to valid groups
|
||||||
|
if (event instanceof IGroupsChangedDMEvent) {
|
||||||
|
parentDelta.setFlags(parentDelta.getFlags() | IModelDelta.CONTENT);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
rm.done();
|
rm.done();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -392,10 +412,7 @@ public class RegisterGroupVMNode extends AbstractExpressionVMNode
|
||||||
*/
|
*/
|
||||||
public void buildDeltaForExpressionElement(Object element, int elementIdx, Object event, VMDelta parentDelta, final RequestMonitor rm)
|
public void buildDeltaForExpressionElement(Object element, int elementIdx, Object event, VMDelta parentDelta, final RequestMonitor rm)
|
||||||
{
|
{
|
||||||
if (event instanceof IRegisters.IGroupsChangedDMEvent) {
|
if (event instanceof IGroupChangedDMEvent) {
|
||||||
parentDelta.addNode(element, IModelDelta.CONTENT);
|
|
||||||
}
|
|
||||||
if (event instanceof IRegisters.IGroupChangedDMEvent) {
|
|
||||||
parentDelta.addNode(element, IModelDelta.STATE);
|
parentDelta.addNode(element, IModelDelta.STATE);
|
||||||
}
|
}
|
||||||
rm.done();
|
rm.done();
|
||||||
|
|
|
@ -28,15 +28,16 @@ import org.eclipse.dd.dsf.debug.internal.provisional.ui.viewmodel.numberformat.I
|
||||||
import org.eclipse.dd.dsf.debug.internal.provisional.ui.viewmodel.numberformat.IFormattedValueVMContext;
|
import org.eclipse.dd.dsf.debug.internal.provisional.ui.viewmodel.numberformat.IFormattedValueVMContext;
|
||||||
import org.eclipse.dd.dsf.debug.internal.ui.DsfDebugUIPlugin;
|
import org.eclipse.dd.dsf.debug.internal.ui.DsfDebugUIPlugin;
|
||||||
import org.eclipse.dd.dsf.debug.service.IFormattedValues;
|
import org.eclipse.dd.dsf.debug.service.IFormattedValues;
|
||||||
import org.eclipse.dd.dsf.debug.service.IMemory;
|
|
||||||
import org.eclipse.dd.dsf.debug.service.IRegisters;
|
import org.eclipse.dd.dsf.debug.service.IRegisters;
|
||||||
import org.eclipse.dd.dsf.debug.service.IRunControl;
|
|
||||||
import org.eclipse.dd.dsf.debug.service.IFormattedValues.FormattedValueDMContext;
|
import org.eclipse.dd.dsf.debug.service.IFormattedValues.FormattedValueDMContext;
|
||||||
import org.eclipse.dd.dsf.debug.service.IFormattedValues.FormattedValueDMData;
|
import org.eclipse.dd.dsf.debug.service.IFormattedValues.FormattedValueDMData;
|
||||||
|
import org.eclipse.dd.dsf.debug.service.IMemory.IMemoryChangedEvent;
|
||||||
import org.eclipse.dd.dsf.debug.service.IRegisters.IRegisterChangedDMEvent;
|
import org.eclipse.dd.dsf.debug.service.IRegisters.IRegisterChangedDMEvent;
|
||||||
import org.eclipse.dd.dsf.debug.service.IRegisters.IRegisterDMContext;
|
import org.eclipse.dd.dsf.debug.service.IRegisters.IRegisterDMContext;
|
||||||
import org.eclipse.dd.dsf.debug.service.IRegisters.IRegisterDMData;
|
import org.eclipse.dd.dsf.debug.service.IRegisters.IRegisterDMData;
|
||||||
import org.eclipse.dd.dsf.debug.service.IRegisters.IRegisterGroupDMData;
|
import org.eclipse.dd.dsf.debug.service.IRegisters.IRegisterGroupDMData;
|
||||||
|
import org.eclipse.dd.dsf.debug.service.IRegisters.IRegistersChangedDMEvent;
|
||||||
|
import org.eclipse.dd.dsf.debug.service.IRunControl.ISuspendedDMEvent;
|
||||||
import org.eclipse.dd.dsf.service.DsfSession;
|
import org.eclipse.dd.dsf.service.DsfSession;
|
||||||
import org.eclipse.dd.dsf.ui.concurrent.ViewerDataRequestMonitor;
|
import org.eclipse.dd.dsf.ui.concurrent.ViewerDataRequestMonitor;
|
||||||
import org.eclipse.dd.dsf.ui.viewmodel.IVMContext;
|
import org.eclipse.dd.dsf.ui.viewmodel.IVMContext;
|
||||||
|
@ -53,6 +54,7 @@ import org.eclipse.debug.internal.ui.viewers.model.provisional.IElementEditor;
|
||||||
import org.eclipse.debug.internal.ui.viewers.model.provisional.IElementLabelProvider;
|
import org.eclipse.debug.internal.ui.viewers.model.provisional.IElementLabelProvider;
|
||||||
import org.eclipse.debug.internal.ui.viewers.model.provisional.IElementMementoProvider;
|
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.IElementMementoRequest;
|
||||||
|
import org.eclipse.debug.internal.ui.viewers.model.provisional.IHasChildrenUpdate;
|
||||||
import org.eclipse.debug.internal.ui.viewers.model.provisional.ILabelUpdate;
|
import org.eclipse.debug.internal.ui.viewers.model.provisional.ILabelUpdate;
|
||||||
import org.eclipse.debug.internal.ui.viewers.model.provisional.IModelDelta;
|
import org.eclipse.debug.internal.ui.viewers.model.provisional.IModelDelta;
|
||||||
import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext;
|
import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext;
|
||||||
|
@ -146,7 +148,7 @@ public class RegisterVMNode extends AbstractExpressionVMNode
|
||||||
private final IFormattedValuePreferenceStore fFormattedPrefStore;
|
private final IFormattedValuePreferenceStore fFormattedPrefStore;
|
||||||
|
|
||||||
public RegisterVMNode(IFormattedValuePreferenceStore prefStore, AbstractDMVMProvider provider, DsfSession session, SyncRegisterDataAccess syncDataAccess) {
|
public RegisterVMNode(IFormattedValuePreferenceStore prefStore, AbstractDMVMProvider provider, DsfSession session, SyncRegisterDataAccess syncDataAccess) {
|
||||||
super(provider, session, IRegisters.IRegisterDMContext.class);
|
super(provider, session, IRegisterDMContext.class);
|
||||||
fSyncRegisterDataAccess = syncDataAccess;
|
fSyncRegisterDataAccess = syncDataAccess;
|
||||||
fFormattedPrefStore = prefStore;
|
fFormattedPrefStore = prefStore;
|
||||||
}
|
}
|
||||||
|
@ -306,7 +308,7 @@ public class RegisterVMNode extends AbstractExpressionVMNode
|
||||||
protected void updateLabelInSessionThread(ILabelUpdate[] updates) {
|
protected void updateLabelInSessionThread(ILabelUpdate[] updates) {
|
||||||
for (final ILabelUpdate update : updates) {
|
for (final ILabelUpdate update : updates) {
|
||||||
|
|
||||||
final IRegisterDMContext dmc = findDmcInPath(update.getViewerInput(), update.getElementPath(), IRegisters.IRegisterDMContext.class);
|
final IRegisterDMContext dmc = findDmcInPath(update.getViewerInput(), update.getElementPath(), IRegisterDMContext.class);
|
||||||
if ( dmc == null ) {
|
if ( dmc == null ) {
|
||||||
handleFailedUpdate(update);
|
handleFailedUpdate(update);
|
||||||
continue;
|
continue;
|
||||||
|
@ -455,6 +457,16 @@ public class RegisterVMNode extends AbstractExpressionVMNode
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void update(IHasChildrenUpdate[] updates) {
|
||||||
|
// As an optimization, always indicate that register groups have
|
||||||
|
// children.
|
||||||
|
for (IHasChildrenUpdate update : updates) {
|
||||||
|
update.setHasChilren(true);
|
||||||
|
update.done();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
* @see org.eclipse.dd.dsf.ui.viewmodel.datamodel.AbstractDMVMNode#updateElementsInSessionThread(org.eclipse.debug.internal.ui.viewers.model.provisional.IChildrenUpdate)
|
* @see org.eclipse.dd.dsf.ui.viewmodel.datamodel.AbstractDMVMNode#updateElementsInSessionThread(org.eclipse.debug.internal.ui.viewers.model.provisional.IChildrenUpdate)
|
||||||
|
@ -498,32 +510,19 @@ public class RegisterVMNode extends AbstractExpressionVMNode
|
||||||
* @see org.eclipse.dd.dsf.ui.viewmodel.IVMNode#getDeltaFlags(java.lang.Object)
|
* @see org.eclipse.dd.dsf.ui.viewmodel.IVMNode#getDeltaFlags(java.lang.Object)
|
||||||
*/
|
*/
|
||||||
public int getDeltaFlags(Object e) {
|
public int getDeltaFlags(Object e) {
|
||||||
if (e instanceof IRunControl.ISuspendedDMEvent) {
|
if ( e instanceof ISuspendedDMEvent ||
|
||||||
return IModelDelta.CONTENT;
|
e instanceof IMemoryChangedEvent ||
|
||||||
}
|
e instanceof IRegistersChangedDMEvent ||
|
||||||
|
(e instanceof PropertyChangeEvent &&
|
||||||
if (e instanceof IRegisters.IRegistersChangedDMEvent) {
|
((PropertyChangeEvent)e).getProperty() == IDebugVMConstants.CURRENT_FORMAT_STORAGE) )
|
||||||
return IModelDelta.CONTENT;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (e instanceof IMemory.IMemoryChangedEvent) {
|
|
||||||
return IModelDelta.CONTENT;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (e instanceof IRegisters.IRegisterChangedDMEvent) {
|
|
||||||
/*
|
|
||||||
* Logically one would think that STATE should be specified here. But we specify CONTENT
|
|
||||||
* as well so that if there are sub-registers ( BIT FIELDS ) they will be forced to update
|
|
||||||
* and show new values when the total register changes.
|
|
||||||
*/
|
|
||||||
return IModelDelta.CONTENT;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (e instanceof PropertyChangeEvent &&
|
|
||||||
((PropertyChangeEvent)e).getProperty() == IDebugVMConstants.CURRENT_FORMAT_STORAGE)
|
|
||||||
{
|
{
|
||||||
return IModelDelta.CONTENT;
|
return IModelDelta.CONTENT;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (e instanceof IRegisterChangedDMEvent) {
|
||||||
|
return IModelDelta.STATE;
|
||||||
}
|
}
|
||||||
|
|
||||||
return IModelDelta.NO_CHANGE;
|
return IModelDelta.NO_CHANGE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -532,30 +531,22 @@ public class RegisterVMNode extends AbstractExpressionVMNode
|
||||||
* @see org.eclipse.dd.dsf.ui.viewmodel.IVMNode#buildDelta(java.lang.Object, org.eclipse.dd.dsf.ui.viewmodel.VMDelta, int, org.eclipse.dd.dsf.concurrent.RequestMonitor)
|
* @see org.eclipse.dd.dsf.ui.viewmodel.IVMNode#buildDelta(java.lang.Object, org.eclipse.dd.dsf.ui.viewmodel.VMDelta, int, org.eclipse.dd.dsf.concurrent.RequestMonitor)
|
||||||
*/
|
*/
|
||||||
public void buildDelta(Object e, VMDelta parentDelta, int nodeOffset, RequestMonitor rm) {
|
public void buildDelta(Object e, VMDelta parentDelta, int nodeOffset, RequestMonitor rm) {
|
||||||
if (e instanceof IRunControl.ISuspendedDMEvent) {
|
// The following events can affect any register's values,
|
||||||
|
// refresh the contents of the parent element (i.e. all the registers).
|
||||||
|
if ( e instanceof ISuspendedDMEvent ||
|
||||||
|
e instanceof IMemoryChangedEvent ||
|
||||||
|
e instanceof IRegistersChangedDMEvent ||
|
||||||
|
(e instanceof PropertyChangeEvent &&
|
||||||
|
((PropertyChangeEvent)e).getProperty() == IDebugVMConstants.CURRENT_FORMAT_STORAGE) )
|
||||||
|
{
|
||||||
// Create a delta that the whole register group has changed.
|
// Create a delta that the whole register group has changed.
|
||||||
parentDelta.setFlags(parentDelta.getFlags() | IModelDelta.CONTENT);
|
parentDelta.setFlags(parentDelta.getFlags() | IModelDelta.CONTENT);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (e instanceof IRegisters.IRegistersChangedDMEvent) {
|
if (e instanceof IRegisterChangedDMEvent) {
|
||||||
parentDelta.setFlags(parentDelta.getFlags() | IModelDelta.CONTENT);;
|
parentDelta.addNode( createVMContext(((IRegisterChangedDMEvent)e).getDMContext()), IModelDelta.STATE );
|
||||||
}
|
}
|
||||||
|
|
||||||
if (e instanceof IMemory.IMemoryChangedEvent) {
|
|
||||||
// Mark the parent delta indicating that elements were added and/or removed.
|
|
||||||
parentDelta.setFlags(parentDelta.getFlags() | IModelDelta.CONTENT);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (e instanceof IRegisters.IRegisterChangedDMEvent) {
|
|
||||||
parentDelta.addNode( createVMContext(((IRegisterChangedDMEvent)e).getDMContext()), IModelDelta.CONTENT | IModelDelta.STATE );
|
|
||||||
}
|
|
||||||
|
|
||||||
if (e instanceof PropertyChangeEvent &&
|
|
||||||
((PropertyChangeEvent)e).getProperty() == IDebugVMConstants.CURRENT_FORMAT_STORAGE)
|
|
||||||
{
|
|
||||||
parentDelta.setFlags(parentDelta.getFlags() | IModelDelta.CONTENT);
|
|
||||||
}
|
|
||||||
|
|
||||||
rm.done();
|
rm.done();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -563,7 +554,6 @@ public class RegisterVMNode extends AbstractExpressionVMNode
|
||||||
* Expected format: GRP( GroupName ).REG( RegisterName )
|
* Expected format: GRP( GroupName ).REG( RegisterName )
|
||||||
* or: $RegisterName
|
* or: $RegisterName
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public boolean canParseExpression(IExpression expression) {
|
public boolean canParseExpression(IExpression expression) {
|
||||||
return parseExpressionForRegisterName(expression.getExpressionText()) != null;
|
return parseExpressionForRegisterName(expression.getExpressionText()) != null;
|
||||||
}
|
}
|
||||||
|
@ -670,19 +660,20 @@ public class RegisterVMNode extends AbstractExpressionVMNode
|
||||||
* @see org.eclipse.dd.dsf.debug.internal.provisional.ui.viewmodel.expression.IExpressionVMNode#getDeltaFlagsForExpression(org.eclipse.debug.core.model.IExpression, java.lang.Object)
|
* @see org.eclipse.dd.dsf.debug.internal.provisional.ui.viewmodel.expression.IExpressionVMNode#getDeltaFlagsForExpression(org.eclipse.debug.core.model.IExpression, java.lang.Object)
|
||||||
*/
|
*/
|
||||||
public int getDeltaFlagsForExpression(IExpression expression, Object event) {
|
public int getDeltaFlagsForExpression(IExpression expression, Object event) {
|
||||||
if (event instanceof IRunControl.ISuspendedDMEvent) {
|
if ( event instanceof IRegisterChangedDMEvent ||
|
||||||
return IModelDelta.CONTENT;
|
event instanceof IMemoryChangedEvent ||
|
||||||
}
|
(event instanceof PropertyChangeEvent &&
|
||||||
if (event instanceof PropertyChangeEvent &&
|
((PropertyChangeEvent)event).getProperty() == IDebugVMConstants.CURRENT_FORMAT_STORAGE) )
|
||||||
((PropertyChangeEvent)event).getProperty() == IDebugVMConstants.CURRENT_FORMAT_STORAGE)
|
|
||||||
{
|
{
|
||||||
return IModelDelta.CONTENT;
|
return IModelDelta.STATE;
|
||||||
}
|
|
||||||
|
|
||||||
if (event instanceof IMemory.IMemoryChangedEvent) {
|
|
||||||
return IModelDelta.CONTENT;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (event instanceof IRegistersChangedDMEvent ||
|
||||||
|
event instanceof ISuspendedDMEvent)
|
||||||
|
{
|
||||||
|
return IModelDelta.CONTENT;
|
||||||
|
}
|
||||||
|
|
||||||
return IModelDelta.NO_CHANGE;
|
return IModelDelta.NO_CHANGE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -693,15 +684,19 @@ public class RegisterVMNode extends AbstractExpressionVMNode
|
||||||
public void buildDeltaForExpression(IExpression expression, int elementIdx, Object event, VMDelta parentDelta,
|
public void buildDeltaForExpression(IExpression expression, int elementIdx, Object event, VMDelta parentDelta,
|
||||||
TreePath path, RequestMonitor rm)
|
TreePath path, RequestMonitor rm)
|
||||||
{
|
{
|
||||||
if (event instanceof IRunControl.ISuspendedDMEvent) {
|
// If the register definition has changed, refresh all the
|
||||||
// Mark the parent delta indicating that elements were added and/or removed.
|
// expressions in the expression manager. This is because some
|
||||||
parentDelta.setFlags(parentDelta.getFlags() | IModelDelta.CONTENT);
|
// expressions that were previously invalid, may now represent new
|
||||||
}
|
// registers.
|
||||||
|
if (event instanceof IRegistersChangedDMEvent) {
|
||||||
if (event instanceof IMemory.IMemoryChangedEvent) {
|
|
||||||
parentDelta.setFlags(parentDelta.getFlags() | IModelDelta.CONTENT);
|
parentDelta.setFlags(parentDelta.getFlags() | IModelDelta.CONTENT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Always refresh the contents of the view upon suspended event.
|
||||||
|
if (event instanceof ISuspendedDMEvent) {
|
||||||
|
parentDelta.setFlags(parentDelta.getFlags() | IModelDelta.CONTENT);
|
||||||
|
}
|
||||||
|
|
||||||
rm.done();
|
rm.done();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -711,23 +706,15 @@ public class RegisterVMNode extends AbstractExpressionVMNode
|
||||||
*/
|
*/
|
||||||
public void buildDeltaForExpressionElement(Object element, int elementIdx, Object event, VMDelta parentDelta, final RequestMonitor rm)
|
public void buildDeltaForExpressionElement(Object element, int elementIdx, Object event, VMDelta parentDelta, final RequestMonitor rm)
|
||||||
{
|
{
|
||||||
if (event instanceof IRegisters.IRegisterChangedDMEvent) {
|
// The following events can affect register values, refresh the state
|
||||||
parentDelta.addNode(element, IModelDelta.STATE);
|
// of the expression.
|
||||||
}
|
if ( event instanceof IRegisterChangedDMEvent ||
|
||||||
|
event instanceof IMemoryChangedEvent ||
|
||||||
if (event instanceof IRegisters.IRegistersChangedDMEvent) {
|
(event instanceof PropertyChangeEvent &&
|
||||||
parentDelta.addNode(element, IModelDelta.STATE);
|
((PropertyChangeEvent)event).getProperty() == IDebugVMConstants.CURRENT_FORMAT_STORAGE) )
|
||||||
}
|
|
||||||
|
|
||||||
if (event instanceof IMemory.IMemoryChangedEvent) {
|
|
||||||
parentDelta.addNode(element, IModelDelta.CONTENT);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (event instanceof PropertyChangeEvent &&
|
|
||||||
((PropertyChangeEvent)event).getProperty() == IDebugVMConstants.CURRENT_FORMAT_STORAGE)
|
|
||||||
{
|
{
|
||||||
parentDelta.addNode(element, IModelDelta.CONTENT);
|
parentDelta.addNode(element, IModelDelta.STATE);
|
||||||
}
|
}
|
||||||
|
|
||||||
rm.done();
|
rm.done();
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,13 +34,14 @@ import org.eclipse.dd.dsf.debug.internal.provisional.ui.viewmodel.numberformat.I
|
||||||
import org.eclipse.dd.dsf.debug.internal.ui.DsfDebugUIPlugin;
|
import org.eclipse.dd.dsf.debug.internal.ui.DsfDebugUIPlugin;
|
||||||
import org.eclipse.dd.dsf.debug.service.IExpressions;
|
import org.eclipse.dd.dsf.debug.service.IExpressions;
|
||||||
import org.eclipse.dd.dsf.debug.service.IFormattedValues;
|
import org.eclipse.dd.dsf.debug.service.IFormattedValues;
|
||||||
import org.eclipse.dd.dsf.debug.service.IMemory;
|
|
||||||
import org.eclipse.dd.dsf.debug.service.IRunControl;
|
|
||||||
import org.eclipse.dd.dsf.debug.service.IStack;
|
import org.eclipse.dd.dsf.debug.service.IStack;
|
||||||
|
import org.eclipse.dd.dsf.debug.service.IExpressions.IExpressionChangedDMEvent;
|
||||||
import org.eclipse.dd.dsf.debug.service.IExpressions.IExpressionDMContext;
|
import org.eclipse.dd.dsf.debug.service.IExpressions.IExpressionDMContext;
|
||||||
import org.eclipse.dd.dsf.debug.service.IExpressions.IExpressionDMData;
|
import org.eclipse.dd.dsf.debug.service.IExpressions.IExpressionDMData;
|
||||||
import org.eclipse.dd.dsf.debug.service.IFormattedValues.FormattedValueDMContext;
|
import org.eclipse.dd.dsf.debug.service.IFormattedValues.FormattedValueDMContext;
|
||||||
import org.eclipse.dd.dsf.debug.service.IFormattedValues.FormattedValueDMData;
|
import org.eclipse.dd.dsf.debug.service.IFormattedValues.FormattedValueDMData;
|
||||||
|
import org.eclipse.dd.dsf.debug.service.IMemory.IMemoryChangedEvent;
|
||||||
|
import org.eclipse.dd.dsf.debug.service.IRunControl.ISuspendedDMEvent;
|
||||||
import org.eclipse.dd.dsf.debug.service.IStack.IFrameDMContext;
|
import org.eclipse.dd.dsf.debug.service.IStack.IFrameDMContext;
|
||||||
import org.eclipse.dd.dsf.debug.service.IStack.IVariableDMContext;
|
import org.eclipse.dd.dsf.debug.service.IStack.IVariableDMContext;
|
||||||
import org.eclipse.dd.dsf.debug.service.IStack.IVariableDMData;
|
import org.eclipse.dd.dsf.debug.service.IStack.IVariableDMData;
|
||||||
|
@ -78,49 +79,6 @@ public class VariableVMNode extends AbstractExpressionVMNode
|
||||||
implements IElementEditor, IElementLabelProvider, IElementMementoProvider
|
implements IElementEditor, IElementLabelProvider, IElementMementoProvider
|
||||||
{
|
{
|
||||||
|
|
||||||
//private final static int MAX_STRING_VALUE_LENGTH = 40;
|
|
||||||
|
|
||||||
public int getDeltaFlags(Object e) {
|
|
||||||
/*
|
|
||||||
* @see buildDelta()
|
|
||||||
*/
|
|
||||||
|
|
||||||
// When an expression changes or memory, we must do a full refresh
|
|
||||||
// see Bug 213061 and Bug 214550
|
|
||||||
if (e instanceof IRunControl.ISuspendedDMEvent ||
|
|
||||||
e instanceof IExpressions.IExpressionChangedDMEvent ||
|
|
||||||
e instanceof IMemory.IMemoryChangedEvent) {
|
|
||||||
return IModelDelta.CONTENT;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (e instanceof PropertyChangeEvent &&
|
|
||||||
((PropertyChangeEvent)e).getProperty() == IDebugVMConstants.CURRENT_FORMAT_STORAGE)
|
|
||||||
{
|
|
||||||
return IModelDelta.CONTENT;
|
|
||||||
}
|
|
||||||
|
|
||||||
return IModelDelta.NO_CHANGE;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void buildDelta(final Object event, final VMDelta parentDelta, final int nodeOffset, final RequestMonitor requestMonitor) {
|
|
||||||
|
|
||||||
// When an expression changes or memory, we must do a full refresh
|
|
||||||
// see Bug 213061 and Bug 214550
|
|
||||||
if (event instanceof IRunControl.ISuspendedDMEvent ||
|
|
||||||
event instanceof IExpressions.IExpressionChangedDMEvent ||
|
|
||||||
event instanceof IMemory.IMemoryChangedEvent) {
|
|
||||||
parentDelta.setFlags(parentDelta.getFlags() | IModelDelta.CONTENT);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (event instanceof PropertyChangeEvent &&
|
|
||||||
((PropertyChangeEvent)event).getProperty() == IDebugVMConstants.CURRENT_FORMAT_STORAGE)
|
|
||||||
{
|
|
||||||
parentDelta.setFlags(parentDelta.getFlags() | IModelDelta.CONTENT);
|
|
||||||
}
|
|
||||||
|
|
||||||
requestMonitor.done();
|
|
||||||
}
|
|
||||||
|
|
||||||
private final IFormattedValuePreferenceStore fFormattedPrefStore;
|
private final IFormattedValuePreferenceStore fFormattedPrefStore;
|
||||||
|
|
||||||
private final SyncVariableDataAccess fSyncVariableDataAccess;
|
private final SyncVariableDataAccess fSyncVariableDataAccess;
|
||||||
|
@ -519,49 +477,6 @@ public class VariableVMNode extends AbstractExpressionVMNode
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getDeltaFlagsForExpression(IExpression expression, Object event) {
|
|
||||||
// When an expression changes or memory, we must do a full refresh
|
|
||||||
// see Bug 213061 and Bug 214550
|
|
||||||
if (event instanceof IRunControl.ISuspendedDMEvent ||
|
|
||||||
event instanceof IExpressions.IExpressionChangedDMEvent ||
|
|
||||||
event instanceof IMemory.IMemoryChangedEvent) {
|
|
||||||
return IModelDelta.CONTENT;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (event instanceof PropertyChangeEvent &&
|
|
||||||
((PropertyChangeEvent)event).getProperty() == IDebugVMConstants.CURRENT_FORMAT_STORAGE)
|
|
||||||
{
|
|
||||||
return IModelDelta.CONTENT;
|
|
||||||
}
|
|
||||||
return IModelDelta.NO_CHANGE;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void buildDeltaForExpression(IExpression expression, int elementIdx, Object event, VMDelta parentDelta,
|
|
||||||
TreePath path, RequestMonitor rm)
|
|
||||||
{
|
|
||||||
rm.done();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void buildDeltaForExpressionElement(Object element, int elementIdx, Object event, VMDelta parentDelta,
|
|
||||||
RequestMonitor rm)
|
|
||||||
{
|
|
||||||
// When an expression changes or memory, we must do a full refresh
|
|
||||||
// see Bug 213061 and Bug 214550
|
|
||||||
if (event instanceof IRunControl.ISuspendedDMEvent ||
|
|
||||||
event instanceof IExpressions.IExpressionChangedDMEvent ||
|
|
||||||
event instanceof IMemory.IMemoryChangedEvent) {
|
|
||||||
parentDelta.setFlags(parentDelta.getFlags() | IModelDelta.CONTENT);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (event instanceof PropertyChangeEvent &&
|
|
||||||
((PropertyChangeEvent)event).getProperty() == IDebugVMConstants.CURRENT_FORMAT_STORAGE)
|
|
||||||
{
|
|
||||||
parentDelta.addNode(element, IModelDelta.CONTENT);
|
|
||||||
}
|
|
||||||
|
|
||||||
rm.done();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void updateElementsInSessionThread(final IChildrenUpdate update) {
|
protected void updateElementsInSessionThread(final IChildrenUpdate update) {
|
||||||
// Get the data model context object for the current node in the hierarchy.
|
// Get the data model context object for the current node in the hierarchy.
|
||||||
|
@ -730,6 +645,85 @@ public class VariableVMNode extends AbstractExpressionVMNode
|
||||||
stackFrameService.getLocals(frameDmc, rm);
|
stackFrameService.getLocals(frameDmc, rm);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//private final static int MAX_STRING_VALUE_LENGTH = 40;
|
||||||
|
|
||||||
|
public int getDeltaFlags(Object e) {
|
||||||
|
if ( e instanceof ISuspendedDMEvent ||
|
||||||
|
e instanceof IMemoryChangedEvent ||
|
||||||
|
e instanceof IExpressionChangedDMEvent ||
|
||||||
|
(e instanceof PropertyChangeEvent &&
|
||||||
|
((PropertyChangeEvent)e).getProperty() == IDebugVMConstants.CURRENT_FORMAT_STORAGE) )
|
||||||
|
{
|
||||||
|
// Create a delta that the whole register group has changed.
|
||||||
|
return IModelDelta.CONTENT;
|
||||||
|
}
|
||||||
|
|
||||||
|
return IModelDelta.NO_CHANGE;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void buildDelta(final Object e, final VMDelta parentDelta, final int nodeOffset, final RequestMonitor requestMonitor) {
|
||||||
|
|
||||||
|
// The following events can affect any expression's values,
|
||||||
|
// refresh the contents of the parent element (i.e. all the expressions).
|
||||||
|
if ( e instanceof ISuspendedDMEvent ||
|
||||||
|
e instanceof IMemoryChangedEvent ||
|
||||||
|
e instanceof IExpressionChangedDMEvent ||
|
||||||
|
(e instanceof PropertyChangeEvent &&
|
||||||
|
((PropertyChangeEvent)e).getProperty() == IDebugVMConstants.CURRENT_FORMAT_STORAGE) )
|
||||||
|
{
|
||||||
|
// Create a delta that the whole register group has changed.
|
||||||
|
parentDelta.setFlags(parentDelta.getFlags() | IModelDelta.CONTENT);
|
||||||
|
}
|
||||||
|
|
||||||
|
requestMonitor.done();
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getDeltaFlagsForExpression(IExpression expression, Object event) {
|
||||||
|
if ( event instanceof IExpressionChangedDMEvent ||
|
||||||
|
event instanceof IMemoryChangedEvent ||
|
||||||
|
(event instanceof PropertyChangeEvent &&
|
||||||
|
((PropertyChangeEvent)event).getProperty() == IDebugVMConstants.CURRENT_FORMAT_STORAGE) )
|
||||||
|
{
|
||||||
|
return IModelDelta.STATE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (event instanceof ISuspendedDMEvent)
|
||||||
|
{
|
||||||
|
return IModelDelta.CONTENT;
|
||||||
|
}
|
||||||
|
|
||||||
|
return IModelDelta.NO_CHANGE;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void buildDeltaForExpression(IExpression expression, int elementIdx, Object event, VMDelta parentDelta,
|
||||||
|
TreePath path, RequestMonitor rm)
|
||||||
|
{
|
||||||
|
// Always refresh the contents of the view upon suspended event.
|
||||||
|
if (event instanceof ISuspendedDMEvent) {
|
||||||
|
parentDelta.setFlags(parentDelta.getFlags() | IModelDelta.CONTENT);
|
||||||
|
}
|
||||||
|
|
||||||
|
rm.done();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void buildDeltaForExpressionElement(Object element, int elementIdx, Object event, VMDelta parentDelta,
|
||||||
|
RequestMonitor rm)
|
||||||
|
{
|
||||||
|
// The following events can affect expression values, refresh the state
|
||||||
|
// of the expression.
|
||||||
|
if ( event instanceof IExpressionChangedDMEvent ||
|
||||||
|
event instanceof IMemoryChangedEvent ||
|
||||||
|
(event instanceof PropertyChangeEvent &&
|
||||||
|
((PropertyChangeEvent)event).getProperty() == IDebugVMConstants.CURRENT_FORMAT_STORAGE) )
|
||||||
|
{
|
||||||
|
parentDelta.addNode(element, IModelDelta.STATE);
|
||||||
|
}
|
||||||
|
|
||||||
|
rm.done();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
* @see org.eclipse.debug.internal.ui.viewers.model.provisional.IElementMementoProvider#compareElements(org.eclipse.debug.internal.ui.viewers.model.provisional.IElementCompareRequest[])
|
* @see org.eclipse.debug.internal.ui.viewers.model.provisional.IElementMementoProvider#compareElements(org.eclipse.debug.internal.ui.viewers.model.provisional.IElementCompareRequest[])
|
||||||
|
|
|
@ -97,7 +97,7 @@ public interface IFormattedValues extends IDMService {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return super.toString() + ".format(" + getFormatID() + ")"; //$NON-NLS-1$ //$NON-NLS-2$
|
return baseToString() + ".format(" + getFormatID() + ")"; //$NON-NLS-1$ //$NON-NLS-2$
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -112,5 +112,7 @@ public interface IFormattedValues extends IDMService {
|
||||||
public String getFormattedValue() {
|
public String getFormattedValue() {
|
||||||
return fValue;
|
return fValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Add table
Reference in a new issue