]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.diagram/src/org/simantics/diagram/profile/SCLTextGridStyle.java
Fix diagram profiles to work with latest DB changes
[simantics/platform.git] / bundles / org.simantics.diagram / src / org / simantics / diagram / profile / SCLTextGridStyle.java
index 5850ffb3778407b39805c439d31fabde2b2b22ab..16b205388733c0ba5f3d86fea0b22b6781632012 100644 (file)
@@ -1,12 +1,9 @@
 package org.simantics.diagram.profile;
 
+import java.awt.Font;
 import java.awt.geom.AffineTransform;
-import java.text.DecimalFormat;
-import java.text.DecimalFormatSymbols;
-import java.util.Locale;
 
 import org.simantics.Simantics;
-import org.simantics.common.format.Formatter;
 import org.simantics.databoard.Bindings;
 import org.simantics.datatypes.literal.Vec2d;
 import org.simantics.db.ReadGraph;
@@ -14,10 +11,13 @@ import org.simantics.db.Resource;
 import org.simantics.db.exception.DatabaseException;
 import org.simantics.db.layer0.variable.Variable;
 import org.simantics.db.layer0.variable.Variables;
+import org.simantics.diagram.G2DUtils;
 import org.simantics.diagram.stubs.DiagramResource;
+import org.simantics.diagram.stubs.G2DResource;
 import org.simantics.diagram.synchronization.graph.DiagramGraphUtil;
 import org.simantics.modeling.ModelingResources;
 import org.simantics.scl.runtime.function.Function1;
+import org.simantics.scl.runtime.tuple.Tuple3;
 import org.simantics.utils.datastructures.Pair;
 
 /**
@@ -25,10 +25,24 @@ import org.simantics.utils.datastructures.Pair;
  */
 public class SCLTextGridStyle extends TextGridStyle {
 
-       final Resource style;
+       final Font font;
+
+       public SCLTextGridStyle(ReadGraph graph, Resource style) throws DatabaseException {
+               super(style);
+               G2DResource G2D = G2DResource.getInstance(graph);
+               Resource fontR = graph.getPossibleObject(style, G2D.HasFont);
+               if(fontR != null) {
+                       font = G2DUtils.getFont(graph, fontR);
+               } else {
+                       font = null;
+               }
 
-       public SCLTextGridStyle(Resource style) {
-               this.style = style;
+       }
+
+       @Override
+       protected Font getFont() {
+               if(font != null) return font;
+               return super.getFont();
        }
 
        @Override
@@ -38,7 +52,7 @@ public class SCLTextGridStyle extends TextGridStyle {
 
        @Override
        protected Object getIdentity(Resource entry) {
-               return new Pair<Resource, Resource>(style, entry);
+               return new Pair<Resource, Resource>(getResource(), entry);
        }
 
        @Override
@@ -66,23 +80,23 @@ public class SCLTextGridStyle extends TextGridStyle {
                if (moduleVariable == null)
                        return null;
 
-               Variable styleVariable = Variables.getVariable(graph, style);
-               Function1<Variable,String> function = styleVariable.getPossiblePropertyValue(graph, "function");
-               String result = Simantics.applySCLRead(graph, function, moduleVariable);
-
+               Variable styleVariable = Variables.getVariable(graph, getResource());
+               Function1<Variable,Tuple3> function = styleVariable.getPossiblePropertyValue(graph, DIA.SCLTextGridStyle_texts);
+               Tuple3 result = Simantics.applySCLRead(graph, function, moduleVariable);
+               
                AffineTransform transform = DiagramGraphUtil.getAffineTransform(graph, element);
                Vec2d offset = DiagramGraphUtil.getOffset(graph, element);
                boolean enabled = !DiagramGraphUtil.getProfileMonitorsHidden(graph, element);
                boolean up = DiagramGraphUtil.getProfileMonitorsUp(graph, element);
                double spacing = DiagramGraphUtil.getProfileMonitorSpacing(graph, element);
 
-               return new MonitorTextGridResult(rowId(), result, "", "", enabled, up, spacing, null, null, ElementTranslation.function(element), transform, offset);
+               return new MonitorTextGridResult(rowId(), (String)result.c0, (String)result.c1, (String)result.c2, enabled, up, spacing, null, null, ElementTranslation.function(element), transform, offset);
 
        }
 
        @Override
        public String getNodeName() {
-               return "" + style.getResourceId();
+               return "" + getResource().getResourceId();
        }
 
 }