to make programmatic registration easier, use explicit ExtensionPointName instance in extension points that use KeyedExtensionFactory

This commit is contained in:
Dmitry Jemerov
2013-10-29 19:15:05 +01:00
parent 6c1b0cc646
commit 2d080ba892
5 changed files with 20 additions and 6 deletions
@@ -20,12 +20,14 @@
package com.intellij.openapi.fileTypes;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.extensions.ExtensionPointName;
import com.intellij.openapi.extensions.KeyedFactoryEPBean;
import com.intellij.openapi.util.KeyedExtensionFactory;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
public class FileTypeExtensionFactory<T> extends KeyedExtensionFactory<T, FileType> {
public FileTypeExtensionFactory(@NotNull final Class<T> interfaceClass, @NonNls @NotNull final String epName) {
public FileTypeExtensionFactory(@NotNull final Class<T> interfaceClass, @NonNls @NotNull final ExtensionPointName<KeyedFactoryEPBean> epName) {
super(interfaceClass, epName, ApplicationManager.getApplication().getPicoContainer());
}
@@ -17,6 +17,8 @@ package com.intellij.openapi.fileTypes;
import com.intellij.lexer.Lexer;
import com.intellij.openapi.editor.colors.TextAttributesKey;
import com.intellij.openapi.extensions.ExtensionPointName;
import com.intellij.openapi.extensions.KeyedFactoryEPBean;
import com.intellij.psi.tree.IElementType;
import org.jetbrains.annotations.NotNull;
@@ -27,13 +29,15 @@ import org.jetbrains.annotations.NotNull;
* @see SyntaxHighlighterFactory#getSyntaxHighlighter(com.intellij.lang.Language, com.intellij.openapi.project.Project, com.intellij.openapi.vfs.VirtualFile)
*/
public interface SyntaxHighlighter {
ExtensionPointName<KeyedFactoryEPBean> EP_NAME = ExtensionPointName.create("com.intellij.syntaxHighlighter");
/**
* @deprecated
* @see SyntaxHighlighterFactory#getSyntaxHighlighter(com.intellij.openapi.project.Project, com.intellij.openapi.vfs.VirtualFile)
* @see SyntaxHighlighterFactory#getSyntaxHighlighter(com.intellij.lang.Language, com.intellij.openapi.project.Project, com.intellij.openapi.vfs.VirtualFile)
*/
SyntaxHighlighterProvider PROVIDER =
new FileTypeExtensionFactory<SyntaxHighlighterProvider>(SyntaxHighlighterProvider.class, "com.intellij.syntaxHighlighter").get();
new FileTypeExtensionFactory<SyntaxHighlighterProvider>(SyntaxHighlighterProvider.class, EP_NAME).get();
/**
* Returns the lexer used for highlighting the file. The lexer is invoked incrementally when the file is changed, so it must be
@@ -34,9 +34,10 @@ public abstract class KeyedExtensionFactory<T, KeyT> {
private final ExtensionPointName<KeyedFactoryEPBean> myEpName;
private final PicoContainer myPicoContainer;
public KeyedExtensionFactory(@NotNull final Class<T> interfaceClass, @NonNls @NotNull final String epName, @NotNull PicoContainer picoContainer) {
public KeyedExtensionFactory(@NotNull final Class<T> interfaceClass, @NonNls @NotNull final ExtensionPointName<KeyedFactoryEPBean> epName,
@NotNull PicoContainer picoContainer) {
myInterfaceClass = interfaceClass;
myEpName = new ExtensionPointName<KeyedFactoryEPBean>(epName);
myEpName = epName;
myPicoContainer = picoContainer;
}
@@ -21,6 +21,8 @@
package com.intellij.openapi.roots.ui;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.extensions.ExtensionPointName;
import com.intellij.openapi.extensions.KeyedFactoryEPBean;
import com.intellij.openapi.projectRoots.Sdk;
import com.intellij.openapi.projectRoots.ui.SdkPathEditor;
import com.intellij.openapi.roots.OrderRootType;
@@ -30,7 +32,8 @@ import org.jetbrains.annotations.NotNull;
import javax.swing.*;
public interface OrderRootTypeUIFactory {
KeyedExtensionFactory<OrderRootTypeUIFactory, OrderRootType> FACTORY = new KeyedExtensionFactory<OrderRootTypeUIFactory, OrderRootType>(OrderRootTypeUIFactory.class, "com.intellij.OrderRootTypeUI",
ExtensionPointName<KeyedFactoryEPBean> EP_NAME = ExtensionPointName.create("com.intellij.OrderRootTypeUI");
KeyedExtensionFactory<OrderRootTypeUIFactory, OrderRootType> FACTORY = new KeyedExtensionFactory<OrderRootTypeUIFactory, OrderRootType>(OrderRootTypeUIFactory.class, EP_NAME,
ApplicationManager
.getApplication().getPicoContainer()) {
@Override
@@ -15,6 +15,8 @@
*/
package com.intellij.ide.structureView;
import com.intellij.openapi.extensions.ExtensionPointName;
import com.intellij.openapi.extensions.KeyedFactoryEPBean;
import com.intellij.openapi.fileEditor.FileEditor;
import com.intellij.openapi.fileTypes.FileTypeExtensionFactory;
import com.intellij.openapi.project.Project;
@@ -32,8 +34,10 @@ import org.jetbrains.annotations.NotNull;
*/
public interface StructureViewBuilder {
ExtensionPointName<KeyedFactoryEPBean> EP_NAME = ExtensionPointName.create("com.intellij.structureViewBuilder");
StructureViewBuilderProvider PROVIDER =
new FileTypeExtensionFactory<StructureViewBuilderProvider>(StructureViewBuilderProvider.class, "com.intellij.structureViewBuilder").get();
new FileTypeExtensionFactory<StructureViewBuilderProvider>(StructureViewBuilderProvider.class, EP_NAME).get();
/**
* Returns the structure view implementation for the file displayed in the specified