1 package org.simantics.modeling.scl;
3 import org.simantics.Simantics;
4 import org.simantics.db.MetadataI;
5 import org.simantics.db.ReadGraph;
6 import org.simantics.db.common.changeset.GenericChangeListener;
7 import org.simantics.db.event.ChangeListener;
8 import org.simantics.db.exception.DatabaseException;
9 import org.simantics.db.layer0.genericrelation.DependenciesRelation.DependencyChangesRequest;
10 import org.simantics.db.layer0.genericrelation.DependencyChanges;
11 import org.simantics.scl.runtime.function.Function;
12 import org.simantics.scl.runtime.function.Function1;
13 import org.simantics.scl.runtime.tuple.Tuple0;
15 public class SCLDependencyChangeListener extends GenericChangeListener<DependencyChangesRequest, DependencyChanges> {
17 private Function1<Tuple0, Boolean> preEventRequest;
18 private Function onEvent;
20 public SCLDependencyChangeListener(Function1<Tuple0, Boolean> preEventRequest, Function onEvent) {
21 this.preEventRequest = preEventRequest;
22 this.onEvent = onEvent;
26 public boolean preEventRequest() {
27 return preEventRequest.apply(Tuple0.INSTANCE);
30 @SuppressWarnings("unchecked")
32 public void onEvent(ReadGraph graph, MetadataI metadata, DependencyChanges event) throws DatabaseException {
33 Simantics.applySCLRead(graph, onEvent, metadata, event);
36 public static ChangeListener create(Function1<Tuple0, Boolean> preEventRequest, Function onEvent) {
37 return new SCLDependencyChangeListener(preEventRequest, onEvent);