X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.modeling%2Fsrc%2Forg%2Fsimantics%2Fmodeling%2Fscl%2FGraphModuleSourceRepository.java;h=07af09e557109046575ee8556abf20c5cca6ec84;hb=b2c6aed4003ef264fb48eed9ac9f2d0f6c2d5b13;hp=10a217b9da073918575c19bacf98f2925619688e;hpb=593a8f75d9dbc363234002dc500c346afbeba040;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.modeling/src/org/simantics/modeling/scl/GraphModuleSourceRepository.java b/bundles/org.simantics.modeling/src/org/simantics/modeling/scl/GraphModuleSourceRepository.java index 10a217b9d..07af09e55 100644 --- a/bundles/org.simantics.modeling/src/org/simantics/modeling/scl/GraphModuleSourceRepository.java +++ b/bundles/org.simantics.modeling/src/org/simantics/modeling/scl/GraphModuleSourceRepository.java @@ -16,12 +16,13 @@ import org.simantics.db.request.Read; import org.simantics.layer0.Layer0; import org.simantics.modeling.ModelingUtils; import org.simantics.scl.compiler.module.repository.UpdateListener; +import org.simantics.scl.compiler.module.repository.UpdateListener.Observable; import org.simantics.scl.compiler.source.ModuleSource; import org.simantics.scl.compiler.source.StringModuleSource; import org.simantics.scl.compiler.source.repository.ModuleSourceRepository; import org.simantics.scl.runtime.SCLContext; -import org.simantics.structural2.utils.StructuralUtils; import org.simantics.scl.runtime.tuple.Tuple0; +import org.simantics.structural2.utils.StructuralUtils; import gnu.trove.procedure.TObjectProcedure; import gnu.trove.set.hash.THashSet; @@ -54,15 +55,20 @@ public enum GraphModuleSourceRepository implements ModuleSourceRepository { } } - static class ModuleListener implements SyncListener { + static class ModuleListener implements SyncListener, Observable { UpdateListener listener; boolean alreadyExecutedOnce; final String moduleName; public ModuleListener(UpdateListener listener, String moduleName) { this.listener = listener; + this.listener.addObservable(this); this.moduleName = moduleName; } @Override + public void removeListener(UpdateListener listener) { + listener = null; + } + @Override public boolean isDisposed() { return listener == null; }