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;
import org.eclipse.ui.part.ViewPart;
import org.eclipse.ui.part.WorkbenchPart;
/**
* 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;
public static final int ECLIPSE_VERSION_3_0_RC1 = 3054;
public static final int ECLIPSE_VERSION_3_0_RC3 = 3061;
/**
* 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
}
}
public static void setPartName(ViewPart viewPart, String partName) {
try {
if (SWT.getVersion() >= ECLIPSE_VERSION_3_0_RC1) {
Method method = WorkbenchPart.class.getDeclaredMethod(
"setPartName", new Class[] { String.class });
method.invoke(viewPart, new Object[] {partName});
} else {
Method method = WorkbenchPart.class.getDeclaredMethod(
"setTitle", new Class[] { FontData.class });
method.invoke(method, new Object[] { partName });
}
} catch (NoSuchMethodException e) {
// should not happen
} catch (IllegalArgumentException e) {
// should not happen
} catch (IllegalAccessException e) {
// should not happen
} catch (InvocationTargetException e) {
// should not happen
}
}
public static void main(String[] args) {
System.out.println(SWT.getVersion());
}
}