blob: 14cb15fd5030a7e879104b76c908e453aaeac030 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2007 IBM Corporation and Others
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Hisashi MIYASHITA - initial API and implementation
*******************************************************************************/
package org.eclipse.actf.examples.aibrowser;
import java.io.File;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.Locale;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
import org.eclipse.actf.ai.xmlstore.XMLStoreServiceUtil;
import org.eclipse.core.runtime.FileLocator;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Platform;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.ui.browser.IWebBrowser;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
/**
* The main plugin class to be used in the desktop.
*/
public class ClientPlugin extends AbstractUIPlugin {
private static final Path configPath = new Path("config");
//The shared instance.
private static ClientPlugin plugin;
private IWebBrowser webBrowser;
private BundleContext _context;
/**
* The constructor.
*/
public ClientPlugin() {
plugin = this;
}
private File getLocalPluginDir() {
URL url = FileLocator.find(getBundle(), configPath, null);
try {
url = FileLocator.toFileURL(url);
URI uri = new URI(url.getProtocol(), url.getHost(), url.getPath(), null);
return new File(uri);
} catch (IOException e) {
return null;
} catch (URISyntaxException e) {
return null;
}
}
/**
* This method is called upon plug-in activation
*/
@Override
public void start(BundleContext context) throws Exception {
super.start(context);
this._context = context;
File configDirFile = getLocalPluginDir();
if (configDirFile == null) return;
XMLStoreServiceUtil.addSystemStore(configDirFile);
}
public BundleContext getContext(){
return this._context;
}
/**
* This method is called when the plug-in is stopped
*/
@Override
public void stop(BundleContext context) throws Exception {
super.stop(context);
plugin = null;
}
/**
* Returns the shared instance.
*/
public static ClientPlugin getDefault() {
return plugin;
}
/**
* Returns an image descriptor for the image file at the given
* plug-in relative path.
*
* @param path the path
* @return the image descriptor
*/
public static ImageDescriptor getImageDescriptor(String path) {
return AbstractUIPlugin.imageDescriptorFromPlugin("org.eclipse.actf.examples.aibrowser", path);
}
void setWebBrowser(IWebBrowser webBrowser) {
this.webBrowser = webBrowser;
}
public IWebBrowser getWebBrowser() {
return webBrowser;
}
public static String getResourceString(String key) {
ResourceBundle bundle = Platform.getResourceBundle(getDefault().getBundle());
try {
return (null != bundle) ? bundle.getString(key) : key;
} catch (MissingResourceException mre) {
return "???" + key + "???";
}
}
private Bundle getBundle(String id) {
Bundle[] bundles = _context.getBundles();
for(int i = 0; i < bundles.length; i++) {
if (bundles[i].getSymbolicName().equals(id)) {
return bundles[i];
}
}
return null;
}
public String getHelpFileURI(String pluginId, String path) {
Bundle bundle = ClientPlugin.getDefault().getBundle(pluginId);
String nlStr = Locale.getDefault().getLanguage();
URL url = bundle.getResource("nl/"+nlStr+"/"+path);
if (url == null) {
url = bundle.getResource(path);
}
if (url == null)
return "";
try {
url = FileLocator.resolve(url);
} catch (IOException e) {
e.printStackTrace();
return "";
}
return url.toString();
}
}