/* * Created on Sep 15, 2004 */ package com.toubassi.jface; import java.util.HashMap; import org.eclipse.jface.resource.JFaceResources; import org.eclipse.swt.graphics.FontData; import org.eclipse.swt.graphics.FontMetrics; import org.eclipse.swt.graphics.GC; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.widgets.Control; public class ControlUtil { private static final HashMap cachedFontMetrics = new HashMap(); public static void convertSizeInCharsToPixels(Control control, Point size) { FontMetrics fontMetrics = getFontMetrics(control); if (fontMetrics == null) { return; } size.x = fontMetrics.getAverageCharWidth() * size.x; size.y = fontMetrics.getHeight() * size.y; } public static FontMetrics getFontMetrics(Control control) { FontData[] fontDatas = control.getFont().getFontData(); if (fontDatas.length == 0) { return null; } String fontDescription = fontDatas[0].toString(); synchronized (cachedFontMetrics) { FontMetrics fontMetrics = (FontMetrics)cachedFontMetrics.get(fontDescription); if (fontMetrics == null) { GC gc = new GC(control); gc.setFont(JFaceResources.getDialogFont()); fontMetrics = gc.getFontMetrics(); gc.dispose(); cachedFontMetrics.put(fontDescription, fontMetrics); } return fontMetrics; } } }