/*==========================================================================*\
| $Id$
|*-------------------------------------------------------------------------*|
| Copyright (C) 2006-2009 Virginia Tech
|
| This file is part of Web-CAT Eclipse Plugins.
|
| Web-CAT is free software; you can redistribute it and/or modify
| it under the terms of the GNU General Public License as published by
| the Free Software Foundation; either version 2 of the License, or
| (at your option) any later version.
|
| Web-CAT 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
| GNU General Public License for more details.
|
| You should have received a copy of the GNU General Public License
| along with Web-CAT; if not, see <http://www.gnu.org/licenses/>.
\*==========================================================================*/
package net.sf.webcat.eclipse.cxxtest;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
import net.sf.webcat.eclipse.cxxtest.i18n.Messages;
import net.sf.webcat.eclipse.cxxtest.internal.CxxTestPreferencesChangeListener;
import net.sf.webcat.eclipse.cxxtest.internal.options.ExtraOptionsUpdater;
import net.sf.webcat.eclipse.cxxtest.options.IExtraOptionsUpdater;
import net.sf.webcat.eclipse.cxxtest.ui.TestRunnerViewPart;
import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.preferences.ConfigurationScope;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.console.ConsolePlugin;
import org.eclipse.ui.console.IConsole;
import org.eclipse.ui.console.IConsoleManager;
import org.eclipse.ui.console.MessageConsole;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.eclipse.ui.preferences.ScopedPreferenceStore;
import org.osgi.framework.BundleContext;
//------------------------------------------------------------------------
/**
* The main plugin class to be used in the desktop.
*
* @author Tony Allevato (Virginia Tech Computer Science)
* @author latest changes by: $Author$
* @version $Revision$ $Date$
*/
public class CxxTestPlugin extends AbstractUIPlugin
{
//~ Constructors ..........................................................
// ----------------------------------------------------------
public CxxTestPlugin()
{
super();
plugin = this;
try
{
resourceBundle = ResourceBundle.getBundle(
"net.sf.webcat.eclipse.cxxtest.BuilderPluginResources"); //$NON-NLS-1$
}
catch(MissingResourceException x)
{
resourceBundle = null;
}
}
//~ Methods ...............................................................
// ----------------------------------------------------------
/**
* This method is called upon plug-in activation.
*/
public void start(BundleContext context) throws Exception
{
super.start(context);
getPreferenceStore().addPropertyChangeListener(
new CxxTestPreferencesChangeListener());
}
// ----------------------------------------------------------
/**
* This method is called when the plug-in is stopped.
*/
public void stop(BundleContext context) throws Exception
{
super.stop(context);
}
// ----------------------------------------------------------
/**
* Returns the shared instance.
*/
public static CxxTestPlugin getDefault()
{
return plugin;
}
// ----------------------------------------------------------
/**
* Returns the string from the plugin's resource bundle, or 'key' if not
* found.
*/
public static String getResourceString(String key)
{
ResourceBundle bundle = CxxTestPlugin.getDefault().getResourceBundle();
try
{
return (bundle != null) ? bundle.getString(key) : key;
}
catch(MissingResourceException e)
{
return key;
}
}
// ----------------------------------------------------------
/**
* Returns the plugin's resource bundle,
*/
public ResourceBundle getResourceBundle()
{
return resourceBundle;
}
// ----------------------------------------------------------
public String getString(String id)
{
IPreferenceStore store = getPreferenceStore();
return store.getString(id);
}
// ----------------------------------------------------------
public boolean getBoolean(String id)
{
IPreferenceStore store = getPreferenceStore();
return store.getBoolean(id);
}
// ----------------------------------------------------------
public boolean getConfigurationBoolean(String id)
{
IPreferenceStore store = new ScopedPreferenceStore(
new ConfigurationScope(), PLUGIN_ID);
return store.getBoolean(id);
}
// ----------------------------------------------------------
public MessageConsole getBuilderConsole()
{
if(builderConsole == null)
{
builderConsole = new MessageConsole(Messages.CxxTestPlugin_ConsoleTitle,
null);
IConsoleManager manager = ConsolePlugin.getDefault()
.getConsoleManager();
manager.addConsoles(new IConsole[] { builderConsole });
}
return builderConsole;
}
// ----------------------------------------------------------
public static IWorkbenchWindow getActiveWorkbenchWindow()
{
if(plugin == null)
return null;
IWorkbench workBench = plugin.getWorkbench();
if(workBench == null)
return null;
return workBench.getActiveWorkbenchWindow();
}
// ----------------------------------------------------------
public static IWorkbenchPage getActivePage()
{
IWorkbenchWindow activeWorkbenchWindow = getActiveWorkbenchWindow();
if(activeWorkbenchWindow == null)
return null;
return activeWorkbenchWindow.getActivePage();
}
// ----------------------------------------------------------
public TestRunnerViewPart getTestRunnerView()
{
IWorkbenchPage page = getActivePage();
if(page == null)
return null;
TestRunnerViewPart view = (TestRunnerViewPart)page
.findView(TestRunnerViewPart.ID);
if(view == null)
{
try
{
view = (TestRunnerViewPart)page.showView(TestRunnerViewPart.ID);
}
catch(PartInitException e)
{
}
}
return view;
}
// ----------------------------------------------------------
public IExtraOptionsUpdater getExtraOptionsUpdater()
{
if(extraOptionsUpdater == null)
extraOptionsUpdater = new ExtraOptionsUpdater();
return extraOptionsUpdater;
}
// ----------------------------------------------------------
public static ImageDescriptor getImageDescriptor(String relativePath)
{
try
{
return ImageDescriptor.createFromURL(new URL(Platform.getBundle(
PLUGIN_ID).getEntry("/icons/full/"), relativePath)); //$NON-NLS-1$
}
catch(MalformedURLException e)
{
// should not happen
return ImageDescriptor.getMissingImageDescriptor();
}
}
//~ Static/instance variables .............................................
/* The shared instance. */
private static CxxTestPlugin plugin;
/* Resource bundle. */
private ResourceBundle resourceBundle;
private MessageConsole builderConsole;
private ExtraOptionsUpdater extraOptionsUpdater;
public static final String PLUGIN_ID = "net.sf.webcat.eclipse.cxxtest"; //$NON-NLS-1$
public static final String CXXTEST_NATURE = PLUGIN_ID + ".cxxtestNature"; //$NON-NLS-1$
public static final String CXXTEST_BUILDER = PLUGIN_ID + ".cxxtestbuilder"; //$NON-NLS-1$
public static final String CXXTEST_ENABLED = PLUGIN_ID + ".enabled"; //$NON-NLS-1$
public static final String CXXTEST_RUNNER = PLUGIN_ID + ".cxxtestrunner"; //$NON-NLS-1$
public static final String CXXTEST_PREF_DRIVER_FILENAME = PLUGIN_ID
+ ".preferences.driver"; //$NON-NLS-1$
public static final String CXXTEST_PREF_TRACK_HEAP = PLUGIN_ID
+ ".preferences.trackHeap"; //$NON-NLS-1$
public static final String CXXTEST_PREF_TRAP_SIGNALS = PLUGIN_ID
+ ".preferences.trapSignals"; //$NON-NLS-1$
public static final String CXXTEST_PREF_TRACE_STACK = PLUGIN_ID
+ ".preferences.traceStack"; //$NON-NLS-1$
public static final String CXXTEST_PREF_HAS_REQUIRED_LIBRARIES = PLUGIN_ID
+ ".preferences.hasRequiredLibraries"; //$NON-NLS-1$
public static final String CXXTEST_PREF_FIRST_TIME = PLUGIN_ID
+ ".preferences.firstTime"; //$NON-NLS-1$
}