debuggercdi/com.nokia.cdt.debug.cw.symbian.tests/src/com/nokia/cdt/debug/cw/symbian/tests/TestsPlugin.java
changeset 2 d760517a8095
child 9 6ef327765a4e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/debuggercdi/com.nokia.cdt.debug.cw.symbian.tests/src/com/nokia/cdt/debug/cw/symbian/tests/TestsPlugin.java	Tue Mar 24 22:20:21 2009 -0500
@@ -0,0 +1,152 @@
+package com.nokia.cdt.debug.cw.symbian.tests;
+
+import java.io.File;
+import java.io.FilenameFilter;
+import java.io.IOException;
+import java.net.URL;
+
+import junit.framework.TestCase;
+
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Plugin;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class TestsPlugin extends Plugin {
+
+	// The plug-in ID
+	public static final String PLUGIN_ID = "com.nokia.cdt.debug.cw.symbian.tests";
+
+	// The shared instance
+	private static TestsPlugin plugin;
+	
+	/**
+	 * The constructor
+	 */
+	public TestsPlugin() {
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.core.runtime.Plugins#start(org.osgi.framework.BundleContext)
+	 */
+	public void start(BundleContext context) throws Exception {
+		super.start(context);
+		plugin = this;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.core.runtime.Plugin#stop(org.osgi.framework.BundleContext)
+	 */
+	public void stop(BundleContext context) throws Exception {
+		plugin = null;
+		super.stop(context);
+	}
+
+	/**
+	 * Returns the shared instance
+	 *
+	 * @return the shared instance
+	 */
+	public static TestsPlugin getDefault() {
+		return plugin;
+	}
+
+	/************* Utility methods **********************/
+	
+	public static String[] getFileNamesInFolder(final String folderName, final String fileExtention) {
+		File folder = new File(folderName);
+		
+		String[] files = folder.list(new FilenameFilter() {
+
+			public boolean accept(File dir, String name) {
+				return name.endsWith(fileExtention);
+			}
+			
+		});
+	
+		return files;
+	}
+	
+	public static String[] getFileFullNamesInFolder(final String folderName, final String fileExtention) {
+		String[] files = getFileNamesInFolder(folderName, fileExtention);
+
+		for (int i=0; i < files.length; i++) {
+			files[i] = folderName + "\\" + files[i];
+		}
+		
+		return files;
+	}
+	
+	/**
+	 * Get location of this plugin.
+	 * 
+	 * @return
+	 * @throws IOException
+	 */
+    public static String getPluginPath() throws IOException {
+        if (!Platform.isRunning()) {
+            // get file relative to CWD (i.e. this project)
+            File f = new File(".");
+            f = f.getCanonicalFile();
+            return f.getAbsolutePath();
+        } else {
+
+        	if (getDefault() == null)
+				return null;
+			Bundle bundle = getDefault().getBundle();
+			if (bundle == null)
+				return null;
+			URL url = FileLocator.find(bundle, new Path("."), null);
+			if (url == null)
+				TestCase.fail("could not find URL for bundle: " + bundle);
+			url = FileLocator.resolve(url);
+			TestCase.assertEquals("file", url.getProtocol());
+
+			return url.getPath();
+        }
+    }
+
+	 /**
+		 * Load a file relative to this plugin in the running workbench
+		 * 
+		 * @param file
+		 * @return File
+		 * @throws IOException
+		 */
+    public static File pluginRelativeFile(String fileName) throws IOException {
+        String bundlePath = getPluginPath();
+
+        if (bundlePath == null)
+        	return null;
+        
+        return new File(bundlePath, fileName);
+    }
+
+    /**
+     *  Find a file relative to the project.  Works if running
+     *  in the workbench or standalone.
+     *  @param file the relative path (from the project) to the file
+     *  @return File
+     */
+    public static File projectRelativeFile(String file) throws Exception {
+        File f;
+        if (!Platform.isRunning()) {
+            // get file relative to CWD (i.e. this project)
+            f = new File(file);
+            f = f.getCanonicalFile();
+        } else {
+            // get file relative to running plugin (still this project)
+            f = pluginRelativeFile(file);
+        }
+        if (f == null)
+            TestCase.fail("Cannot find file " + file + " relative to project");
+        return f;
+    }
+}