package com.quantum.util.versioning; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.FontData; import org.eclipse.swt.widgets.FontDialog; /** * This class provides backward compatibility between versions of Eclipse for * known differences. * * @author BC */ public class VersioningHelper { public static final int ECLIPSE_VERSION_2_1_1 = 2135; /** * Set the font in a FontDialog. In Eclipse 2.1.1, the * setFontData() method was deprecated and an alternative * method, setFontList() was suggested in its place. * * @param fontDialog * @param fontData */ public static void setFont(FontDialog fontDialog, FontData[] fontData) { try { if (SWT.getVersion() >= ECLIPSE_VERSION_2_1_1) { Method method = fontDialog.getClass().getMethod( "setFontList", new Class[] { fontData.getClass()}); method.invoke(fontDialog, new Object[] {fontData}); } else if (fontData.length > 0) { Method method = fontDialog.getClass().getMethod( "setFontData", new Class[] { FontData.class }); method.invoke(fontDialog, new Object[] { fontData[0] }); } } catch (NoSuchMethodException e) { // should not happen } catch (IllegalArgumentException e) { // should not happen } catch (IllegalAccessException e) { // should not happen } catch (InvocationTargetException e) { // should not happen } } }