]> gerrit.simantics Code Review - simantics/platform.git/blob - 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
1 package org.simantics.wiki.ui.editor;\r
2 \r
3 import org.eclipse.jface.resource.FontDescriptor;\r
4 import org.eclipse.jface.resource.FontRegistry;\r
5 import org.eclipse.jface.resource.ResourceManager;\r
6 import org.eclipse.jface.util.IPropertyChangeListener;\r
7 import org.eclipse.jface.util.PropertyChangeEvent;\r
8 import org.eclipse.swt.SWT;\r
9 import org.eclipse.swt.graphics.Font;\r
10 import org.eclipse.swt.graphics.FontData;\r
11 import org.eclipse.swt.widgets.Control;\r
12 import org.eclipse.swt.widgets.Event;\r
13 import org.eclipse.swt.widgets.Listener;\r
14 import org.simantics.g2d.utils.FontHelper;\r
15 \r
16 /**\r
17  * @author Tuukka Lehtonen\r
18  */\r
19 public final class WikiFontUtil {\r
20 \r
21     /**\r
22      * ID for wiki source text font.\r
23      */\r
24     public static final String SOURCE_FONT_ID = "org.simantics.wiki.sourcefont";\r
25 \r
26     /**\r
27      * @param resourceManager a resource manager for handling font allocations\r
28      * @param control the control to attach the font to\r
29      * @param fontRegistryId registry id of font to use for control\r
30      */\r
31     public static void attachControlFontToRegistry(\r
32             final ResourceManager resourceManager,\r
33             final Control control,\r
34             String fontRegistryId)\r
35     {\r
36         final FontRegistry fontRegistry = FontHelper.getCurrentThemeFontRegistry();\r
37         final IPropertyChangeListener fontRegistryListener = new IPropertyChangeListener() {\r
38             @Override\r
39             public void propertyChange(PropertyChangeEvent event) {\r
40                 FontData[] fdn = ((FontData[]) event.getNewValue());\r
41                 FontDescriptor fd = FontDescriptor.createFrom(fdn);\r
42                 control.setFont((Font) resourceManager.get(fd));\r
43             }\r
44         };\r
45         fontRegistry.addListener(fontRegistryListener);\r
46         FontDescriptor fd = fontRegistry.getDescriptor(fontRegistryId);\r
47         control.setFont((Font) resourceManager.get(fd));\r
48         control.addListener(SWT.Dispose, new Listener() {\r
49             @Override\r
50             public void handleEvent(Event event) {\r
51                 fontRegistry.removeListener(fontRegistryListener);\r
52             }\r
53         });\r
54     }\r
55 \r
56 }\r