diff --git a/platform/extensions/src/com/intellij/openapi/extensions/ExtensionPoint.java b/platform/extensions/src/com/intellij/openapi/extensions/ExtensionPoint.java index 0b5c05e525ce..28c9ad0250bf 100644 --- a/platform/extensions/src/com/intellij/openapi/extensions/ExtensionPoint.java +++ b/platform/extensions/src/com/intellij/openapi/extensions/ExtensionPoint.java @@ -121,6 +121,8 @@ public interface ExtensionPoint { void addExtensionPointListener(@NotNull ExtensionPointListener listener); void addExtensionPointListener(@NotNull ExtensionPointListener listener, boolean invokeForLoadedExtensions, @Nullable Disposable parentDisposable); + + void addExtensionPointListener(@NotNull ExtensionPointChangeListener listener, boolean invokeForLoadedExtensions, @Nullable Disposable parentDisposable); void removeExtensionPointListener(@NotNull ExtensionPointListener extensionPointListener); diff --git a/platform/extensions/src/com/intellij/openapi/extensions/ExtensionPointAdapter.java b/platform/extensions/src/com/intellij/openapi/extensions/ExtensionPointAdapter.java index b7e4f59c22ca..e7a42ecf293b 100644 --- a/platform/extensions/src/com/intellij/openapi/extensions/ExtensionPointAdapter.java +++ b/platform/extensions/src/com/intellij/openapi/extensions/ExtensionPointAdapter.java @@ -5,6 +5,7 @@ import org.jetbrains.annotations.NotNull; /** * @author yole + * @see ExtensionPointChangeListener */ public abstract class ExtensionPointAdapter implements ExtensionPointAndAreaListener { @Override diff --git a/platform/extensions/src/com/intellij/openapi/extensions/impl/ExtensionPointImpl.java b/platform/extensions/src/com/intellij/openapi/extensions/impl/ExtensionPointImpl.java index 6a8cb7b48552..dbd9ef2ac6ce 100644 --- a/platform/extensions/src/com/intellij/openapi/extensions/impl/ExtensionPointImpl.java +++ b/platform/extensions/src/com/intellij/openapi/extensions/impl/ExtensionPointImpl.java @@ -719,6 +719,21 @@ public abstract class ExtensionPointImpl implements ExtensionPoint, Iterab } } + @Override + public void addExtensionPointListener(@NotNull ExtensionPointChangeListener listener, boolean invokeForLoadedExtensions, @Nullable Disposable parentDisposable) { + addExtensionPointListener(new ExtensionPointListener() { + @Override + public void extensionAdded(@NotNull T extension, @NotNull PluginDescriptor pluginDescriptor) { + listener.extensionChanged(extension, pluginDescriptor); + } + + @Override + public void extensionRemoved(@NotNull T extension, @NotNull PluginDescriptor pluginDescriptor) { + listener.extensionChanged(extension, pluginDescriptor); + } + }, invokeForLoadedExtensions, parentDisposable); + } + @Override public synchronized void removeExtensionPointListener(@NotNull ExtensionPointListener listener) { removeListener(listener); diff --git a/platform/lang-impl/src/com/intellij/psi/impl/file/impl/PsiVFSListener.java b/platform/lang-impl/src/com/intellij/psi/impl/file/impl/PsiVFSListener.java index eee4558b9e26..566784292653 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/file/impl/PsiVFSListener.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/file/impl/PsiVFSListener.java @@ -73,26 +73,12 @@ public final class PsiVFSListener implements BulkFileListener { ExtensionPoint> point = LanguageSubstitutors.getInstance().getPoint(); if (point != null) { - point.addExtensionPointListener( - new ExtensionPointListener>() { + point.addExtensionPointListener((e, pd) -> { + if (project.isDisposed()) return; - @Override - public void extensionRemoved(@NotNull KeyedLazyInstance extension, - @NotNull PluginDescriptor pluginDescriptor) { - if (project.isDisposed()) return; - - PsiManagerImpl psiManager = (PsiManagerImpl)PsiManager.getInstance(project); - ((FileManagerImpl)(psiManager.getFileManager())).processFileTypesChanged(true); - } - - @Override - public void extensionAdded(@NotNull KeyedLazyInstance extension, - @NotNull PluginDescriptor pluginDescriptor) { - if (project.isDisposed()) return; - PsiManagerImpl psiManager = (PsiManagerImpl)PsiManager.getInstance(project); - ((FileManagerImpl)(psiManager.getFileManager())).processFileTypesChanged(true); - } - }, false, project); + PsiManagerImpl psiManager = (PsiManagerImpl)PsiManager.getInstance(project); + ((FileManagerImpl)(psiManager.getFileManager())).processFileTypesChanged(true); + }, false, project); } connection.subscribe(ProjectTopics.PROJECT_ROOTS, new MyModuleRootListener(project)); diff --git a/platform/lang-impl/src/com/intellij/psi/impl/source/tree/injected/InjectedLanguageManagerImpl.java b/platform/lang-impl/src/com/intellij/psi/impl/source/tree/injected/InjectedLanguageManagerImpl.java index d80c9a517221..533b9cddae5b 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/source/tree/injected/InjectedLanguageManagerImpl.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/source/tree/injected/InjectedLanguageManagerImpl.java @@ -56,17 +56,7 @@ public class InjectedLanguageManagerImpl extends InjectedLanguageManager impleme myDumbService = DumbService.getInstance(myProject); myDocManager = PsiDocumentManager.getInstance(project); - MultiHostInjector.MULTIHOST_INJECTOR_EP_NAME.getPoint(project).addExtensionPointListener(new ExtensionPointListener() { - @Override - public void extensionAdded(@NotNull MultiHostInjector injector, @NotNull PluginDescriptor pluginDescriptor) { - clearInjectorCache(); - } - - @Override - public void extensionRemoved(@NotNull MultiHostInjector injector, @NotNull PluginDescriptor pluginDescriptor) { - clearInjectorCache(); - } - }, false, this); + MultiHostInjector.MULTIHOST_INJECTOR_EP_NAME.getPoint(project).addExtensionPointListener((e, pd) -> clearInjectorCache(), false, this); LanguageInjector.EXTENSION_POINT_NAME.addExtensionPointListener(new ExtensionPointListener() { @Override diff --git a/plugins/copyright/src/com/maddyhome/idea/copyright/util/FileTypeUtil.java b/plugins/copyright/src/com/maddyhome/idea/copyright/util/FileTypeUtil.java index a1712ad30515..a8d705cf61ee 100644 --- a/plugins/copyright/src/com/maddyhome/idea/copyright/util/FileTypeUtil.java +++ b/plugins/copyright/src/com/maddyhome/idea/copyright/util/FileTypeUtil.java @@ -39,19 +39,7 @@ public class FileTypeUtil { types = null; } }); - Objects.requireNonNull(CopyrightUpdaters.INSTANCE.getPoint()) - .addExtensionPointListener( - new ExtensionPointListener> () { - @Override - public void extensionAdded(@NotNull KeyedLazyInstance extension, @NotNull PluginDescriptor pluginDescriptor) { - types = null; - } - - @Override - public void extensionRemoved(@NotNull KeyedLazyInstance extension, @NotNull PluginDescriptor pluginDescriptor) { - types = null; - } - }, false, application); + Objects.requireNonNull(CopyrightUpdaters.INSTANCE.getPoint()).addExtensionPointListener((e, pd) -> types = null, false, application); } public static String buildComment(FileType type, String template, LanguageOptions options) {