1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-25 18:05:33 +02:00

Bug 379317 - SimpleDisplayExecutable posts runnables as separate UI event queue elements

Updated the performance test to better simulate debuggers' view model.
This commit is contained in:
Pawel Piech 2012-05-14 14:27:04 -07:00
parent 03d1253f68
commit b83750eae0
2 changed files with 67 additions and 32 deletions

View file

@ -15,7 +15,6 @@ import org.eclipse.cdt.dsf.concurrent.IDsfStatusConstants;
import org.eclipse.cdt.dsf.concurrent.RequestMonitor;
import org.eclipse.cdt.dsf.debug.ui.viewmodel.numberformat.FormattedValueLabelText;
import org.eclipse.cdt.dsf.ui.viewmodel.AbstractVMNode;
import org.eclipse.cdt.dsf.ui.viewmodel.AbstractVMProvider;
import org.eclipse.cdt.dsf.ui.viewmodel.IRootVMNode;
import org.eclipse.cdt.dsf.ui.viewmodel.VMDelta;
import org.eclipse.cdt.dsf.ui.viewmodel.properties.IElementPropertiesProvider;
@ -60,11 +59,18 @@ public class TestModelVMNode extends AbstractVMNode implements IRootVMNode, IEle
fLabelProvider.update(updates);
}
public TestModelVMNode(AbstractVMProvider provider) {
public TestModelVMNode(TestModelVMProvider provider) {
super(provider);
}
public void update(IHasChildrenUpdate[] updates) {
private TestModelVMProvider getTestProvider() {
return (TestModelVMProvider)getVMProvider();
}
public void update(final IHasChildrenUpdate[] updates) {
getTestProvider().getDsfExecutor().execute(new Runnable() {
public void run() {
for (IHasChildrenUpdate update : updates) {
if (update.getElement() instanceof TestElementVMContext) {
TestElement element = ((TestElementVMContext)update.getElement()).getElement();
@ -73,8 +79,12 @@ public class TestModelVMNode extends AbstractVMNode implements IRootVMNode, IEle
update.done();
}
}
});
}
public void update(IChildrenCountUpdate[] updates) {
public void update(final IChildrenCountUpdate[] updates) {
getTestProvider().getDsfExecutor().execute(new Runnable() {
public void run() {
for (IChildrenCountUpdate update : updates) {
if (update.getElement() instanceof TestElementVMContext) {
TestElement element = ((TestElementVMContext)update.getElement()).getElement();
@ -83,8 +93,12 @@ public class TestModelVMNode extends AbstractVMNode implements IRootVMNode, IEle
update.done();
}
}
});
}
public void update(IChildrenUpdate[] updates) {
public void update(final IChildrenUpdate[] updates) {
getTestProvider().getDsfExecutor().execute(new Runnable() {
public void run() {
for (IChildrenUpdate update : updates) {
if (update.getElement() instanceof TestElementVMContext) {
TestElement element = ((TestElementVMContext)update.getElement()).getElement();
@ -93,8 +107,12 @@ public class TestModelVMNode extends AbstractVMNode implements IRootVMNode, IEle
update.done();
}
}
});
}
public void update(IPropertiesUpdate[] updates) {
public void update(final IPropertiesUpdate[] updates) {
getTestProvider().getDsfExecutor().execute(new Runnable() {
public void run() {
for (IPropertiesUpdate update : updates) {
if (update.getElement() instanceof TestElementVMContext) {
TestElement element = ((TestElementVMContext)update.getElement()).getElement();
@ -103,6 +121,8 @@ public class TestModelVMNode extends AbstractVMNode implements IRootVMNode, IEle
update.done();
}
}
});
}
private void fillUpdateWithTestElements(IChildrenUpdate update, TestElement[] elements) {
int updateIdx = update.getOffset() != -1 ? update.getOffset() : 0;

View file

@ -10,6 +10,8 @@
*******************************************************************************/
package org.eclipse.cdt.tests.dsf.vm;
import org.eclipse.cdt.dsf.concurrent.DefaultDsfExecutor;
import org.eclipse.cdt.dsf.concurrent.DsfExecutor;
import org.eclipse.cdt.dsf.ui.viewmodel.AbstractVMAdapter;
import org.eclipse.cdt.dsf.ui.viewmodel.AbstractVMProvider;
import org.eclipse.cdt.dsf.ui.viewmodel.IVMModelProxy;
@ -23,13 +25,26 @@ import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationCont
*/
public class TestModelVMProvider extends AbstractVMProvider {
private DsfExecutor fDsfExecutor;
public TestModelVMProvider(AbstractVMAdapter adapter, IPresentationContext context) {
super(adapter, context);
fDsfExecutor = new DefaultDsfExecutor("TestModelVMProvider");
setRootNode(new TestModelVMNode(this));
addChildNodes(getRootVMNode(), new IVMNode[] { getRootVMNode() });
}
@Override
public void dispose() {
super.dispose();
fDsfExecutor.shutdown();
}
public DsfExecutor getDsfExecutor() {
return fDsfExecutor;
}
public TestElementVMContext getElementVMContext(IPresentationContext context, TestElement element) {
return ((TestModelVMNode)getRootVMNode()).createVMContext(element);