X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.modeling.tests%2Fsrc%2Forg%2Fsimantics%2Fmodeling%2Ftests%2Fcommands%2FWaitActiveExperiment.java;fp=bundles%2Forg.simantics.modeling.tests%2Fsrc%2Forg%2Fsimantics%2Fmodeling%2Ftests%2Fcommands%2FWaitActiveExperiment.java;h=efb2fafd12f1cc1e4aeaed1fc583091f71f85865;hb=ca6fcd858a0b82eb1b5a8f12c4d5df30e84393e0;hp=0000000000000000000000000000000000000000;hpb=67fd62f9c742337ec80eef658192db198a0efaac;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.modeling.tests/src/org/simantics/modeling/tests/commands/WaitActiveExperiment.java b/bundles/org.simantics.modeling.tests/src/org/simantics/modeling/tests/commands/WaitActiveExperiment.java new file mode 100644 index 000000000..efb2fafd1 --- /dev/null +++ b/bundles/org.simantics.modeling.tests/src/org/simantics/modeling/tests/commands/WaitActiveExperiment.java @@ -0,0 +1,50 @@ +package org.simantics.modeling.tests.commands; + +import org.simantics.Simantics; +import org.simantics.db.exception.DatabaseException; +import org.simantics.db.testing.base.CommandSequenceTest; +import org.simantics.db.testing.common.WriteCommand; +import org.simantics.project.IProject; +import org.simantics.simulation.experiment.IExperiment; +import org.simantics.simulation.project.IExperimentManager; +import org.simantics.simulation.project.IExperimentManagerListener; + +public class WaitActiveExperiment extends WriteCommand implements IExperimentManagerListener { + + boolean done = false; + + @Override + public void run(CommandSequenceTest environment) throws DatabaseException { + try { + IProject project = Simantics.getProject(); + final IExperimentManager experimentManager = project.getHint(IExperimentManager.KEY_EXPERIMENT_MANAGER); + if (experimentManager != null) { + IExperiment experiment = experimentManager.getActiveExperiment(); + if(experiment == null) { + experimentManager.addListener(this); + while(!done) { + Thread.sleep(50); + } + // Cannot because of bean comparison + //experimentManager.removeListener(this); + } + } + } catch (Exception e) { + throw new DatabaseException(e); + } + } + + @Override + public void activeExperimentLoaded(IExperiment experiment) { + done = true; + } + + @Override + public void activeExperimentUnloaded() { + } + + @Override + public void managerDisposed() { + } + +} \ No newline at end of file