]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.wiki.ui/src/org/simantics/wiki/ui/editor/WikiFontUtil.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.wiki.ui / src / org / simantics / wiki / ui / editor / WikiFontUtil.java
diff --git a/bundles/org.simantics.wiki.ui/src/org/simantics/wiki/ui/editor/WikiFontUtil.java b/bundles/org.simantics.wiki.ui/src/org/simantics/wiki/ui/editor/WikiFontUtil.java
new file mode 100644 (file)
index 0000000..f95a677
--- /dev/null
@@ -0,0 +1,56 @@
+package org.simantics.wiki.ui.editor;\r
+\r
+import org.eclipse.jface.resource.FontDescriptor;\r
+import org.eclipse.jface.resource.FontRegistry;\r
+import org.eclipse.jface.resource.ResourceManager;\r
+import org.eclipse.jface.util.IPropertyChangeListener;\r
+import org.eclipse.jface.util.PropertyChangeEvent;\r
+import org.eclipse.swt.SWT;\r
+import org.eclipse.swt.graphics.Font;\r
+import org.eclipse.swt.graphics.FontData;\r
+import org.eclipse.swt.widgets.Control;\r
+import org.eclipse.swt.widgets.Event;\r
+import org.eclipse.swt.widgets.Listener;\r
+import org.simantics.g2d.utils.FontHelper;\r
+\r
+/**\r
+ * @author Tuukka Lehtonen\r
+ */\r
+public final class WikiFontUtil {\r
+\r
+    /**\r
+     * ID for wiki source text font.\r
+     */\r
+    public static final String SOURCE_FONT_ID = "org.simantics.wiki.sourcefont";\r
+\r
+    /**\r
+     * @param resourceManager a resource manager for handling font allocations\r
+     * @param control the control to attach the font to\r
+     * @param fontRegistryId registry id of font to use for control\r
+     */\r
+    public static void attachControlFontToRegistry(\r
+            final ResourceManager resourceManager,\r
+            final Control control,\r
+            String fontRegistryId)\r
+    {\r
+        final FontRegistry fontRegistry = FontHelper.getCurrentThemeFontRegistry();\r
+        final IPropertyChangeListener fontRegistryListener = new IPropertyChangeListener() {\r
+            @Override\r
+            public void propertyChange(PropertyChangeEvent event) {\r
+                FontData[] fdn = ((FontData[]) event.getNewValue());\r
+                FontDescriptor fd = FontDescriptor.createFrom(fdn);\r
+                control.setFont((Font) resourceManager.get(fd));\r
+            }\r
+        };\r
+        fontRegistry.addListener(fontRegistryListener);\r
+        FontDescriptor fd = fontRegistry.getDescriptor(fontRegistryId);\r
+        control.setFont((Font) resourceManager.get(fd));\r
+        control.addListener(SWT.Dispose, new Listener() {\r
+            @Override\r
+            public void handleEvent(Event event) {\r
+                fontRegistry.removeListener(fontRegistryListener);\r
+            }\r
+        });\r
+    }\r
+\r
+}\r