--- /dev/null
+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
+ * <code>setFontData()</code> method was deprecated and an alternative
+ * method, <code>setFontList()</code> 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
+ }
+ }
+}