X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.district.network%2Fsrc%2Forg%2Fsimantics%2Fdistrict%2Fnetwork%2Fprofile%2FDNElementColorStyle.java;h=859faa67e999be5ae09b63dfdcfdab0b91d97302;hb=7851902c16663a27134ec1c8f72e3206b4d47dad;hp=682c91fb1d00782b53ddae99bba9e875b1d14bcf;hpb=2cf7ae447c79df6240b67fd3ca4f0338bdae8c00;p=simantics%2Fdistrict.git diff --git a/org.simantics.district.network/src/org/simantics/district/network/profile/DNElementColorStyle.java b/org.simantics.district.network/src/org/simantics/district/network/profile/DNElementColorStyle.java index 682c91fb..859faa67 100644 --- a/org.simantics.district.network/src/org/simantics/district/network/profile/DNElementColorStyle.java +++ b/org.simantics.district.network/src/org/simantics/district/network/profile/DNElementColorStyle.java @@ -7,7 +7,6 @@ import org.simantics.db.ReadGraph; import org.simantics.db.Resource; import org.simantics.db.common.procedure.adapter.TransientCacheAsyncListener; import org.simantics.db.exception.DatabaseException; -import org.simantics.diagram.profile.StyleBase; import org.simantics.scenegraph.INode; import org.simantics.scenegraph.g2d.nodes.SingleElementNode; import org.simantics.scenegraph.profile.EvaluationContext; @@ -17,30 +16,37 @@ import org.simantics.scenegraph.profile.common.ProfileVariables; * @author Tuukka Lehtonen * @since 1.35.0 */ -public class DNElementColorStyle extends StyleBase { +public class DNElementColorStyle extends ThrottledStyleBase { private static final boolean DEBUG = false; @Override - public Color calculateStyle(ReadGraph graph, Resource runtimeDiagram, Resource entry, Resource groupItem) throws DatabaseException { + public Color calculateThrottledStyle(ReadGraph graph, Resource runtimeDiagram, Resource entry, Resource groupItem) throws DatabaseException { DiagramSettings ds = graph.syncRequest(new DiagramSettingsRequest(runtimeDiagram), TransientCacheAsyncListener.instance()); - if (ds.elementColoringFunction.isPresent()) { - if (DEBUG) - System.out.print("elementColoringFunction: " + ds.elementColoringFunction + "(" + groupItem + "): "); - Double t = Simantics.applySCLRead(graph, ds.elementColoringFunction.get(), groupItem); - if (DEBUG) - System.out.print(t); - if (t != null) { - Color result = ds.coloringGradient.get(t); - //System.out.println("color(" + t + "): " + result); - return result; + // Prevent PendingVariableExceptions from coming through + boolean wasSynchronous = graph.setSynchronous(true); + try { + if (ds.elementColoringFunction.isPresent()) { + if (DEBUG) + System.out.print("elementColoringFunction: " + ds.elementColoringFunction + "(" + groupItem + "): "); + Double t = Simantics.applySCLRead(graph, ds.elementColoringFunction.get(), groupItem); + if (DEBUG) + System.out.print(t); + if (t != null) { + Color result = ds.coloringGradient.get(t); + //System.out.println("color(" + t + "): " + result); + return result; + } } } + finally { + graph.setSynchronous(wasSynchronous); + } return null; } @Override - public void applyStyleForNode(EvaluationContext observer, INode node, Color color) { + public void applyThrottledStyleForNode(EvaluationContext observer, INode node, Color color) { SingleElementNode n = (SingleElementNode) node; for (INode nn : n.getNodes()) ProfileVariables.claimNodeProperty(nn, "dynamicColor", color, observer);