1 package org.simantics.wiki.ui.editor;
\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
17 * @author Tuukka Lehtonen
\r
19 public final class WikiFontUtil {
\r
22 * ID for wiki source text font.
\r
24 public static final String SOURCE_FONT_ID = "org.simantics.wiki.sourcefont";
\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
31 public static void attachControlFontToRegistry(
\r
32 final ResourceManager resourceManager,
\r
33 final Control control,
\r
34 String fontRegistryId)
\r
36 final FontRegistry fontRegistry = FontHelper.getCurrentThemeFontRegistry();
\r
37 final IPropertyChangeListener fontRegistryListener = new IPropertyChangeListener() {
\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
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
50 public void handleEvent(Event event) {
\r
51 fontRegistry.removeListener(fontRegistryListener);
\r