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 1f3bacf..de069b9 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,23 @@
 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.actions.ImportResourcesAction;
+import org.eclipse.ui.part.ViewPart;
+import org.eclipse.ui.part.WorkbenchPart;
 
 /**
  * This class provides backward compatibility between versions of Eclipse for
@@ -15,7 +27,10 @@ import org.eclipse.swt.widgets.FontDialog;
  */
 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;
 
     /**
      * Set the font in a FontDialog.  In Eclipse 2.1.1, the 
@@ -46,4 +61,156 @@ public class VersioningHelper {
             // 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 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 ImportResourcesAction createImportResourcesAction(IWorkbenchWindow window) {
+    	ImportResourcesAction action = null;
+    	
+    	try {
+    		if (isEclipse21OrHigher()) {
+    			Constructor constructor = ImportResourcesAction.class.getConstructor(
+    				new Class[] { IWorkbenchWindow.class });
+    			action = (ImportResourcesAction) constructor.newInstance(
+    				new Object[] { window });
+    		} else {
+    			Constructor constructor = ImportResourcesAction.class.getConstructor(
+    				new Class[] { IWorkbench.class });
+    			action = (ImportResourcesAction) 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;
+	}
+
 }