X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.diagram%2Fsrc%2Forg%2Fsimantics%2Fdiagram%2Fprofile%2FSCLTextGridStyle.java;fp=bundles%2Forg.simantics.diagram%2Fsrc%2Forg%2Fsimantics%2Fdiagram%2Fprofile%2FSCLTextGridStyle.java;h=5850ffb3778407b39805c439d31fabde2b2b22ab;hb=11532e91770beadd55d85037c4b5e00bbcace69f;hp=0000000000000000000000000000000000000000;hpb=d0f755ad31c06641f8e9a9010a79356f483340c5;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.diagram/src/org/simantics/diagram/profile/SCLTextGridStyle.java b/bundles/org.simantics.diagram/src/org/simantics/diagram/profile/SCLTextGridStyle.java new file mode 100644 index 000000000..5850ffb37 --- /dev/null +++ b/bundles/org.simantics.diagram/src/org/simantics/diagram/profile/SCLTextGridStyle.java @@ -0,0 +1,88 @@ +package org.simantics.diagram.profile; + +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; +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.stubs.DiagramResource; +import org.simantics.diagram.synchronization.graph.DiagramGraphUtil; +import org.simantics.modeling.ModelingResources; +import org.simantics.scl.runtime.function.Function1; +import org.simantics.utils.datastructures.Pair; + +/** + * @author Antti Villberg + */ +public class SCLTextGridStyle extends TextGridStyle { + + final Resource style; + + public SCLTextGridStyle(Resource style) { + this.style = style; + } + + @Override + public Resource getPropertyRelation(ReadGraph graph, Resource module) { + throw new Error("Fix this"); + } + + @Override + protected Object getIdentity(Resource entry) { + return new Pair(style, entry); + } + + @Override + protected String rowId() { + return getNodeName(); + } + + @Override + public MonitorTextGridResult calculateStyle(ReadGraph graph, Resource runtimeDiagram, Resource entry, Resource element, Variable configuration) + throws DatabaseException { + + DiagramResource DIA = DiagramResource.getInstance(graph); + ModelingResources MOD = ModelingResources.getInstance(graph); + + String variableURI = graph.getPossibleRelatedValue(runtimeDiagram, DIA.RuntimeDiagram_HasVariable, Bindings.STRING); + Variable activeVariable = org.simantics.db.layer0.variable.Variables.getPossibleVariable(graph, variableURI); + if (activeVariable == null) + return null; + + Resource module = graph.getPossibleObject(element, MOD.ElementToComponent); + if (module == null) + return null; + + Variable moduleVariable = activeVariable.browsePossible(graph, module); + if (moduleVariable == null) + return null; + + Variable styleVariable = Variables.getVariable(graph, style); + Function1 function = styleVariable.getPossiblePropertyValue(graph, "function"); + String 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); + + } + + @Override + public String getNodeName() { + return "" + style.getResourceId(); + } + +}