diff --git a/plugins/org.eclipse.dd.dsf.debug.ui/src/org/eclipse/dd/dsf/debug/internal/provisional/ui/viewmodel/register/RegisterBitFieldVMNode.java b/plugins/org.eclipse.dd.dsf.debug.ui/src/org/eclipse/dd/dsf/debug/internal/provisional/ui/viewmodel/register/RegisterBitFieldVMNode.java index 6a7f5680501..85b227099ad 100644 --- a/plugins/org.eclipse.dd.dsf.debug.ui/src/org/eclipse/dd/dsf/debug/internal/provisional/ui/viewmodel/register/RegisterBitFieldVMNode.java +++ b/plugins/org.eclipse.dd.dsf.debug.ui/src/org/eclipse/dd/dsf/debug/internal/provisional/ui/viewmodel/register/RegisterBitFieldVMNode.java @@ -99,7 +99,7 @@ public class RegisterBitFieldVMNode extends AbstractExpressionVMNode if (fExpression != null && adapter.isAssignableFrom(fExpression.getClass())) { return fExpression; } else if (adapter.isAssignableFrom(IWatchExpressionFactoryAdapter2.class)) { - return fBitFieldExpressionFactory; + return getWatchExpressionFactory(); } else { return super.getAdapter(adapter); } @@ -131,9 +131,9 @@ public class RegisterBitFieldVMNode extends AbstractExpressionVMNode * Expected format: GRP( GroupName ).REG( RegisterName ).BFLD( BitFieldname ) */ public String createWatchExpression(Object element) throws CoreException { - IRegisterGroupDMData groupData = fDataAccess.getRegisterGroupDMData(element); - IRegisterDMData registerData = fDataAccess.getRegisterDMData(element); - IBitFieldDMData bitFieldData = fDataAccess.getBitFieldDMData(element); + IRegisterGroupDMData groupData = getSyncRegisterDataAccess().getRegisterGroupDMData(element); + IRegisterDMData registerData = getSyncRegisterDataAccess().getRegisterDMData(element); + IBitFieldDMData bitFieldData = getSyncRegisterDataAccess().getBitFieldDMData(element); if (groupData != null && registerData != null && bitFieldData != null) { StringBuffer exprBuf = new StringBuffer(); @@ -149,13 +149,13 @@ public class RegisterBitFieldVMNode extends AbstractExpressionVMNode } } - private SyncRegisterDataAccess fDataAccess = null; - final protected BitFieldExpressionFactory fBitFieldExpressionFactory = new BitFieldExpressionFactory(); + private SyncRegisterDataAccess fSyncRegisterDataAccess = null; + private IWatchExpressionFactoryAdapter2 fBitFieldExpressionFactory = null; private final IFormattedValuePreferenceStore fFormattedPrefStore; public RegisterBitFieldVMNode(IFormattedValuePreferenceStore prefStore, AbstractDMVMProvider provider, DsfSession session, SyncRegisterDataAccess access) { super(provider, session, IRegisters.IBitFieldDMContext.class); - fDataAccess = access; + fSyncRegisterDataAccess = access; fFormattedPrefStore = prefStore; } @@ -168,6 +168,18 @@ public class RegisterBitFieldVMNode extends AbstractExpressionVMNode public IFormattedValuePreferenceStore getPreferenceStore() { return fFormattedPrefStore; } + + public SyncRegisterDataAccess getSyncRegisterDataAccess() { + return fSyncRegisterDataAccess; + } + + public IWatchExpressionFactoryAdapter2 getWatchExpressionFactory() { + if ( fBitFieldExpressionFactory == null ) { + fBitFieldExpressionFactory = new BitFieldExpressionFactory(); + } + return fBitFieldExpressionFactory; + } + /** * Private data access routine which performs the extra level of data access needed to * get the formatted data value for a specific register. @@ -560,7 +572,7 @@ public class RegisterBitFieldVMNode extends AbstractExpressionVMNode * editor. If there are bit groups then the modifier will check the size of the * value being entered. */ - IBitFieldDMData bitFieldData = fDataAccess.readBitField(element); + IBitFieldDMData bitFieldData = getSyncRegisterDataAccess().readBitField(element); if ( bitFieldData != null && bitFieldData.isWriteable() ) { @@ -606,7 +618,7 @@ public class RegisterBitFieldVMNode extends AbstractExpressionVMNode * In order to decide what kind of modifier to present we need to know if there * are mnemonics which can be used to represent the values. */ - IBitFieldDMData bitFieldData = fDataAccess.readBitField(element); + IBitFieldDMData bitFieldData = getSyncRegisterDataAccess().readBitField(element); if ( bitFieldData != null && bitFieldData.isWriteable() ) { @@ -617,14 +629,14 @@ public class RegisterBitFieldVMNode extends AbstractExpressionVMNode * Note we are complex COMBO and return the right editor. */ return new RegisterBitFieldCellModifier( - getDMVMProvider(), fFormattedPrefStore, BitFieldEditorStyle.BITFIELDCOMBO, fDataAccess ); + getDMVMProvider(), fFormattedPrefStore, BitFieldEditorStyle.BITFIELDCOMBO, getSyncRegisterDataAccess() ); } else { /* * Text editor even if we need to clamp the value entered. */ return new RegisterBitFieldCellModifier( - getDMVMProvider(), fFormattedPrefStore, BitFieldEditorStyle.BITFIELDTEXT, fDataAccess ); + getDMVMProvider(), fFormattedPrefStore, BitFieldEditorStyle.BITFIELDTEXT, getSyncRegisterDataAccess() ); } } else { diff --git a/plugins/org.eclipse.dd.dsf.debug.ui/src/org/eclipse/dd/dsf/debug/internal/provisional/ui/viewmodel/register/RegisterGroupVMNode.java b/plugins/org.eclipse.dd.dsf.debug.ui/src/org/eclipse/dd/dsf/debug/internal/provisional/ui/viewmodel/register/RegisterGroupVMNode.java index 08f15ab6080..733ceb0cb0e 100644 --- a/plugins/org.eclipse.dd.dsf.debug.ui/src/org/eclipse/dd/dsf/debug/internal/provisional/ui/viewmodel/register/RegisterGroupVMNode.java +++ b/plugins/org.eclipse.dd.dsf.debug.ui/src/org/eclipse/dd/dsf/debug/internal/provisional/ui/viewmodel/register/RegisterGroupVMNode.java @@ -80,7 +80,7 @@ public class RegisterGroupVMNode extends AbstractExpressionVMNode if (fExpression != null && adapter.isAssignableFrom(fExpression.getClass())) { return fExpression; } else if (adapter.isAssignableFrom(IWatchExpressionFactoryAdapter2.class)) { - return fRegisterGroupExpressionFactory; + return getWatchExpressionFactory(); } else { return super.getAdapter(adapter); } @@ -112,7 +112,7 @@ public class RegisterGroupVMNode extends AbstractExpressionVMNode * Expected format: Group(GroupName) */ public String createWatchExpression(Object element) throws CoreException { - IRegisterGroupDMData groupData = fSyncRegisterDataAccess.getRegisterGroupDMData(element); + IRegisterGroupDMData groupData = getSyncRegisterDataAccess().getRegisterGroupDMData(element); if (groupData != null) { StringBuffer exprBuf = new StringBuffer(); exprBuf.append("GRP( "); //$NON-NLS-1$ @@ -126,7 +126,7 @@ public class RegisterGroupVMNode extends AbstractExpressionVMNode } final private SyncRegisterDataAccess fSyncRegisterDataAccess; - final protected RegisterGroupExpressionFactory fRegisterGroupExpressionFactory = new RegisterGroupExpressionFactory(); + private IWatchExpressionFactoryAdapter2 fRegisterGroupExpressionFactory = null; private WatchExpressionCellModifier fWatchExpressionCellModifier = new WatchExpressionCellModifier(); public RegisterGroupVMNode(AbstractDMVMProvider provider, DsfSession session, SyncRegisterDataAccess syncDataAccess) { @@ -143,6 +143,13 @@ public class RegisterGroupVMNode extends AbstractExpressionVMNode return fSyncRegisterDataAccess; } + public IWatchExpressionFactoryAdapter2 getWatchExpressionFactory() { + if ( fRegisterGroupExpressionFactory == null ) { + fRegisterGroupExpressionFactory = new RegisterGroupExpressionFactory(); + } + return fRegisterGroupExpressionFactory; + } + /* * (non-Javadoc) * @see org.eclipse.dd.dsf.ui.viewmodel.datamodel.AbstractDMVMNode#updateElementsInSessionThread(org.eclipse.debug.internal.ui.viewers.model.provisional.IChildrenUpdate) diff --git a/plugins/org.eclipse.dd.dsf.debug.ui/src/org/eclipse/dd/dsf/debug/internal/provisional/ui/viewmodel/register/RegisterVMNode.java b/plugins/org.eclipse.dd.dsf.debug.ui/src/org/eclipse/dd/dsf/debug/internal/provisional/ui/viewmodel/register/RegisterVMNode.java index 14a6258f3b5..28a93b721de 100644 --- a/plugins/org.eclipse.dd.dsf.debug.ui/src/org/eclipse/dd/dsf/debug/internal/provisional/ui/viewmodel/register/RegisterVMNode.java +++ b/plugins/org.eclipse.dd.dsf.debug.ui/src/org/eclipse/dd/dsf/debug/internal/provisional/ui/viewmodel/register/RegisterVMNode.java @@ -89,7 +89,7 @@ public class RegisterVMNode extends AbstractExpressionVMNode if (fExpression != null && adapter.isAssignableFrom(fExpression.getClass())) { return fExpression; } else if (adapter.isAssignableFrom(IWatchExpressionFactoryAdapter2.class)) { - return fRegisterExpressionFactory; + return getWatchExpressionFactory(); } else { return super.getAdapter(adapter); } @@ -125,8 +125,8 @@ public class RegisterVMNode extends AbstractExpressionVMNode * Expected format: GRP( GroupName ).REG( RegisterName ) */ public String createWatchExpression(Object element) throws CoreException { - IRegisterGroupDMData groupData = fSyncRegisterDataAccess.getRegisterGroupDMData(element); - IRegisterDMData registerData = fSyncRegisterDataAccess.getRegisterDMData(element); + IRegisterGroupDMData groupData = getSyncRegisterDataAccess().getRegisterGroupDMData(element); + IRegisterDMData registerData = getSyncRegisterDataAccess().getRegisterDMData(element); if (groupData != null && registerData != null) { StringBuffer exprBuf = new StringBuffer(); @@ -141,7 +141,7 @@ public class RegisterVMNode extends AbstractExpressionVMNode } } - final protected RegisterExpressionFactory fRegisterExpressionFactory = new RegisterExpressionFactory(); + private IWatchExpressionFactoryAdapter2 fRegisterExpressionFactory = null; final private SyncRegisterDataAccess fSyncRegisterDataAccess; private final IFormattedValuePreferenceStore fFormattedPrefStore; @@ -164,6 +164,13 @@ public class RegisterVMNode extends AbstractExpressionVMNode return fFormattedPrefStore; } + public IWatchExpressionFactoryAdapter2 getWatchExpressionFactory() { + if ( fRegisterExpressionFactory == null ) { + fRegisterExpressionFactory = new RegisterExpressionFactory(); + } + return fRegisterExpressionFactory; + } + /** * Private data access routine which performs the extra level of data access needed to * get the formatted data value for a specific register. @@ -738,7 +745,7 @@ public class RegisterVMNode extends AbstractExpressionVMNode * See if the register is writable and if so we will created a * cell editor for it. */ - IRegisterDMData regData = fSyncRegisterDataAccess.readRegister(element); + IRegisterDMData regData = getSyncRegisterDataAccess().readRegister(element); if ( regData != null && regData.isWriteable() ) { return new TextCellEditor(parent); @@ -753,7 +760,7 @@ public class RegisterVMNode extends AbstractExpressionVMNode */ public ICellModifier getCellModifier(IPresentationContext context, Object element) { return new RegisterCellModifier( - getDMVMProvider(), fFormattedPrefStore, fSyncRegisterDataAccess ); + getDMVMProvider(), fFormattedPrefStore, getSyncRegisterDataAccess() ); } /*