package tk.eclipse.plugin.htmleditor;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.IExtension;
import org.eclipse.core.runtime.IExtensionPoint;
import org.eclipse.core.runtime.IExtensionRegistry;
import org.eclipse.core.runtime.ILog;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.Status;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.resource.ImageRegistry;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.eclipse.update.internal.core.UpdateCore;
import org.eclipse.update.internal.ui.UpdateUI;
import org.osgi.framework.BundleContext;
import tk.eclipse.plugin.htmleditor.views.IPaletteContributer;
import tk.eclipse.plugin.jseditor.launch.JavaScriptLaunchUtil;
/**
* The main plugin class to be used in the desktop.
*
* @author Naoki Takezoe
*/
public class HTMLPlugin extends AbstractUIPlugin {
//The shared instance.
private static HTMLPlugin plugin;
//Resource bundle.
private ResourceBundle resourceBundle;
//Color Provider
private ColorProvider colorProvider;
public static final String ICON_HTML = "_icon_html";
public static final String ICON_XML = "_icon_xml";
public static final String ICON_JSP = "_icon_jsp";
public static final String ICON_CSS = "_icon_css";
public static final String ICON_WEB = "_icon_web";
public static final String ICON_FILE = "_icon_file";
public static final String ICON_TAG = "_icon_tag";
public static final String ICON_ATTR = "_icon_attribute";
public static final String ICON_VALUE = "_icon_value";
public static final String ICON_FOLDER = "_icon_folder";
public static final String ICON_BUTTON = "_icon_button";
public static final String ICON_TEXT = "_icon_text";
public static final String ICON_RADIO = "_icon_radio";
public static final String ICON_CHECK = "_icon_check";
public static final String ICON_SELECT = "_icon_select";
public static final String ICON_TEXTAREA = "_icon_textarea";
public static final String ICON_TABLE = "_icon_table";
public static final String ICON_COLUMN = "_icon_column";
public static final String ICON_LABEL = "_icon_label";
public static final String ICON_PASS = "_icon_pass";
public static final String ICON_LIST = "_icon_list";
public static final String ICON_PANEL = "_icon_panel";
public static final String ICON_LINK = "_icon_link";
public static final String ICON_HIDDEN = "_icon_hidden";
public static final String ICON_OUTPUT = "_icon_output";
public static final String ICON_CSS_RULE = "_icon_css_rule";
public static final String ICON_CSS_PROP = "_icon_css_prop";
public static final String ICON_PROPERTY = "_icon_property";
public static final String ICON_FORWARD = "_icon_forward";
public static final String ICON_BACKWARD = "_icon_backword";
public static final String ICON_REFRESH = "_icon_refresh";
public static final String ICON_RUN = "_icon_run";
public static final String ICON_TAG_HTML = "_icon_html";
public static final String ICON_TITLE = "_icon_title";
public static final String ICON_FORM = "_icon_form";
public static final String ICON_IMAGE = "_icon_image";
public static final String ICON_COMMENT = "_icon_comment";
public static final String ICON_BODY = "_icon_body";
public static final String ICON_DOCTYPE = "_icon_doctype";
public static final String ICON_ELEMENT = "_icon_element";
public static final String ICON_ATTLIST = "_icon_attlist";
public static final String ICON_NOTATE = "_icon_notate";
public static final String ICON_ENTITY = "_icon_entity";
public static final String ICON_FUNCTION = "_icon_function";
public static final String ICON_VARIABLE = "_icon_variable";
public static final String ICON_CLASS = "_icon_class";
public static final String ICON_TEMPLATE = "_icon_template";
public static final String ICON_JAVASCRIPT = "_icon_javascript";
public static final String ICON_XSD = "_icon_xsd";
public static final String ICON_DTD = "_icon_dtd";
public static final String ICON_PALETTE = "_icon_palette";
public static final String ICON_ERROR = "_icon_error";
public static final String ICON_JAR = "_icon_jar";
public static final String ICON_JAR_EXT = "_icon_jar_ext";
public static final String PREF_COLOR_TAG = "_pref_color_tag";
public static final String PREF_COLOR_COMMENT = "_pref_color_comment";
public static final String PREF_COLOR_STRING = "_pref_color_string";
public static final String PREF_COLOR_DOCTYPE = "_pref_color_doctype";
public static final String PREF_COLOR_SCRIPT = "_pref_color_scriptlet";
public static final String PREF_COLOR_CSSPROP = "_pref_color_cssprop";
public static final String PREF_COLOR_CSSCOMMENT = "_pref_color_csscomment";
public static final String PREF_COLOR_CSSVALUE = "_pref_color_cssvalue";
public static final String PREF_EDITOR_TYPE = "_pref_editor_type";
public static final String PREF_DTD_URI = "_pref_dtd_uri";
public static final String PREF_DTD_PATH = "_pref_dtd_path";
public static final String PREF_DTD_CACHE = "_pref_dtd_cache";
public static final String PREF_ASSIST_AUTO = "_pref_assist_auto";
public static final String PREF_ASSIST_CHARS = "_pref_assist_chars";
public static final String PREF_ASSIST_TIMES = "_pref_assist_times";
public static final String PREF_ASSIST_CLOSE = "_pref_assist_close";
public static final String PREF_PALETTE_ITEMS = "_pref_palette_items";
public static final String PREF_USE_SOFTTAB = "_pref_use_softtab";
public static final String PREF_SOFTTAB_WIDTH = "_pref_softtab_width";
public static final String PREF_COLOR_BG = "AbstractTextEditor.Color.Background";
public static final String PREF_COLOR_BG_DEF = "AbstractTextEditor.Color.Background.SystemDefault";
public static final String PREF_COLOR_FG = "__pref_color_foreground";
public static final String PREF_TLD_URI = "__pref_tld_uri";
public static final String PREF_TLD_PATH = "__pref_tld_path";
public static final String PREF_JSP_COMMENT = "__pref_jsp_comment";
public static final String PREF_JSP_KEYWORD = "__pref_jsp_keyword";
public static final String PREF_JSP_STRING = "__pref_jsp_string";
public static final String PREF_PAIR_CHAR = "__pref_pair_character";
public static final String PREF_COLOR_JSSTRING = "__pref_color_jsstring";
public static final String PREF_COLOR_JSKEYWORD = "__pref_color_jskeyword";
public static final String PREF_COLOR_JSCOMMENT = "__pref_color_jscomment";
public static final String PREF_CUSTOM_ATTRS = "__pref_custom_attributes";
public static final String PREF_CUSTOM_ELEMENTS = "__pref_custom_elements";
public static final String PREF_TASK_TAGS = "__pref_task_tags";
public static final String[] SUPPORTED_IMAGE_TYPES = {
"gif","png","jpg","jpeg","bmp"
};
private static Map innerDTD = new LinkedHashMap();
static {
innerDTD.put("http://java.sun.com/j2ee/dtds/web-app_2_2.dtd","/DTD/web-app_2_2.dtd");
innerDTD.put("http://java.sun.com/dtd/web-app_2_3.dtd","/DTD/web-app_2_3.dtd");
innerDTD.put("http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd","/DTD/web-jsptaglibrary_1_1.dtd");
innerDTD.put("http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd","/DTD/web-jsptaglibrary_1_2.dtd");
innerDTD.put("XMLSchema.dtd","/DTD/XMLSchema.dtd");
innerDTD.put("datatypes.dtd","/DTD/datatypes.dtd");
innerDTD.put("http://java.sun.com/xml/ns/j2ee","/XSD/web-app_2_4.xsd");
innerDTD.put("j2ee_1_4.xsd","/XSD/j2ee_1_4.xsd");
innerDTD.put("j2ee_web_services_1_1.xsd","/XSD/j2ee_web_services_1_1.xsd");
innerDTD.put("j2ee_web_services_client_1_1.xsd","/XSD/j2ee_web_services_client_1_1.xsd");
innerDTD.put("jsp_2_0.xsd","/XSD/jsp_2_0.xsd");
innerDTD.put("jspxml.xsd","/XSD/jspxml.xsd");
innerDTD.put("web-app_2_4.xsd","/XSD/web-app_2_4.xsd");
innerDTD.put("web-jsptablibrary_2_0.xsd","/XSD/web-jsptablibrary_2_0.xsd");
innerDTD.put("xml.xsd","/XSD/xml.xsd");
}
private static Map innerTLD = new LinkedHashMap();
static {
innerTLD.put("http://java.sun.com/jstl/core_rt","/TLD/c-1_0-rt.tld");
innerTLD.put("http://java.sun.com/jstl/core","/TLD/c-1_0.tld");
innerTLD.put("http://java.sun.com/jsp/jstl/core","/TLD/c.tld");
innerTLD.put("http://java.sun.com/jstl/fmt_rt","/TLD/fmt-1_0-rt.tld");
innerTLD.put("http://java.sun.com/jstl/fmt","/TLD/fmt-1_0.tld");
innerTLD.put("http://java.sun.com/jsp/jstl/fmt","/TLD/fmt.tld");
// innerTLD.put("http://java.sun.com/jsp/jstl/functions","/TLD/fn.tld");
innerTLD.put("http://java.sun.com/jstl/sql_rt","/TLD/sql-1_0-rt.tld");
innerTLD.put("http://java.sun.com/jstl/sql","/TLD/sql-1_0.tld");
innerTLD.put("http://java.sun.com/jsp/jstl/sql","/TLD/sql.tld");
innerTLD.put("http://java.sun.com/jstl/xml_rt","/TLD/x-1_0-rt.tld");
innerTLD.put("http://java.sun.com/jstl/xml","/TLD/x-1_0.tld");
innerTLD.put("http://java.sun.com/jsp/jstl/xml","/TLD/x.tld");
}
/**
* The constructor.
*/
public HTMLPlugin() {
super();
plugin = this;
try {
resourceBundle = ResourceBundle.getBundle("tk.eclipse.plugin.htmleditor.HTMLPluginResources");
} catch (MissingResourceException x) {
resourceBundle = null;
}
}
public String getPluginId(){
return getBundle().getSymbolicName();
}
public ColorProvider getColorProvider(){
return this.colorProvider;
}
public static Map getInnerDTD(){
return innerDTD;
}
public static Map getInnerTLD(){
return innerTLD;
}
/**
* This method is called upon plug-in activation
*/
public void start(BundleContext context) throws Exception {
super.start(context);
colorProvider = new ColorProvider(getPreferenceStore());
// activate org.eclipse.update.core plugin, and enable proxy settings
UpdateCore.getPlugin();
UpdateUI.getDefault();
}
protected void initializeImageRegistry(ImageRegistry reg) {
super.initializeImageRegistry(reg);
reg.put(ICON_HTML,ImageDescriptor.createFromURL(getBundle().getEntry("/icons/html.png")));
reg.put(ICON_XML,ImageDescriptor.createFromURL(getBundle().getEntry("/icons/xml.png")));
reg.put(ICON_JSP,ImageDescriptor.createFromURL(getBundle().getEntry("/icons/jsp.png")));
reg.put(ICON_CSS,ImageDescriptor.createFromURL(getBundle().getEntry("/icons/css.png")));
reg.put(ICON_WEB,ImageDescriptor.createFromURL(getBundle().getEntry("/icons/web.gif")));
reg.put(ICON_FILE,ImageDescriptor.createFromURL(getBundle().getEntry("/icons/file.gif")));
reg.put(ICON_TAG,ImageDescriptor.createFromURL(getBundle().getEntry("/icons/tag.gif")));
reg.put(ICON_ATTR,ImageDescriptor.createFromURL(getBundle().getEntry("/icons/attribute.gif")));
reg.put(ICON_VALUE,ImageDescriptor.createFromURL(getBundle().getEntry("/icons/value.gif")));
reg.put(ICON_FOLDER,ImageDescriptor.createFromURL(getBundle().getEntry("/icons/folder.gif")));
reg.put(ICON_BUTTON,ImageDescriptor.createFromURL(getBundle().getEntry("/icons/button.gif")));
reg.put(ICON_TEXT,ImageDescriptor.createFromURL(getBundle().getEntry("/icons/text.gif")));
reg.put(ICON_RADIO,ImageDescriptor.createFromURL(getBundle().getEntry("/icons/radio.gif")));
reg.put(ICON_CHECK,ImageDescriptor.createFromURL(getBundle().getEntry("/icons/checkbox.gif")));
reg.put(ICON_SELECT,ImageDescriptor.createFromURL(getBundle().getEntry("/icons/select.gif")));
reg.put(ICON_TEXTAREA,ImageDescriptor.createFromURL(getBundle().getEntry("/icons/textarea.gif")));
reg.put(ICON_TABLE,ImageDescriptor.createFromURL(getBundle().getEntry("/icons/table.gif")));
reg.put(ICON_COLUMN,ImageDescriptor.createFromURL(getBundle().getEntry("/icons/column.gif")));
reg.put(ICON_LABEL,ImageDescriptor.createFromURL(getBundle().getEntry("/icons/label.gif")));
reg.put(ICON_PASS,ImageDescriptor.createFromURL(getBundle().getEntry("/icons/password.gif")));
reg.put(ICON_LIST,ImageDescriptor.createFromURL(getBundle().getEntry("/icons/list.gif")));
reg.put(ICON_PANEL,ImageDescriptor.createFromURL(getBundle().getEntry("/icons/panel.gif")));
reg.put(ICON_LINK,ImageDescriptor.createFromURL(getBundle().getEntry("/icons/link.gif")));
reg.put(ICON_HIDDEN,ImageDescriptor.createFromURL(getBundle().getEntry("/icons/hidden.gif")));
reg.put(ICON_OUTPUT,ImageDescriptor.createFromURL(getBundle().getEntry("/icons/output.gif")));
reg.put(ICON_CSS_RULE,ImageDescriptor.createFromURL(getBundle().getEntry("/icons/css_rule.gif")));
reg.put(ICON_CSS_PROP,ImageDescriptor.createFromURL(getBundle().getEntry("/icons/css_prop.gif")));
reg.put(ICON_PROPERTY,ImageDescriptor.createFromURL(getBundle().getEntry("/icons/properties.gif")));
reg.put(ICON_FORWARD,ImageDescriptor.createFromURL(getBundle().getEntry("/icons/forward.gif")));
reg.put(ICON_BACKWARD,ImageDescriptor.createFromURL(getBundle().getEntry("/icons/backward.gif")));
reg.put(ICON_REFRESH,ImageDescriptor.createFromURL(getBundle().getEntry("/icons/refresh.gif")));
reg.put(ICON_RUN,ImageDescriptor.createFromURL(getBundle().getEntry("/icons/run.gif")));
reg.put(ICON_BODY, ImageDescriptor.createFromURL(getBundle().getEntry("/icons/body.gif")));
reg.put(ICON_FORM, ImageDescriptor.createFromURL(getBundle().getEntry("/icons/form.gif")));
reg.put(ICON_TAG_HTML, ImageDescriptor.createFromURL(getBundle().getEntry("/icons/html.gif")));
reg.put(ICON_IMAGE, ImageDescriptor.createFromURL(getBundle().getEntry("/icons/image.gif")));
reg.put(ICON_TITLE, ImageDescriptor.createFromURL(getBundle().getEntry("/icons/title.gif")));
reg.put(ICON_COMMENT, ImageDescriptor.createFromURL(getBundle().getEntry("/icons/comment.gif")));
reg.put(ICON_DOCTYPE, ImageDescriptor.createFromURL(getBundle().getEntry("/icons/doctype.gif")));
reg.put(ICON_ENTITY, ImageDescriptor.createFromURL(getBundle().getEntry("/icons/entity.gif")));
reg.put(ICON_ATTLIST, ImageDescriptor.createFromURL(getBundle().getEntry("/icons/attlist.gif")));
reg.put(ICON_ELEMENT, ImageDescriptor.createFromURL(getBundle().getEntry("/icons/element.gif")));
reg.put(ICON_NOTATE, ImageDescriptor.createFromURL(getBundle().getEntry("/icons/notation.gif")));
reg.put(ICON_FUNCTION, ImageDescriptor.createFromURL(getBundle().getEntry("/icons/function.gif")));
reg.put(ICON_VARIABLE, ImageDescriptor.createFromURL(getBundle().getEntry("/icons/var.gif")));
reg.put(ICON_CLASS, ImageDescriptor.createFromURL(getBundle().getEntry("/icons/class.gif")));
reg.put(ICON_TEMPLATE, ImageDescriptor.createFromURL(getBundle().getEntry("/icons/template.gif")));
reg.put(ICON_JAVASCRIPT, ImageDescriptor.createFromURL(getBundle().getEntry("/icons/javascript.gif")));
reg.put(ICON_XSD, ImageDescriptor.createFromURL(getBundle().getEntry("/icons/xsd.gif")));
reg.put(ICON_DTD, ImageDescriptor.createFromURL(getBundle().getEntry("/icons/dtd.gif")));
reg.put(ICON_PALETTE, ImageDescriptor.createFromURL(getBundle().getEntry("/icons/palette.gif")));
reg.put(ICON_ERROR, ImageDescriptor.createFromURL(getBundle().getEntry("/icons/error.gif")));
reg.put(ICON_JAR, ImageDescriptor.createFromURL(getBundle().getEntry("/icons/jar.gif")));
reg.put(ICON_JAR_EXT, ImageDescriptor.createFromURL(getBundle().getEntry("/icons/jar_ext.gif")));
}
/**
* This method is called when the plug-in is stopped
*/
public void stop(BundleContext context) throws Exception {
JavaScriptLaunchUtil.removeLibraries();
colorProvider.dispose();
super.stop(context);
}
/**
* Returns the shared instance.
*/
public static HTMLPlugin 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 = HTMLPlugin.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;
}
/**
* Open the alert dialog.
* @param message message
*/
public static void openAlertDialog(String message){
MessageBox box = new MessageBox(Display.getCurrent().getActiveShell(),SWT.NULL|SWT.ICON_ERROR);
box.setMessage(message);
box.setText(getResourceString("ErrorDialog.Caption"));
box.open();
}
/**
* Generates a message from a template and parameters.
* Replace template {0}{1}.. with parameters�B
*
* @param message message
* @param params parameterd
* @return generated message
*/
public static String createMessage(String message,String[] params){
for(int i=0;i<params.length;i++){
message = message.replaceAll("\\{"+i+"\\}",params[i]);
}
return message;
}
/**
* Logging debug information.
*
* @param message message
*/
public static void logDebug(String message){
ILog log = getDefault().getLog();
IStatus status = new Status(IStatus.INFO,getDefault().getPluginId(),0,message,null);
log.log(status);
}
/**
* Logging error information.
*
* @param message message
*/
public static void logError(String message){
ILog log = getDefault().getLog();
IStatus status = new Status(IStatus.ERROR,getDefault().getPluginId(),0,message,null);
log.log(status);
}
/**
* Logging exception information.
*
* @param ex exception
*/
public static void logException(Throwable ex){
ILog log = getDefault().getLog();
IStatus status = null;
if(ex instanceof CoreException){
status = ((CoreException)ex).getStatus();
} else {
status = new Status(IStatus.ERROR,getDefault().getPluginId(),0,ex.toString(),ex);
}
log.log(status);
}
/////////////////////////////////////////////////////////////////////////////////
// Methods for extention points
/////////////////////////////////////////////////////////////////////////////////
private String[] noValidationNatureIds;
public String[] getNoValidationNatureId(){
if(noValidationNatureIds==null){
ArrayList list = new ArrayList();
IExtensionRegistry registry = Platform.getExtensionRegistry();
IExtensionPoint point = registry.getExtensionPoint(getPluginId() + ".noValidationNatures");
IExtension[] extensions = point.getExtensions();
for(int i=0;i<extensions.length;i++){
IConfigurationElement[] elements = extensions[i].getConfigurationElements();
for (int j = 0; j < elements.length; j++) {
if ("noValidationNature".equals(elements[j].getName())) {
String natureId = elements[j].getAttribute("natureId");
list.add(natureId);
}
}
}
noValidationNatureIds = (String[])list.toArray(new String[list.size()]);
}
return noValidationNatureIds;
}
/**
* Returns contributed IFileAssistProcessor.
*/
public IFileAssistProcessor[] getFileAssistProcessors(){
try {
// if(fileAssists==null){
ArrayList list = new ArrayList();
IExtensionRegistry registry = Platform.getExtensionRegistry();
IExtensionPoint point = registry.getExtensionPoint(getPluginId() + ".fileAssistProcessor");
IExtension[] extensions = point.getExtensions();
for(int i=0;i<extensions.length;i++){
IConfigurationElement[] elements = extensions[i].getConfigurationElements();
for (int j = 0; j < elements.length; j++) {
IFileAssistProcessor assist = (IFileAssistProcessor) elements[j].createExecutableExtension("class");
list.add(assist);
}
}
return (IFileAssistProcessor[])list.toArray(new IFileAssistProcessor[list.size()]);
// }
// return fileAssists;
} catch(Exception ex){
logException(ex);
return new IFileAssistProcessor[0];
}
}
/** This contains URI and ICustomTagConverterContributer */
private HashMap converterContributers = null;
/**
* Returns contributed ICustomTagConverterContributer.
*/
public ICustomTagConverterContributer getCustomTagContributer(String uri){
try {
if(converterContributers==null){
converterContributers = new HashMap();
IExtensionRegistry registry = Platform.getExtensionRegistry();
IExtensionPoint point = registry.getExtensionPoint(getPluginId() + ".customTagConverter");
IExtension[] extensions = point.getExtensions();
for(int i=0;i<extensions.length;i++){
IConfigurationElement[] elements = extensions[i].getConfigurationElements();
for (int j = 0; j < elements.length; j++) {
if ("contributer".equals(elements[j].getName())) {
String contributerUri = elements[j].getAttribute("uri");
ICustomTagConverterContributer contributer = (ICustomTagConverterContributer) elements[j].createExecutableExtension("class");
converterContributers.put(contributerUri,contributer);
}
}
}
}
return (ICustomTagConverterContributer)converterContributers.get(uri);
} catch(Exception ex){
logException(ex);
return null;
}
}
/** List of ICustomTagAttributeAssist */
private ArrayList customTagAttrAssists = null;
/**
* Returns contributed ICustomTagAttributeAssist.
*/
public ICustomTagAttributeAssist[] getCustomTagAttributeAssists(){
try {
if(customTagAttrAssists==null){
customTagAttrAssists = new ArrayList();
IExtensionRegistry registry = Platform.getExtensionRegistry();
IExtensionPoint point = registry.getExtensionPoint(getPluginId() + ".customTagAttributeAssist");
IExtension[] extensions = point.getExtensions();
for(int i=0;i<extensions.length;i++){
IConfigurationElement[] elements = extensions[i].getConfigurationElements();
for (int j = 0; j < elements.length; j++) {
if ("customTagAttributeAssist".equals(elements[j].getName())) {
ICustomTagAttributeAssist loader = (ICustomTagAttributeAssist) elements[j].createExecutableExtension("class");
customTagAttrAssists.add(loader);
}
}
}
}
return (ICustomTagAttributeAssist[])customTagAttrAssists.toArray(new ICustomTagAttributeAssist[customTagAttrAssists.size()]);
} catch(Exception ex){
logException(ex);
return new ICustomTagAttributeAssist[0];
}
}
/** List of IHyperlinkProvider */
private ArrayList hyperlinkProviders = null;
/**
* Returns contributed IHyperlinkProvider.
*/
public IHyperlinkProvider[] getHyperlinkProviders(){
try {
if(hyperlinkProviders==null){
hyperlinkProviders = new ArrayList();
IExtensionRegistry registry = Platform.getExtensionRegistry();
IExtensionPoint point = registry.getExtensionPoint(getPluginId() + ".hyperlinkProvider");
IExtension[] extensions = point.getExtensions();
for(int i=0;i<extensions.length;i++){
IConfigurationElement[] elements = extensions[i].getConfigurationElements();
for (int j = 0; j < elements.length; j++) {
if ("provider".equals(elements[j].getName())) {
IHyperlinkProvider provider = (IHyperlinkProvider) elements[j].createExecutableExtension("class");
hyperlinkProviders.add(provider);
}
}
}
}
return (IHyperlinkProvider[])hyperlinkProviders.toArray(new IHyperlinkProvider[hyperlinkProviders.size()]);
} catch(Exception ex){
logException(ex);
return new IHyperlinkProvider[0];
}
}
/** List of IPaletteContributer */
private HashMap palette = null;
/**
* Returns contributed IPaletteContributer which was registered as specified group name.
*/
public IPaletteContributer getPaletteContributer(String group){
if(palette==null){
loadPalleteContributer();
}
return (IPaletteContributer)palette.get(group);
}
/**
* Returns group names of contributed IPaletteContributer.
*/
public String[] getPaletteContributerGroups(){
if(palette==null){
loadPalleteContributer();
}
return (String[])palette.keySet().toArray(new String[0]);
}
/**
* Load informations of IPaletteContributer.
*/
private void loadPalleteContributer(){
try {
palette = new HashMap();
IExtensionRegistry registry = Platform.getExtensionRegistry();
IExtensionPoint point = registry.getExtensionPoint(getPluginId() + ".paletteItem");
IExtension[] extensions = point.getExtensions();
for(int i=0;i<extensions.length;i++){
IConfigurationElement[] elements = extensions[i].getConfigurationElements();
for (int j = 0; j < elements.length; j++) {
if ("contributer".equals(elements[j].getName())) {
String group = elements[j].getAttribute("name");
IPaletteContributer contributer = (IPaletteContributer) elements[j].createExecutableExtension("class");
palette.put(group,contributer);
}
}
}
} catch(Exception ex){
logException(ex);
}
}
}