+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<DependencyChangesRequest, DependencyChanges> {
+
+ private Function1<Tuple0, Boolean> preEventRequest;
+ private Function onEvent;
+
+ public SCLDependencyChangeListener(Function1<Tuple0, Boolean> 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<Tuple0, Boolean> preEventRequest, Function onEvent) {
+ return new SCLDependencyChangeListener(preEventRequest, onEvent);
+ }
+
+}
\ No newline at end of file