Docs added.

This commit is contained in:
Maxim Shafirov
2005-02-25 18:48:18 +03:00
parent 9ed6101c81
commit de50b9bb8d
5 changed files with 66 additions and 13 deletions
@@ -0,0 +1,35 @@
package com.intellij;
/**
* Extension points provided by IDEA core are listed here.
*/
public interface ExtensionPoints {
/**
* This extension point should be used instead of former application-components, project-components, module-components.
* Extension declaration sample is as follows:
* <pre>
* &lt;extensions xmlns="com.intellij"&gt;
* &lt;component area="IDEA_PROJECT"&gt;
* &lt;implementation&gt;my.plugin.pagckage.MyProjectComponent&lt;/implementation&gt;
* &lt;/component&gt;
* &lt;/extensions&gt;
* </pre>
*
* Possible registration areas are IDEA_PROJECT, MODULE_PROJECT which stand for ProjectComponent and ModuleComponent correspondingly.
* If area attribute is ommited the component will be registered in root area which corresponds to ApplicationComponent.
*/
String COMPONENT = "com.intellij.component";
/**
* This extension point allows a plugin vendor to provide the user ability to report fatal errors (aka exceptions) that happened in
* their plugin code.
* Extension declaration sample is as follows:
* <pre>
* &lt;extensions xmlns="com.intellij"&gt;
* &lt;errorHandler implementation="my.plugin.package.MyErrorHandler"/&gt;
* &lt;/extensions&gt;
* </pre>
* my.plugin.package.MyErrorHandler class must implement {@link com.intellij.openapi.diagnostic.ErrorReportSubmitter} abstract class.
*/
String ERROR_HANDLER = "com.intellij.errorHandler";
}
@@ -6,24 +6,40 @@ import com.intellij.openapi.extensions.PluginDescriptor;
import java.awt.*;
/**
* Created by IntelliJ IDEA.
* User: max
* Date: Feb 17, 2005
* Time: 9:11:44 PM
* To change this template use File | Settings | File Templates.
* This class should be extended by plugin vendor and provided by means of {@link com.intellij.ExtensionPoints#ERROR_HANDLER} if
* reporting errors that happened in plugin code to vendor is desirable.
*/
public abstract class ErrorReportSubmitter implements PluginAware {
public final static String ERROR_HANDLER_EXTENSION_POINT = "com.intellij.errorHandler";
private PluginDescriptor myPlugin;
/**
* Called by the framework. Allows to identify the plugin that provided this extension.
* @param plugin
*/
public void setPluginDescriptor(PluginDescriptor plugin) {
myPlugin = plugin;
}
/**
* @return plugin that provided this particular extension
*/
public PluginDescriptor getPluginDescriptor() {
return myPlugin;
}
/**
* @return "Report to vendor" action text to be used in Error Reporter user interface. For example: "Report to JetBrains".
*/
public abstract String getReportActionText();
/**
* This method is called whenever fatal error (aka exception) in plugin code had happened and user decided to report this problem to
* plugin vendor.
* @param events sequence of the fatal error descriptors. Fatal errors that happened immediately one after another most probably caused
* by first one that happened so it's a common practice to submit only first one. Array passed is guaranteed to have at least one element.
* @param parentComponent one usually wants to show up a dialog asking user for additional details and probably authentication info.
* parentComponent parameter is passed so dialog that would come up would be properly aligned with its parent dialog (IDE Fatal Errors).
* @return submission result status.
*/
public abstract SubmittedReportInfo submit(IdeaLoggingEvent[] events, Component parentComponent);
}
@@ -8,6 +8,7 @@ package com.intellij.diagnostic;
* @author kir, max
*/
import com.intellij.ExtensionPoints;
import com.intellij.ide.BrowserUtil;
import com.intellij.ide.plugins.PluginManager;
import com.intellij.ide.reporter.ScrData;
@@ -467,7 +468,7 @@ public class IdeErrorsDialog extends DialogWrapper implements MessagePoolListene
private ErrorReportSubmitter getSubmitter(final AbstractMessage logMessage) {
final String pluginName = findPluginName(logMessage.getThrowable());
final Object[] reporters = Extensions.getRootArea().getExtensionPoint(ErrorReportSubmitter.ERROR_HANDLER_EXTENSION_POINT)
final Object[] reporters = Extensions.getRootArea().getExtensionPoint(ExtensionPoints.ERROR_HANDLER)
.getExtensions();
ErrorReportSubmitter submitter = null;
for (int i = 0; i < reporters.length; i++) {
@@ -1,5 +1,6 @@
package com.intellij.ide.plugins;
import com.intellij.ExtensionPoints;
import com.intellij.diagnostic.ITNReporter;
import com.intellij.ide.plugins.cl.IdeaClassLoader;
import com.intellij.ide.plugins.cl.PluginClassLoader;
@@ -40,7 +41,6 @@ import java.util.zip.ZipFile;
public class PluginManager {
//Logger is lasy-initialized in order not to use it outside the appClassLoader
private static Logger ourLogger = null;
public static final String COMPONENT_EXTENSION_POINT = "com.intellij.component";
private static Logger getLogger() {
if (ourLogger == null) {
@@ -125,12 +125,12 @@ public class PluginManager {
Extensions.registerAreaClass("IDEA_PROJECT", null);
Extensions.registerAreaClass("IDEA_MODULE", "IDEA_PROJECT");
Extensions.getRootArea().registerExtensionPoint(COMPONENT_EXTENSION_POINT, ComponentDescriptor.class.getName());
Extensions.getRootArea().registerExtensionPoint(ExtensionPoints.COMPONENT, ComponentDescriptor.class.getName());
Extensions.getRootArea().getExtensionPoint(Extensions.AREA_LISTENER_EXTENSION_POINT).registerExtension(new AreaListener() {
public void areaCreated(String areaClass, AreaInstance areaInstance) {
if ("IDEA_PROJECT".equals(areaClass) || "IDEA_MODULE".equals(areaClass)) {
Extensions.getArea(areaInstance).registerExtensionPoint(COMPONENT_EXTENSION_POINT, ComponentDescriptor.class.getName());
Extensions.getArea(areaInstance).registerExtensionPoint(ExtensionPoints.COMPONENT, ComponentDescriptor.class.getName());
}
}
@@ -138,8 +138,8 @@ public class PluginManager {
}
}, LoadingOrder.FIRST);
Extensions.getRootArea().registerExtensionPoint(ErrorReportSubmitter.ERROR_HANDLER_EXTENSION_POINT, ErrorReportSubmitter.class.getName());
Extensions.getRootArea().getExtensionPoint(ErrorReportSubmitter.ERROR_HANDLER_EXTENSION_POINT).registerExtension(new ITNReporter());
Extensions.getRootArea().registerExtensionPoint(ExtensionPoints.ERROR_HANDLER, ErrorReportSubmitter.class.getName());
Extensions.getRootArea().getExtensionPoint(ExtensionPoints.ERROR_HANDLER).registerExtension(new ITNReporter());
}
public static boolean shouldLoadPlugins() {
@@ -1,5 +1,6 @@
package com.intellij.openapi.components.impl;
import com.intellij.ExtensionPoints;
import com.intellij.diagnostic.PluginException;
import com.intellij.ide.plugins.ComponentDescriptor;
import com.intellij.ide.plugins.PluginDescriptor;
@@ -375,7 +376,7 @@ public abstract class ComponentManagerImpl extends UserDataHolderBase implements
if (ApplicationManagerEx.getApplicationEx().isUnitTestMode()) return; // TODO: quick and dirty. To make tests running.
final ComponentDescriptor[] componentDescriptors =
(ComponentDescriptor[])extensionsArea.getExtensionPoint(PluginManager.COMPONENT_EXTENSION_POINT).getExtensions();
(ComponentDescriptor[])extensionsArea.getExtensionPoint(ExtensionPoints.COMPONENT).getExtensions();
for (int i = 0; i < componentDescriptors.length; i++) {
ComponentDescriptor descriptor = componentDescriptors[i];
final Map<String, String> options = descriptor.getOptionsMap();