]> gerrit.simantics Code Review - simantics/district.git/blobdiff - org.simantics.district.network/src/org/simantics/district/network/profile/DNElementColorStyle.java
Make defaults to work & remove apply button in dynamic visualisations
[simantics/district.git] / org.simantics.district.network / src / org / simantics / district / network / profile / DNElementColorStyle.java
index fe0a1fe7f2ebce8bbbfdec501fce0a0032b6e544..1e50a92ef5aba2c02b109ee8c5d6c47d8209917c 100644 (file)
@@ -3,7 +3,6 @@ package org.simantics.district.network.profile;
 import java.awt.Color;
 import java.util.Map;
 
-import org.simantics.Simantics;
 import org.simantics.databoard.Bindings;
 import org.simantics.db.ReadGraph;
 import org.simantics.db.Resource;
@@ -12,6 +11,7 @@ import org.simantics.db.exception.DatabaseException;
 import org.simantics.db.layer0.variable.Variable;
 import org.simantics.db.layer0.variable.Variables;
 import org.simantics.district.network.ontology.DistrictNetworkResource;
+import org.simantics.district.network.visualisations.DynamicVisualisationsContributions.DynamicColoringObject;
 import org.simantics.district.network.visualisations.model.DynamicColorContribution;
 import org.simantics.district.network.visualisations.model.DynamicColorMap;
 import org.simantics.district.network.visualisations.model.DynamicVisualisation;
@@ -21,6 +21,7 @@ import org.simantics.scenegraph.INode;
 import org.simantics.scenegraph.g2d.nodes.SingleElementNode;
 import org.simantics.scenegraph.profile.EvaluationContext;
 import org.simantics.scenegraph.profile.common.ProfileVariables;
+import org.simantics.scl.runtime.SCLContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -40,7 +41,6 @@ public class DNElementColorStyle extends ThrottledStyleBase<Color> {
         DynamicVisualisation dv = graph.syncRequest(new RuntimeDynamicVisualisationsRequest(runtimeDiagram),
                 TransientCacheAsyncListener.instance());
 
-        DiagramSettings ds = graph.syncRequest(new DiagramSettingsRequest(runtimeDiagram), TransientCacheAsyncListener.instance());
         // Prevent PendingVariableExceptions from coming through
         boolean wasSynchronous = graph.setSynchronous(true);
         try {
@@ -69,10 +69,31 @@ public class DNElementColorStyle extends ThrottledStyleBase<Color> {
                                 if (attribute != null) {
                                     Double possibleValue = attribute.getPossibleValue(graph, Bindings.DOUBLE);
                                     if (possibleValue != null) {
+                                        
+                                        double minValue;
+                                        double maxValue;
+                                        if (dcc.isUseDefault()) {
+                                            DynamicColoringObject dynamicColoringObject = dv.getDefaultColorContributions().get(mappingName);
+                                            
+                                            // This is required if ontology module needs to be compiled
+                                            Object currentGraph = SCLContext.getCurrent().get("graph");
+                                            try {
+                                                SCLContext.getCurrent().put("graph", graph);
+                                                
+                                                DynamicColorContribution ddcc = dynamicColoringObject.getColorContributions().get(dcc.getLabel());
+                                                minValue = ddcc.getDefaultMin();
+                                                maxValue = ddcc.getDefaultMax();
+                                            } finally {
+                                                SCLContext.getCurrent().put("graph", currentGraph);
+                                            }
+                                        } else {
+                                            minValue = dcc.getDefaultMin();
+                                            maxValue = dcc.getDefaultMax();
+                                        }
                                         // here we do the adjusting according to spec in #15038
                                         double adjustedValue = possibleValue.doubleValue() * dcc.getVariableGain() + dcc.getVariableBias();
                                         DynamicColorMap defaultColorMap = dcc.getDefaultColorMap();
-                                        Color color = defaultColorMap.getColor(adjustedValue, dcc.getDefaultMin(), dcc.getDefaultMax());
+                                        Color color = defaultColorMap.getColor(adjustedValue, dv.getColorBarOptions().isUseGradients(), minValue, maxValue);
                                         return color;
                                     } else {
                                         LOGGER.warn("No value for {}", attribute.getURI(graph));
@@ -91,20 +112,6 @@ public class DNElementColorStyle extends ThrottledStyleBase<Color> {
                     }
                 }
             }
-                   
-            // the old implementation here
-                       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);