1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-18 22:45:23 +02:00

[246320] - [registers][view model] Register VM nodes do not use findDMCInPath() in encodeMemento()/compareMemento()

This commit is contained in:
Pawel Piech 2008-09-05 04:29:34 +00:00
parent cefb06a952
commit 73572c5065
3 changed files with 184 additions and 303 deletions

View file

@ -71,7 +71,6 @@ import org.eclipse.jface.viewers.ICellModifier;
import org.eclipse.jface.viewers.TextCellEditor; import org.eclipse.jface.viewers.TextCellEditor;
import org.eclipse.jface.viewers.TreePath; import org.eclipse.jface.viewers.TreePath;
import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.IMemento;
@SuppressWarnings("restriction") @SuppressWarnings("restriction")
public class RegisterBitFieldVMNode extends AbstractExpressionVMNode public class RegisterBitFieldVMNode extends AbstractExpressionVMNode
@ -806,48 +805,34 @@ public class RegisterBitFieldVMNode extends AbstractExpressionVMNode
private final String MEMENTO_NAME = "BITFIELD_MEMENTO_NAME"; //$NON-NLS-1$ private final String MEMENTO_NAME = "BITFIELD_MEMENTO_NAME"; //$NON-NLS-1$
public void compareElements(IElementCompareRequest[] requests) { public void compareElements(IElementCompareRequest[] requests) {
for ( final IElementCompareRequest request : requests ) { for ( final IElementCompareRequest request : requests ) {
final String mementoName = request.getMemento().getString(MEMENTO_NAME);
Object element = request.getElement(); final IBitFieldDMContext regDmc = findDmcInPath(request.getViewerInput(), request.getElementPath(), IBitFieldDMContext.class);
final IMemento memento = request.getMemento(); if (regDmc == null || mementoName == null) {
final String mementoName = memento.getString(MEMENTO_NAME);
if (mementoName != null) {
if (element instanceof IDMVMContext) {
IDMContext dmc = ((IDMVMContext)element).getDMContext();
if ( dmc instanceof IBitFieldDMContext )
{
final IBitFieldDMContext bitFieldDmc = (IBitFieldDMContext) dmc;
final IRegisters regService = getServicesTracker().getService(IRegisters.class);
/*
* Now make sure the register group is the one we want.
*/
final DataRequestMonitor<IBitFieldDMData> dataDone = new DataRequestMonitor<IBitFieldDMData>(regService.getExecutor(), null) {
@Override
protected void handleCompleted() {
if ( getStatus().isOK() ) {
request.setEqual( mementoName.equals( "BitField." + getData().getName() ) ); //$NON-NLS-1$
}
request.done(); request.done();
continue;
} }
};
/* // Now go get the model data for the single register group found.
* Now go get the model data for the single register group found.
*/
try { try {
getSession().getExecutor().execute(new DsfRunnable() { getSession().getExecutor().execute(new DsfRunnable() {
public void run() { public void run() {
final IRegisters regService = getServicesTracker().getService(IRegisters.class); final IRegisters regService = getServicesTracker().getService(IRegisters.class);
if ( regService != null ) { if ( regService != null ) {
regService.getBitFieldData( bitFieldDmc, dataDone ); regService.getBitFieldData(
regDmc,
new DataRequestMonitor<IBitFieldDMData>(regService.getExecutor(), null) {
@Override
protected void handleCompleted() {
if ( getStatus().isOK() ) {
// Now make sure the register group is the one we want.
request.setEqual( mementoName.equals( "BitField." + getData().getName() ) ); //$NON-NLS-1$
} }
else { request.done();
}
});
} else {
request.done(); request.done();
} }
} }
@ -855,12 +840,6 @@ public class RegisterBitFieldVMNode extends AbstractExpressionVMNode
} catch (RejectedExecutionException e) { } catch (RejectedExecutionException e) {
request.done(); request.done();
} }
continue;
}
}
}
request.done();
} }
} }
@ -869,45 +848,32 @@ public class RegisterBitFieldVMNode extends AbstractExpressionVMNode
* @see org.eclipse.debug.internal.ui.viewers.model.provisional.IElementMementoProvider#encodeElements(org.eclipse.debug.internal.ui.viewers.model.provisional.IElementMementoRequest[]) * @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) { public void encodeElements(IElementMementoRequest[] requests) {
for ( final IElementMementoRequest request : requests ) { for ( final IElementMementoRequest request : requests ) {
final IBitFieldDMContext regDmc = findDmcInPath(request.getViewerInput(), request.getElementPath(), IBitFieldDMContext.class);
Object element = request.getElement(); if (regDmc == null) {
final IMemento memento = request.getMemento();
if (element instanceof IDMVMContext) {
IDMContext dmc = ((IDMVMContext)element).getDMContext();
if ( dmc instanceof IBitFieldDMContext )
{
final IBitFieldDMContext bitFieldDmc = (IBitFieldDMContext) dmc;
final IRegisters regService = getServicesTracker().getService(IRegisters.class);
/*
* Now make sure the register group is the one we want.
*/
final DataRequestMonitor<IBitFieldDMData> dataDone = new DataRequestMonitor<IBitFieldDMData>(regService.getExecutor(), null) {
@Override
protected void handleCompleted() {
if ( getStatus().isOK() ) {
memento.putString(MEMENTO_NAME, "BitField." + getData().getName()); //$NON-NLS-1$
}
request.done(); request.done();
continue;
} }
};
/* // Now go get the model data for the single register group found.
* Now go get the model data for the single register group found.
*/
try { try {
getSession().getExecutor().execute(new DsfRunnable() { getSession().getExecutor().execute(new DsfRunnable() {
public void run() { public void run() {
final IRegisters regService = getServicesTracker().getService(IRegisters.class); final IRegisters regService = getServicesTracker().getService(IRegisters.class);
if ( regService != null ) { if ( regService != null ) {
regService.getBitFieldData( bitFieldDmc, dataDone ); regService.getBitFieldData(
regDmc,
new DataRequestMonitor<IBitFieldDMData>(regService.getExecutor(), null) {
@Override
protected void handleCompleted() {
if ( getStatus().isOK() ) {
// Now make sure the register group is the one we want.
request.getMemento().putString(MEMENTO_NAME, "BitField." + getData().getName()); //$NON-NLS-1$
} }
else { request.done();
}
});
} else {
request.done(); request.done();
} }
} }
@ -915,11 +881,6 @@ public class RegisterBitFieldVMNode extends AbstractExpressionVMNode
} catch (RejectedExecutionException e) { } catch (RejectedExecutionException e) {
request.done(); request.done();
} }
continue;
}
}
request.done();
} }
} }
} }

View file

@ -58,7 +58,6 @@ import org.eclipse.jface.viewers.ICellModifier;
import org.eclipse.jface.viewers.TextCellEditor; import org.eclipse.jface.viewers.TextCellEditor;
import org.eclipse.jface.viewers.TreePath; import org.eclipse.jface.viewers.TreePath;
import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.IMemento;
@SuppressWarnings("restriction") @SuppressWarnings("restriction")
public class RegisterGroupVMNode extends AbstractExpressionVMNode public class RegisterGroupVMNode extends AbstractExpressionVMNode
@ -500,48 +499,34 @@ public class RegisterGroupVMNode extends AbstractExpressionVMNode
private final String MEMENTO_NAME = "GROUP_MEMENTO_NAME"; //$NON-NLS-1$ private final String MEMENTO_NAME = "GROUP_MEMENTO_NAME"; //$NON-NLS-1$
public void compareElements(IElementCompareRequest[] requests) { public void compareElements(IElementCompareRequest[] requests) {
for (final IElementCompareRequest request : requests ) { for (final IElementCompareRequest request : requests ) {
final IRegisterGroupDMContext regDmc = findDmcInPath(request.getViewerInput(), request.getElementPath(), IRegisterGroupDMContext.class);
final String mementoName = request.getMemento().getString(MEMENTO_NAME);
Object element = request.getElement(); if (regDmc == null || mementoName == null) {
final IMemento memento = request.getMemento();
final String mementoName = memento.getString(MEMENTO_NAME);
if (mementoName != null) {
if (element instanceof IDMVMContext) {
IDMContext dmc = ((IDMVMContext)element).getDMContext();
if ( dmc instanceof IRegisterGroupDMContext )
{
final IRegisterGroupDMContext regDmc = (IRegisterGroupDMContext) dmc;
final IRegisters regService = getServicesTracker().getService(IRegisters.class);
/*
* Now make sure the register group is the one we want.
*/
final DataRequestMonitor<IRegisterGroupDMData> regGroupDataDone = new DataRequestMonitor<IRegisterGroupDMData>(regService.getExecutor(), null) {
@Override
protected void handleCompleted() {
if ( getStatus().isOK() ) {
request.setEqual( mementoName.equals( "Group." + getData().getName()) ); //$NON-NLS-1$
}
request.done(); request.done();
continue;
} }
};
/* // Now go get the model data for the single register group found.
* Now go get the model data for the single register group found.
*/
try { try {
getSession().getExecutor().execute(new DsfRunnable() { getSession().getExecutor().execute(new DsfRunnable() {
public void run() { public void run() {
final IRegisters regService = getServicesTracker().getService(IRegisters.class); final IRegisters regService = getServicesTracker().getService(IRegisters.class);
if ( regService != null ) { if ( regService != null ) {
regService.getRegisterGroupData( regDmc, regGroupDataDone ); regService.getRegisterGroupData(
regDmc,
new DataRequestMonitor<IRegisterGroupDMData>(regService.getExecutor(), null) {
@Override
protected void handleCompleted() {
if ( getStatus().isOK() ) {
// Now make sure the register group is the one we want.
request.setEqual( mementoName.equals( "Group." + getData().getName()) ); //$NON-NLS-1$
} }
else { request.done();
}
});
} else {
request.done(); request.done();
} }
} }
@ -549,12 +534,6 @@ public class RegisterGroupVMNode extends AbstractExpressionVMNode
} catch (RejectedExecutionException e) { } catch (RejectedExecutionException e) {
request.done(); request.done();
} }
continue;
}
}
}
request.done();
} }
} }
@ -563,46 +542,32 @@ public class RegisterGroupVMNode extends AbstractExpressionVMNode
* @see org.eclipse.debug.internal.ui.viewers.model.provisional.IElementMementoProvider#encodeElements(org.eclipse.debug.internal.ui.viewers.model.provisional.IElementMementoRequest[]) * @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) { public void encodeElements(IElementMementoRequest[] requests) {
for ( final IElementMementoRequest request : requests ) { for ( final IElementMementoRequest request : requests ) {
final IRegisterGroupDMContext regDmc = findDmcInPath(request.getViewerInput(), request.getElementPath(), IRegisterGroupDMContext.class);
Object element = request.getElement(); if (regDmc == null) {
final IMemento memento = request.getMemento();
if (element instanceof IDMVMContext) {
IDMContext dmc = ((IDMVMContext)element).getDMContext();
if ( dmc instanceof IRegisterGroupDMContext )
{
final IRegisterGroupDMContext regDmc = (IRegisterGroupDMContext) dmc;
final IRegisters regService = getServicesTracker().getService(IRegisters.class);
/*
* Now make sure the register group is the one we want.
*/
final DataRequestMonitor<IRegisterGroupDMData> regGroupDataDone = new DataRequestMonitor<IRegisterGroupDMData>(regService.getExecutor(), null) {
@Override
protected void handleCompleted() {
if ( getStatus().isOK() ) {
memento.putString(MEMENTO_NAME, "Group." + getData().getName()); //$NON-NLS-1$
}
request.done(); request.done();
continue;
} }
};
/* // Now go get the model data for the single register group found.
* Now go get the model data for the single register group found.
*/
try { try {
getSession().getExecutor().execute(new DsfRunnable() { getSession().getExecutor().execute(new DsfRunnable() {
public void run() { public void run() {
final IRegisters regService = getServicesTracker().getService(IRegisters.class); final IRegisters regService = getServicesTracker().getService(IRegisters.class);
if ( regService != null ) { if ( regService != null ) {
regService.getRegisterGroupData( regDmc, regGroupDataDone ); regService.getRegisterGroupData(
regDmc,
new DataRequestMonitor<IRegisterGroupDMData>(regService.getExecutor(), null) {
@Override
protected void handleCompleted() {
if ( getStatus().isOK() ) {
// Now make sure the register group is the one we want.
request.getMemento().putString(MEMENTO_NAME, "Group." + getData().getName()); //$NON-NLS-1$
} }
else { request.done();
}
});
} else {
request.done(); request.done();
} }
} }
@ -610,11 +575,6 @@ public class RegisterGroupVMNode extends AbstractExpressionVMNode
} catch (RejectedExecutionException e) { } catch (RejectedExecutionException e) {
request.done(); request.done();
} }
continue;
}
}
request.done();
} }
} }
} }

View file

@ -67,7 +67,6 @@ import org.eclipse.jface.viewers.ICellModifier;
import org.eclipse.jface.viewers.TextCellEditor; import org.eclipse.jface.viewers.TextCellEditor;
import org.eclipse.jface.viewers.TreePath; import org.eclipse.jface.viewers.TreePath;
import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.IMemento;
@SuppressWarnings("restriction") @SuppressWarnings("restriction")
public class RegisterVMNode extends AbstractExpressionVMNode public class RegisterVMNode extends AbstractExpressionVMNode
@ -757,48 +756,33 @@ public class RegisterVMNode extends AbstractExpressionVMNode
private final String MEMENTO_NAME = "REGISTER_MEMENTO_NAME"; //$NON-NLS-1$ private final String MEMENTO_NAME = "REGISTER_MEMENTO_NAME"; //$NON-NLS-1$
public void compareElements(IElementCompareRequest[] requests) { public void compareElements(IElementCompareRequest[] requests) {
for ( final IElementCompareRequest request : requests ) { for ( final IElementCompareRequest request : requests ) {
final IRegisterDMContext regDmc = findDmcInPath(request.getViewerInput(), request.getElementPath(), IRegisterDMContext.class);
final String mementoName = request.getMemento().getString(MEMENTO_NAME);
if (regDmc == null || mementoName == null) {
request.done();
continue;
}
Object element = request.getElement(); // Now go get the model data for the single register group found.
final IMemento memento = request.getMemento(); try {
final String mementoName = memento.getString(MEMENTO_NAME); getSession().getExecutor().execute(new DsfRunnable() {
public void run() {
if (mementoName != null) {
if (element instanceof IDMVMContext) {
IDMContext dmc = ((IDMVMContext)element).getDMContext();
if ( dmc instanceof IRegisterDMContext )
{
final IRegisterDMContext regDmc = (IRegisterDMContext) dmc;
final IRegisters regService = getServicesTracker().getService(IRegisters.class); final IRegisters regService = getServicesTracker().getService(IRegisters.class);
if ( regService != null ) {
/* regService.getRegisterData(
* Now make sure the register group is the one we want. regDmc,
*/ new DataRequestMonitor<IRegisterDMData>(regService.getExecutor(), null) {
final DataRequestMonitor<IRegisterDMData> dataDone = new DataRequestMonitor<IRegisterDMData>(regService.getExecutor(), null) {
@Override @Override
protected void handleCompleted() { protected void handleCompleted() {
if ( getStatus().isOK() ) { if ( getStatus().isOK() ) {
// Now make sure the register group is the one we want.
request.setEqual( mementoName.equals( "Register." + getData().getName() ) ); //$NON-NLS-1$ request.setEqual( mementoName.equals( "Register." + getData().getName() ) ); //$NON-NLS-1$
} }
request.done(); request.done();
} }
}; });
} else {
/*
* Now go get the model data for the single register group found.
*/
try {
getSession().getExecutor().execute(new DsfRunnable() {
public void run() {
IRegisters regService = getServicesTracker().getService(IRegisters.class);
if ( regService != null ) {
regService.getRegisterData( regDmc, dataDone );
}
else {
request.done(); request.done();
} }
} }
@ -806,12 +790,6 @@ public class RegisterVMNode extends AbstractExpressionVMNode
} catch (RejectedExecutionException e) { } catch (RejectedExecutionException e) {
request.done(); request.done();
} }
continue;
}
}
}
request.done();
} }
} }
@ -820,45 +798,32 @@ public class RegisterVMNode extends AbstractExpressionVMNode
* @see org.eclipse.debug.internal.ui.viewers.model.provisional.IElementMementoProvider#encodeElements(org.eclipse.debug.internal.ui.viewers.model.provisional.IElementMementoRequest[]) * @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) { public void encodeElements(IElementMementoRequest[] requests) {
for ( final IElementMementoRequest request : requests ) { for ( final IElementMementoRequest request : requests ) {
final IRegisterDMContext regDmc = findDmcInPath(request.getViewerInput(), request.getElementPath(), IRegisterDMContext.class);
Object element = request.getElement(); if (regDmc == null) {
final IMemento memento = request.getMemento();
if (element instanceof IDMVMContext) {
IDMContext dmc = ((IDMVMContext)element).getDMContext();
if ( dmc instanceof IRegisterDMContext )
{
final IRegisterDMContext regDmc = (IRegisterDMContext) dmc;
final IRegisters regService = getServicesTracker().getService(IRegisters.class);
/*
* Now make sure the register group is the one we want.
*/
final DataRequestMonitor<IRegisterDMData> dataDone = new DataRequestMonitor<IRegisterDMData>(regService.getExecutor(), null) {
@Override
protected void handleCompleted() {
if ( getStatus().isOK() ) {
memento.putString(MEMENTO_NAME, "Register." + getData().getName()); //$NON-NLS-1$
}
request.done(); request.done();
continue;
} }
};
/* // Now go get the model data for the single register group found.
* Now go get the model data for the single register group found.
*/
try { try {
getSession().getExecutor().execute(new DsfRunnable() { getSession().getExecutor().execute(new DsfRunnable() {
public void run() { public void run() {
IRegisters regService = getServicesTracker().getService(IRegisters.class); final IRegisters regService = getServicesTracker().getService(IRegisters.class);
if ( regService != null ) { if ( regService != null ) {
regService.getRegisterData( regDmc, dataDone ); regService.getRegisterData(
regDmc,
new DataRequestMonitor<IRegisterDMData>(regService.getExecutor(), null) {
@Override
protected void handleCompleted() {
if ( getStatus().isOK() ) {
// Now make sure the register group is the one we want.
request.getMemento().putString(MEMENTO_NAME, "Register." + getData().getName()); //$NON-NLS-1$
} }
else { request.done();
}
});
} else {
request.done(); request.done();
} }
} }
@ -866,11 +831,6 @@ public class RegisterVMNode extends AbstractExpressionVMNode
} catch (RejectedExecutionException e) { } catch (RejectedExecutionException e) {
request.done(); request.done();
} }
continue;
}
}
request.done();
} }
} }
} }