package com.netifera.platform.ui.forms; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.graphics.FontData; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; import org.eclipse.ui.forms.widgets.FormToolkit; public class NetiferaFormToolkit extends FormToolkit { public NetiferaFormToolkit(Display display) { super(display); } private BoldFontHolder boldFontHolder = new BoldFontHolder(); public NetiferaExpand createZexpand(Composite parent, int expansionStyle) { NetiferaExpand ec = new NetiferaExpand(parent, getOrientation(), expansionStyle); ec.setMenu(parent.getMenu()); adapt(ec, true, true); ec.setFont(boldFontHolder.getBoldFont(ec.getFont())); return ec; } /* copied from FormUtils */ private static Font zFormUtilscreateBoldFont(Display display, Font regularFont) { FontData[] fontDatas = regularFont.getFontData(); for (int i = 0; i < fontDatas.length; i++) { fontDatas[i].setStyle(fontDatas[i].getStyle() | SWT.BOLD); } return new Font(display, fontDatas); } private class BoldFontHolder { private Font normalFont; private Font boldFont; public BoldFontHolder() { } public Font getBoldFont(Font font) { createBoldFont(font); return boldFont; } private void createBoldFont(Font font) { if (normalFont == null || !normalFont.equals(font)) { normalFont = font; dispose(); } if (boldFont == null) { boldFont = zFormUtilscreateBoldFont(getColors().getDisplay(),normalFont); } } public void dispose() { if (boldFont != null) { boldFont.dispose(); boldFont = null; } } } }