/* Copyright (C) 2009 Mobile Sorcery AB This program is free software; you can redistribute it and/or modify it under the terms of the Eclipse Public License v1.0. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Eclipse Public License v1.0 for more details. You should have received a copy of the Eclipse Public License v1.0 along with this program. It is also available at http://www.eclipse.org/legal/epl-v10.html */ package com.mobilesorcery.sdk.testing; import org.eclipse.core.runtime.FileLocator; import org.eclipse.core.runtime.Path; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.resource.ImageRegistry; import org.eclipse.ui.PartInitException; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.plugin.AbstractUIPlugin; import org.osgi.framework.BundleContext; import com.mobilesorcery.sdk.testing.internal.ui.UnittestView; /** * The activator class controls the plug-in life cycle */ public class TestPlugin extends AbstractUIPlugin implements ITestSessionListener { // The plug-in ID public static final String PLUGIN_ID = "com.mobilesorcery.sdk.testing"; public static final String ERROR_IMAGE = "error.image"; public static final String SUCCESS_IMAGE = "success.image"; public static final String TEST_IMAGE = "test.image"; public static final String TEST_OK_IMAGE = "test.ok.image"; public static final String TEST_ERROR_IMAGE = "test.error.image"; public static final String TEST_RUNNING_IMAGE = "test.running.image"; public static final String TEST_SUITE_IMAGE = "test.suite.image"; public static final String TEST_SUITE_OK_IMAGE = "test.suite.ok.image"; public static final String TEST_SUITE_ERROR_IMAGE = "test.suite.error.image"; public static final String TEST_SUITE_RUNNING_IMAGE = "test.suite.running.image"; public static final String TEST_BUILD_CONFIGURATION_TYPE = "Test"; // The shared instance private static TestPlugin plugin; /** * The constructor */ public TestPlugin() { } /* * (non-Javadoc) * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext) */ public void start(BundleContext context) throws Exception { super.start(context); plugin = this; TestManager.getInstance().addSessionListener(this); } /* * (non-Javadoc) * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext) */ public void stop(BundleContext context) throws Exception { TestManager.getInstance().removeSessionListener(this); plugin = null; super.stop(context); } /** * Returns the shared instance * * @return the shared instance */ public static TestPlugin getDefault() { return plugin; } public void initializeImageRegistry(ImageRegistry reg) { super.initializeImageRegistry(reg); addImage(reg, ERROR_IMAGE, "icons/error_ovr.gif"); addImage(reg, SUCCESS_IMAGE, "icons/error_ovr.gif"); addImage(reg, TEST_IMAGE, "icons/test.gif"); addImage(reg, TEST_OK_IMAGE, "icons/testok.gif"); addImage(reg, TEST_ERROR_IMAGE, "icons/testerr.gif"); addImage(reg, TEST_RUNNING_IMAGE, "icons/testrun.gif"); addImage(reg, TEST_SUITE_IMAGE, "icons/tsuite.gif"); addImage(reg, TEST_SUITE_OK_IMAGE, "icons/tsuiteok.gif"); addImage(reg, TEST_SUITE_ERROR_IMAGE, "icons/tsuiteerror.gif"); addImage(reg, TEST_SUITE_RUNNING_IMAGE, "icons/tsuiterun.gif"); } private void addImage(ImageRegistry reg, String imageKey, String imageLocation) { reg.put(imageKey, ImageDescriptor.createFromURL(FileLocator.find(getBundle(), new Path(imageLocation), null))); } public void handleEvent(TestSessionEvent event) { if (event.type == TestSessionEvent.SESSION_STARTED) { PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { public void run() { try { PlatformUI.getWorkbench().getActiveWorkbenchWindow() .getActivePage().showView(UnittestView.ID); } catch (PartInitException e) { // Ignore. } } }); } } }