X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.modeling%2Fsrc%2Forg%2Fsimantics%2Fmodeling%2Fscl%2FSCLDependencyChangeListener.java;fp=bundles%2Forg.simantics.modeling%2Fsrc%2Forg%2Fsimantics%2Fmodeling%2Fscl%2FSCLDependencyChangeListener.java;h=5e043d4a14c6c79554fd75f093802f83a2c2fa32;hp=0000000000000000000000000000000000000000;hb=c7adae2a1ad46c9f316093213df0320b44461606;hpb=547942cd382c0212a72b528aaa85aa686f7c1d83 diff --git a/bundles/org.simantics.modeling/src/org/simantics/modeling/scl/SCLDependencyChangeListener.java b/bundles/org.simantics.modeling/src/org/simantics/modeling/scl/SCLDependencyChangeListener.java new file mode 100644 index 000000000..5e043d4a1 --- /dev/null +++ b/bundles/org.simantics.modeling/src/org/simantics/modeling/scl/SCLDependencyChangeListener.java @@ -0,0 +1,40 @@ +package org.simantics.modeling.scl; + +import org.simantics.Simantics; +import org.simantics.db.MetadataI; +import org.simantics.db.ReadGraph; +import org.simantics.db.common.changeset.GenericChangeListener; +import org.simantics.db.event.ChangeListener; +import org.simantics.db.exception.DatabaseException; +import org.simantics.db.layer0.genericrelation.DependenciesRelation.DependencyChangesRequest; +import org.simantics.db.layer0.genericrelation.DependencyChanges; +import org.simantics.scl.runtime.function.Function; +import org.simantics.scl.runtime.function.Function1; +import org.simantics.scl.runtime.tuple.Tuple0; + +public class SCLDependencyChangeListener extends GenericChangeListener { + + private Function1 preEventRequest; + private Function onEvent; + + public SCLDependencyChangeListener(Function1 preEventRequest, Function onEvent) { + this.preEventRequest = preEventRequest; + this.onEvent = onEvent; + } + + @Override + public boolean preEventRequest() { + return preEventRequest.apply(Tuple0.INSTANCE); + } + + @SuppressWarnings("unchecked") + @Override + public void onEvent(ReadGraph graph, MetadataI metadata, DependencyChanges event) throws DatabaseException { + Simantics.applySCLRead(graph, onEvent, metadata, event); + } + + public static ChangeListener create(Function1 preEventRequest, Function onEvent) { + return new SCLDependencyChangeListener(preEventRequest, onEvent); + } + +} \ No newline at end of file