]> gerrit.simantics Code Review - simantics/district.git/blobdiff - org.simantics.district.network/src/org/simantics/district/network/profile/DNElementSizeStyle.java
Make defaults to work & remove apply button in dynamic visualisations
[simantics/district.git] / org.simantics.district.network / src / org / simantics / district / network / profile / DNElementSizeStyle.java
index 0a454eef8f57a577a5a33f8aaee79afe37295b51..870f74578132d895dc53a850c614b2874eb9df25 100644 (file)
@@ -10,6 +10,9 @@ 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.DynamicVisualisationsContributions.DynamicSizingObject;
+import org.simantics.district.network.visualisations.model.DynamicColorContribution;
 import org.simantics.district.network.visualisations.model.DynamicSizeContribution;
 import org.simantics.district.network.visualisations.model.DynamicSizeMap;
 import org.simantics.district.network.visualisations.model.DynamicVisualisation;
@@ -20,6 +23,7 @@ import org.simantics.scenegraph.g2d.G2DSceneGraph;
 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;
 
@@ -68,10 +72,32 @@ public class DNElementSizeStyle extends ThrottledStyleBase<Double> {
                                 if (attribute != null) {
                                     Double possibleValue = attribute.getPossibleValue(graph, Bindings.DOUBLE);
                                     if (possibleValue != null) {
+                                        
+                                        
+                                        double minValue;
+                                        double maxValue;
+                                        if (dsc.isUseDefault()) {
+                                            DynamicSizingObject dynamicSizingObject = dv.getDefaultSizeContributions().get(mappingName);
+                                            
+                                            // This is required if ontology module needs to be compiled
+                                            Object currentGraph = SCLContext.getCurrent().get("graph");
+                                            try {
+                                                SCLContext.getCurrent().put("graph", graph);
+                                                
+                                                DynamicSizeContribution ddcc = dynamicSizingObject.getSizeContributions().get(dsc.getLabel());
+                                                minValue = ddcc.getDefaultMin();
+                                                maxValue = ddcc.getDefaultMax();
+                                            } finally {
+                                                SCLContext.getCurrent().put("graph", currentGraph);
+                                            }
+                                        } else {
+                                            minValue = dsc.getDefaultMin();
+                                            maxValue = dsc.getDefaultMax();
+                                        }
                                         // here we do the adjusting according to spec in #15038
                                         double adjustedValue = possibleValue.doubleValue() * dsc.getVariableGain() + dsc.getVariableBias();
                                         DynamicSizeMap defaultSizeMap = dsc.getDefaultSizeMap();
-                                        double size = defaultSizeMap.getSize(adjustedValue, dv.getSizeBarOptions().isUseGradients(), dsc.getDefaultMin(), dsc.getDefaultMax());
+                                        double size = defaultSizeMap.getSize(adjustedValue, dv.getSizeBarOptions().isUseGradients(), minValue, maxValue);
                                         return size;
                                     } else {
                                         LOGGER.warn("No value for {}", attribute.getURI(graph));