/*******************************************************************************
* Copyright (c) 2007 Exadel, Inc. and Red Hat, Inc.
* Distributed under license by Red Hat, Inc. All rights reserved.
* This program is 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:
* Exadel, Inc. and Red Hat, Inc. - initial API and implementation
******************************************************************************/
package org.jboss.tools.common.text.xml;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
import org.eclipse.core.resources.IWorkspace;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.jdt.internal.ui.JavaPlugin;
import org.eclipse.jdt.ui.text.JavaTextTools;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.eclipse.wst.xml.ui.internal.XMLUIPlugin;
import org.jboss.tools.common.log.BaseUIPlugin;
import org.jboss.tools.common.log.IPluginLog;
import org.jboss.tools.jst.jsp.preferences.xpl.PreferenceConstants;
import org.jboss.tools.jst.jsp.preferences.xpl.XMLOccurrencePreferenceConstants;
import org.jboss.tools.jst.jsp.preferences.xpl.XMLOccurrencesPreferencePage;
import org.jboss.tools.jst.jsp.text.xpl.StructuredTextOccurrenceStructureProviderRegistry;
/**
* The main plugin class to be used in the desktop.
*/
public class XmlEditorPlugin extends BaseUIPlugin {
//The shared instance.
private static XmlEditorPlugin plugin;
//Resource bundle.
private ResourceBundle resourceBundle;
public static final String PLUGIN_ID = "org.jboss.tools.common.text.xml"; //$NON-NLS-1$
/**
* The constructor.
*/
public XmlEditorPlugin() {
plugin = this;
try {
resourceBundle= ResourceBundle.getBundle("org.jboss.tools.common.text.xml.XmlEditorPluginResources"); //$NON-NLS-1$
} catch (MissingResourceException x) {
resourceBundle = null;
}
initDefaultPluginPreferences();
}
/**
* Returns the shared instance.
*/
public static XmlEditorPlugin getDefault() {
return plugin;
}
/**
* Returns the workspace instance.
*/
public static IWorkspace getWorkspace() {
return ResourcesPlugin.getWorkspace();
}
/**
* Returns the string from the plugin's resource bundle,
* or 'key' if not found.
*/
public static String getResourceString(String key) {
ResourceBundle bundle= XmlEditorPlugin.getDefault().getResourceBundle();
try {
return bundle.getString(key);
} catch (MissingResourceException e) {
return key;
}
}
/**
* Returns the plugin's resource bundle,
*/
public ResourceBundle getResourceBundle() {
return resourceBundle;
}
protected void initializeDefaultPluginPreferences() {
super.initializeDefaultPluginPreferences();
// XmlPreferenceConstants.initializeDefaultValues(getPreferenceStore());
Method m;
try {
m = AbstractUIPlugin.class.getDeclaredMethod("initializeDefaultPluginPreferences", new Class[0]); //$NON-NLS-1$
m.setAccessible(true);
m.invoke(JavaPlugin.getDefault(), new Object[0]);
} catch (NoSuchMethodException e) {
} catch (IllegalArgumentException e) {
} catch (IllegalAccessException e) {
} catch (InvocationTargetException e) {
}
IPreferenceStore store = getPreferenceStore();
PreferenceConstants.initializeDefaultValues(store);
//New Text Editors
//JspPreferenceConstants.initializeDefaultValues(store);
// XmlPreferenceConstants.initializeDefaultValues(store);
(new XMLOccurrencesPreferencePage()).initializeDefaultValues();
}
public void initDefaultPluginPreferences() {
IPreferenceStore store = XMLUIPlugin.getDefault().getPreferenceStore();
PreferenceConstants.initializeDefaultValues(store);
XMLOccurrencePreferenceConstants.initializeDefaultValues(store);
}
/* New Text Editors */
private JavaTextTools fJavaTextTools;
public synchronized JavaTextTools getJavaTextTools() {
if (fJavaTextTools == null)
fJavaTextTools= new JavaTextTools(getPreferenceStore());
return fJavaTextTools;
}
/* New Text Editors */
/**
* The extension point registry for the <code>org.eclipse.jdt.ui.javaFoldingStructureProvider</code>
* extension point.
*
* @since 3.0
*/
private Map fOccurenceStructureProviderRegistry;
/**
* Returns the registry of the extensions to the <code>org.eclipse.jdt.ui.javaFoldingStructureProvider</code>
* extension point.
*
* @return the registry of contributed <code>IJavaFoldingStructureProvider</code>
* @since 3.0
*/
public synchronized StructuredTextOccurrenceStructureProviderRegistry getOccurrenceStructureProviderRegistry(String fEditorId) {
if (fOccurenceStructureProviderRegistry == null) {
fOccurenceStructureProviderRegistry = new HashMap();
}
if (fOccurenceStructureProviderRegistry.get(fEditorId) == null) {
fOccurenceStructureProviderRegistry.put(fEditorId, new StructuredTextOccurrenceStructureProviderRegistry(fEditorId));
}
return (StructuredTextOccurrenceStructureProviderRegistry)fOccurenceStructureProviderRegistry.get(fEditorId);
}
/**
* @return IPluginLog object
*/
public static IPluginLog getPluginLog() {
return getDefault();
}
}