/* ******************************************************************************
* Copyright (c) 2006-2012 XMind Ltd. and others.
*
* This file is a part of XMind 3. XMind releases 3 and
* above are dual-licensed under the Eclipse Public License (EPL),
* which is available at http://www.eclipse.org/legal/epl-v10.html
* and the GNU Lesser General Public License (LGPL),
* which is available at http://www.gnu.org/licenses/lgpl.html
* See http://www.xmind.net/license.html for details.
*
* Contributors:
* XMind Ltd. - initial API and implementation
*******************************************************************************/
package org.xmind.ui.internal.spelling;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.osgi.framework.BundleContext;
import org.osgi.util.tracker.ServiceTracker;
import org.xmind.core.usagedata.IUsageDataSampler;
/**
* The activator class controls the plug-in life cycle
*/
public class SpellingPlugin extends AbstractUIPlugin {
public static final String SPELLING_CHECK_ENABLED = "SPELLING_CHECK_ENABLED"; //$NON-NLS-1$
public static final String DEFAULT_SPELLING_CHECKER_INVISIBLE = "DEFAULT_SPELLING_CHECKER_INVISIBLE"; //$NON-NLS-1$
public static final String DEFAULT_SPELLING_CHECKER_DISABLED = "DEFAULT_SPELLING_CHECKER_DISABLED"; //$NON-NLS-1$
public static final String HIDE_SPELLING_CHECK_PROGRESS = "HIDE_SPELLING_CHECK_PROGRESS"; //$NON-NLS-1$
public static final String SPELLING_CHECK_VIEW_ID = "org.xmind.ui.SpellingCheckView"; //$NON-NLS-1$
// The plug-in ID
public static final String PLUGIN_ID = "org.xmind.ui.spelling"; //$NON-NLS-1$
// The shared instance
private static SpellingPlugin plugin;
private ServiceTracker<IUsageDataSampler, IUsageDataSampler> usageDataTracker;
/**
* The constructor
*/
public SpellingPlugin() {
}
/*
* (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;
usageDataTracker = new ServiceTracker<IUsageDataSampler, IUsageDataSampler>(
context, IUsageDataSampler.class, null);
usageDataTracker.open();
// Migrate old settings
SpellCheckerAgent.migrateUserDictFile();
SpellCheckerRegistry.migrateUserDictDir();
}
/*
* (non-Javadoc)
*
* @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.
* BundleContext )
*/
public void stop(BundleContext context) throws Exception {
usageDataTracker.close();
usageDataTracker = null;
plugin = null;
super.stop(context);
}
public IUsageDataSampler getUsageDataCollector() {
IUsageDataSampler service = usageDataTracker == null ? null
: usageDataTracker.getService();
return service == null ? IUsageDataSampler.NULL : service;
}
/**
* Returns the shared instance
*
* @return the shared instance
*/
public static SpellingPlugin getDefault() {
return plugin;
}
public static void log(Throwable e) {
log(e, ""); //$NON-NLS-1$
}
public static void log(Throwable e, String message) {
getDefault().getLog()
.log(new Status(IStatus.ERROR, PLUGIN_ID, message, e));
}
public static boolean isSpellingCheckEnabled() {
return getDefault().getPreferenceStore()
.getBoolean(SPELLING_CHECK_ENABLED);
}
public static String getBundleDataPath(String subPath) {
IPath stateLocation = getDefault().getStateLocation();
return stateLocation.append(subPath).makeAbsolute().toOSString();
}
}