1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-29 19:45:01 +02:00

Bugzilla 241418.

This commit is contained in:
Randy Rohrbach 2008-07-18 18:09:52 +00:00
parent ca0b52a232
commit 22e14ab218
3 changed files with 46 additions and 20 deletions

View file

@ -99,7 +99,7 @@ public class RegisterBitFieldVMNode extends AbstractExpressionVMNode
if (fExpression != null && adapter.isAssignableFrom(fExpression.getClass())) { if (fExpression != null && adapter.isAssignableFrom(fExpression.getClass())) {
return fExpression; return fExpression;
} else if (adapter.isAssignableFrom(IWatchExpressionFactoryAdapter2.class)) { } else if (adapter.isAssignableFrom(IWatchExpressionFactoryAdapter2.class)) {
return fBitFieldExpressionFactory; return getWatchExpressionFactory();
} else { } else {
return super.getAdapter(adapter); return super.getAdapter(adapter);
} }
@ -131,9 +131,9 @@ public class RegisterBitFieldVMNode extends AbstractExpressionVMNode
* Expected format: GRP( GroupName ).REG( RegisterName ).BFLD( BitFieldname ) * Expected format: GRP( GroupName ).REG( RegisterName ).BFLD( BitFieldname )
*/ */
public String createWatchExpression(Object element) throws CoreException { public String createWatchExpression(Object element) throws CoreException {
IRegisterGroupDMData groupData = fDataAccess.getRegisterGroupDMData(element); IRegisterGroupDMData groupData = getSyncRegisterDataAccess().getRegisterGroupDMData(element);
IRegisterDMData registerData = fDataAccess.getRegisterDMData(element); IRegisterDMData registerData = getSyncRegisterDataAccess().getRegisterDMData(element);
IBitFieldDMData bitFieldData = fDataAccess.getBitFieldDMData(element); IBitFieldDMData bitFieldData = getSyncRegisterDataAccess().getBitFieldDMData(element);
if (groupData != null && registerData != null && bitFieldData != null) { if (groupData != null && registerData != null && bitFieldData != null) {
StringBuffer exprBuf = new StringBuffer(); StringBuffer exprBuf = new StringBuffer();
@ -149,13 +149,13 @@ public class RegisterBitFieldVMNode extends AbstractExpressionVMNode
} }
} }
private SyncRegisterDataAccess fDataAccess = null; private SyncRegisterDataAccess fSyncRegisterDataAccess = null;
final protected BitFieldExpressionFactory fBitFieldExpressionFactory = new BitFieldExpressionFactory(); private IWatchExpressionFactoryAdapter2 fBitFieldExpressionFactory = null;
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, IRegisters.IBitFieldDMContext.class);
fDataAccess = access; fSyncRegisterDataAccess = access;
fFormattedPrefStore = prefStore; fFormattedPrefStore = prefStore;
} }
@ -168,6 +168,18 @@ public class RegisterBitFieldVMNode extends AbstractExpressionVMNode
public IFormattedValuePreferenceStore getPreferenceStore() { public IFormattedValuePreferenceStore getPreferenceStore() {
return fFormattedPrefStore; 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 * Private data access routine which performs the extra level of data access needed to
* get the formatted data value for a specific register. * 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 * editor. If there are bit groups then the modifier will check the size of the
* value being entered. * value being entered.
*/ */
IBitFieldDMData bitFieldData = fDataAccess.readBitField(element); IBitFieldDMData bitFieldData = getSyncRegisterDataAccess().readBitField(element);
if ( bitFieldData != null && bitFieldData.isWriteable() ) { 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 * 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. * 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() ) { if ( bitFieldData != null && bitFieldData.isWriteable() ) {
@ -617,14 +629,14 @@ public class RegisterBitFieldVMNode extends AbstractExpressionVMNode
* Note we are complex COMBO and return the right editor. * Note we are complex COMBO and return the right editor.
*/ */
return new RegisterBitFieldCellModifier( return new RegisterBitFieldCellModifier(
getDMVMProvider(), fFormattedPrefStore, BitFieldEditorStyle.BITFIELDCOMBO, fDataAccess ); getDMVMProvider(), fFormattedPrefStore, BitFieldEditorStyle.BITFIELDCOMBO, getSyncRegisterDataAccess() );
} }
else { else {
/* /*
* Text editor even if we need to clamp the value entered. * Text editor even if we need to clamp the value entered.
*/ */
return new RegisterBitFieldCellModifier( return new RegisterBitFieldCellModifier(
getDMVMProvider(), fFormattedPrefStore, BitFieldEditorStyle.BITFIELDTEXT, fDataAccess ); getDMVMProvider(), fFormattedPrefStore, BitFieldEditorStyle.BITFIELDTEXT, getSyncRegisterDataAccess() );
} }
} }
else { else {

View file

@ -80,7 +80,7 @@ public class RegisterGroupVMNode extends AbstractExpressionVMNode
if (fExpression != null && adapter.isAssignableFrom(fExpression.getClass())) { if (fExpression != null && adapter.isAssignableFrom(fExpression.getClass())) {
return fExpression; return fExpression;
} else if (adapter.isAssignableFrom(IWatchExpressionFactoryAdapter2.class)) { } else if (adapter.isAssignableFrom(IWatchExpressionFactoryAdapter2.class)) {
return fRegisterGroupExpressionFactory; return getWatchExpressionFactory();
} else { } else {
return super.getAdapter(adapter); return super.getAdapter(adapter);
} }
@ -112,7 +112,7 @@ public class RegisterGroupVMNode extends AbstractExpressionVMNode
* Expected format: Group(GroupName) * Expected format: Group(GroupName)
*/ */
public String createWatchExpression(Object element) throws CoreException { public String createWatchExpression(Object element) throws CoreException {
IRegisterGroupDMData groupData = fSyncRegisterDataAccess.getRegisterGroupDMData(element); IRegisterGroupDMData groupData = getSyncRegisterDataAccess().getRegisterGroupDMData(element);
if (groupData != null) { if (groupData != null) {
StringBuffer exprBuf = new StringBuffer(); StringBuffer exprBuf = new StringBuffer();
exprBuf.append("GRP( "); //$NON-NLS-1$ exprBuf.append("GRP( "); //$NON-NLS-1$
@ -126,7 +126,7 @@ public class RegisterGroupVMNode extends AbstractExpressionVMNode
} }
final private SyncRegisterDataAccess fSyncRegisterDataAccess; final private SyncRegisterDataAccess fSyncRegisterDataAccess;
final protected RegisterGroupExpressionFactory fRegisterGroupExpressionFactory = new RegisterGroupExpressionFactory(); private IWatchExpressionFactoryAdapter2 fRegisterGroupExpressionFactory = null;
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) {
@ -143,6 +143,13 @@ public class RegisterGroupVMNode extends AbstractExpressionVMNode
return fSyncRegisterDataAccess; return fSyncRegisterDataAccess;
} }
public IWatchExpressionFactoryAdapter2 getWatchExpressionFactory() {
if ( fRegisterGroupExpressionFactory == null ) {
fRegisterGroupExpressionFactory = new RegisterGroupExpressionFactory();
}
return fRegisterGroupExpressionFactory;
}
/* /*
* (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)

View file

@ -89,7 +89,7 @@ public class RegisterVMNode extends AbstractExpressionVMNode
if (fExpression != null && adapter.isAssignableFrom(fExpression.getClass())) { if (fExpression != null && adapter.isAssignableFrom(fExpression.getClass())) {
return fExpression; return fExpression;
} else if (adapter.isAssignableFrom(IWatchExpressionFactoryAdapter2.class)) { } else if (adapter.isAssignableFrom(IWatchExpressionFactoryAdapter2.class)) {
return fRegisterExpressionFactory; return getWatchExpressionFactory();
} else { } else {
return super.getAdapter(adapter); return super.getAdapter(adapter);
} }
@ -125,8 +125,8 @@ public class RegisterVMNode extends AbstractExpressionVMNode
* Expected format: GRP( GroupName ).REG( RegisterName ) * Expected format: GRP( GroupName ).REG( RegisterName )
*/ */
public String createWatchExpression(Object element) throws CoreException { public String createWatchExpression(Object element) throws CoreException {
IRegisterGroupDMData groupData = fSyncRegisterDataAccess.getRegisterGroupDMData(element); IRegisterGroupDMData groupData = getSyncRegisterDataAccess().getRegisterGroupDMData(element);
IRegisterDMData registerData = fSyncRegisterDataAccess.getRegisterDMData(element); IRegisterDMData registerData = getSyncRegisterDataAccess().getRegisterDMData(element);
if (groupData != null && registerData != null) { if (groupData != null && registerData != null) {
StringBuffer exprBuf = new StringBuffer(); 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; final private SyncRegisterDataAccess fSyncRegisterDataAccess;
private final IFormattedValuePreferenceStore fFormattedPrefStore; private final IFormattedValuePreferenceStore fFormattedPrefStore;
@ -164,6 +164,13 @@ public class RegisterVMNode extends AbstractExpressionVMNode
return fFormattedPrefStore; 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 * Private data access routine which performs the extra level of data access needed to
* get the formatted data value for a specific register. * 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 * See if the register is writable and if so we will created a
* cell editor for it. * cell editor for it.
*/ */
IRegisterDMData regData = fSyncRegisterDataAccess.readRegister(element); IRegisterDMData regData = getSyncRegisterDataAccess().readRegister(element);
if ( regData != null && regData.isWriteable() ) { if ( regData != null && regData.isWriteable() ) {
return new TextCellEditor(parent); return new TextCellEditor(parent);
@ -753,7 +760,7 @@ public class RegisterVMNode extends AbstractExpressionVMNode
*/ */
public ICellModifier getCellModifier(IPresentationContext context, Object element) { public ICellModifier getCellModifier(IPresentationContext context, Object element) {
return new RegisterCellModifier( return new RegisterCellModifier(
getDMVMProvider(), fFormattedPrefStore, fSyncRegisterDataAccess ); getDMVMProvider(), fFormattedPrefStore, getSyncRegisterDataAccess() );
} }
/* /*