--- /dev/null
+package org.simantics.modeling.ui.diagram.monitor;\r
+\r
+import org.simantics.browsing.ui.swt.widgets.impl.ModifyComboListenerImpl;\r
+import org.simantics.databoard.Bindings;\r
+import org.simantics.db.Resource;\r
+import org.simantics.db.WriteGraph;\r
+import org.simantics.db.exception.DatabaseException;\r
+import org.simantics.diagram.stubs.DiagramResource;\r
+import org.simantics.layer0.Layer0;\r
+import org.simantics.ui.fonts.FontDescriptor;\r
+\r
+public class FontModifier extends ModifyComboListenerImpl<Resource, String> {\r
+\r
+ @Override\r
+ public void applySelection(WriteGraph graph, Resource monitor, String newFamily) throws DatabaseException {\r
+ Layer0 L0 = Layer0.getInstance(graph);\r
+ DiagramResource DIA = DiagramResource.getInstance(graph);\r
+ FontDescriptor fd = graph.getPossibleRelatedAdapter(monitor, DIA.HasFont, FontDescriptor.class);\r
+ if (fd != null) {\r
+ graph.markUndoPoint();\r
+ Resource font = graph.newResource();\r
+ graph.claim(font, L0.InstanceOf, null, DIA.RealizedFont);\r
+ graph.addLiteral(font, DIA.RealizedFont_HasFamily, DIA.RealizedFont_HasFamily_Inverse, L0.String, newFamily, Bindings.STRING);\r
+ graph.addLiteral(font, DIA.RealizedFont_HasStyle, DIA.RealizedFont_HasStyle_Inverse, L0.Integer, fd.getStyle(), Bindings.INTEGER);\r
+ graph.addLiteral(font, DIA.RealizedFont_HasSize, DIA.RealizedFont_HasSize_Inverse, L0.Integer, fd.getSize(), Bindings.INTEGER);\r
+ graph.deny(monitor, DIA.HasFont);\r
+ graph.claim(monitor, DIA.HasFont, font);\r
+ }\r
+ }\r
+\r
+}\r