X-Git-Url: http://git.phpeclipse.com diff --git a/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/util/versioning/VersioningHelper.java b/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/util/versioning/VersioningHelper.java index fcf6188..bbc2979 100644 --- a/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/util/versioning/VersioningHelper.java +++ b/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/util/versioning/VersioningHelper.java @@ -1,11 +1,20 @@ package com.quantum.util.versioning; +import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.jface.resource.ImageRegistry; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.FontData; import org.eclipse.swt.widgets.FontDialog; +import org.eclipse.ui.IKeyBindingService; +import org.eclipse.ui.IWorkbench; +import org.eclipse.ui.IWorkbenchPartSite; +import org.eclipse.ui.IWorkbenchWindow; +import org.eclipse.ui.actions.ExportResourcesAction; import org.eclipse.ui.part.ViewPart; import org.eclipse.ui.part.WorkbenchPart; @@ -17,6 +26,7 @@ import org.eclipse.ui.part.WorkbenchPart; */ public class VersioningHelper { + public static final int ECLIPSE_VERSION_2_0_1 = 2049; 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; @@ -73,7 +83,104 @@ public class VersioningHelper { } } + public static ExportResourcesAction createExportResourcesAction(IWorkbenchWindow window) { + ExportResourcesAction action = null; + + try { + if (isEclipse21OrHigher()) { + Constructor constructor = ExportResourcesAction.class.getConstructor( + new Class[] { IWorkbenchWindow.class }); + action = (ExportResourcesAction) constructor.newInstance( + new Object[] { window }); + } else { + Constructor constructor = ExportResourcesAction.class.getConstructor( + new Class[] { IWorkbench.class }); + action = (ExportResourcesAction) constructor.newInstance( + new Object[] { window.getWorkbench() }); + } + } catch (NoSuchMethodException e) { + // should not happen + } catch (IllegalArgumentException e) { + // should not happen + } catch (IllegalAccessException e) { + // should not happen + } catch (InvocationTargetException e) { + // should not happen + } catch (InstantiationException e) { + // should not happen + } + return action; + } + + public static void registerActionToKeyBindingService( + IWorkbenchPartSite site, String[] scopes, IAction action) { + + try { + if (isEclipse21OrHigher()) { + Method method = IWorkbenchPartSite.class.getMethod( + "getKeyBindingService", new Class[0]); + IKeyBindingService service = (IKeyBindingService) method.invoke(site, null); + + method = IKeyBindingService.class.getMethod( + "setScopes", new Class[] { String[].class }); + method.invoke(service, new Object[] { scopes}); + + service.registerAction(action); + } + } 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()); } + + /** + * @return + */ + public static boolean isEclipse30() { + return SWT.getVersion() >= 3000; + } + + /** + * @return + */ + public static boolean isEclipse21OrHigher() { + return SWT.getVersion() >= 2100; + } + /** + * Method getDescriptor. + * @param registry + * @param imageName + * @return ImageDescriptor + */ + public static ImageDescriptor getDescriptor( + ImageRegistry registry, + String imageName) { + ImageDescriptor descriptor = null; + try { + if (isEclipse21OrHigher()) { + Method method = ImageRegistry.class.getMethod( + "getDescriptor", new Class[] { String.class }); + descriptor = (ImageDescriptor) method.invoke(registry, new Object[] {imageName}); + } + } catch (NoSuchMethodException e) { + // should not happen + } catch (IllegalArgumentException e) { + // should not happen + } catch (IllegalAccessException e) { + // should not happen + } catch (InvocationTargetException e) { + // should not happen + } + return descriptor; + } + }