From 5eca0a1d5aa61df902429fbc20051d43188996cd Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Thu, 8 Sep 2011 18:55:07 +0200 Subject: [PATCH] move filetypes topic to FileTypeManager; move its listener to PsiVFSListener --- .../src/com/intellij/ide/todo/TodoView.java | 4 ++-- .../roots/impl/DirectoryIndexImpl.java | 3 +-- .../roots/impl/ProjectRootManagerImpl.java | 3 +-- .../psi/impl/file/impl/FileManagerImpl.java | 20 ++++++++----------- .../psi/impl/file/impl/PsiVFSListener.java | 9 +++++++++ .../util/indexing/FileBasedIndex.java | 2 +- .../src/com/intellij/AppTopics.java | 2 -- .../openapi/fileTypes/FileTypeManager.java | 8 ++++++-- .../impl/FileEditorManagerImpl.java | 4 ++-- .../impl/text/TextEditorComponent.java | 4 ++-- .../fileTypes/impl/FileTypeManagerImpl.java | 7 +++---- .../idea/copyright/util/FileTypeUtil.java | 3 +-- 12 files changed, 36 insertions(+), 33 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/ide/todo/TodoView.java b/platform/lang-impl/src/com/intellij/ide/todo/TodoView.java index f86deb45ca37..1d1abe1cfe9b 100644 --- a/platform/lang-impl/src/com/intellij/ide/todo/TodoView.java +++ b/platform/lang-impl/src/com/intellij/ide/todo/TodoView.java @@ -16,7 +16,6 @@ package com.intellij.ide.todo; -import com.intellij.AppTopics; import com.intellij.ide.IdeBundle; import com.intellij.openapi.Disposable; import com.intellij.openapi.application.ApplicationManager; @@ -26,6 +25,7 @@ import com.intellij.openapi.components.State; import com.intellij.openapi.components.Storage; import com.intellij.openapi.fileTypes.FileTypeEvent; import com.intellij.openapi.fileTypes.FileTypeListener; +import com.intellij.openapi.fileTypes.FileTypeManager; import com.intellij.openapi.progress.ProcessCanceledException; import com.intellij.openapi.progress.ProgressManager; import com.intellij.openapi.project.DumbService; @@ -102,7 +102,7 @@ public class TodoView implements PersistentStateComponent, Disposable { TodoConfiguration.getInstance().addPropertyChangeListener(myPropertyChangeListener,this); MessageBusConnection connection = myProject.getMessageBus().connect(this); - connection.subscribe(AppTopics.FILE_TYPES, new MyFileTypeListener()); + connection.subscribe(FileTypeManager.TOPIC, new MyFileTypeListener()); } public void loadState(Element element) { diff --git a/platform/lang-impl/src/com/intellij/openapi/roots/impl/DirectoryIndexImpl.java b/platform/lang-impl/src/com/intellij/openapi/roots/impl/DirectoryIndexImpl.java index 03b597b748a7..236881647f0f 100644 --- a/platform/lang-impl/src/com/intellij/openapi/roots/impl/DirectoryIndexImpl.java +++ b/platform/lang-impl/src/com/intellij/openapi/roots/impl/DirectoryIndexImpl.java @@ -16,7 +16,6 @@ package com.intellij.openapi.roots.impl; -import com.intellij.AppTopics; import com.intellij.ProjectTopics; import com.intellij.openapi.components.ProjectComponent; import com.intellij.openapi.diagnostic.Logger; @@ -156,7 +155,7 @@ public class DirectoryIndexImpl extends DirectoryIndex implements ProjectCompone } private void subscribeToFileChanges() { - myConnection.subscribe(AppTopics.FILE_TYPES, new FileTypeListener() { + myConnection.subscribe(FileTypeManager.TOPIC, new FileTypeListener() { public void beforeFileTypesChanged(FileTypeEvent event) { } diff --git a/platform/lang-impl/src/com/intellij/openapi/roots/impl/ProjectRootManagerImpl.java b/platform/lang-impl/src/com/intellij/openapi/roots/impl/ProjectRootManagerImpl.java index e478b9a4e20b..41bd4e0cafd6 100644 --- a/platform/lang-impl/src/com/intellij/openapi/roots/impl/ProjectRootManagerImpl.java +++ b/platform/lang-impl/src/com/intellij/openapi/roots/impl/ProjectRootManagerImpl.java @@ -16,7 +16,6 @@ package com.intellij.openapi.roots.impl; -import com.intellij.AppTopics; import com.intellij.ProjectTopics; import com.intellij.ide.caches.CacheUpdater; import com.intellij.openapi.Disposable; @@ -163,7 +162,7 @@ public class ProjectRootManagerImpl extends ProjectRootManagerEx implements Proj StartupManager startupManager) { myProject = (ProjectEx)project; myConnection = project.getMessageBus().connect(project); - myConnection.subscribe(AppTopics.FILE_TYPES, new FileTypeListener() { + myConnection.subscribe(FileTypeManager.TOPIC, new FileTypeListener() { public void beforeFileTypesChanged(FileTypeEvent event) { beforeRootsChange(true); } diff --git a/platform/lang-impl/src/com/intellij/psi/impl/file/impl/FileManagerImpl.java b/platform/lang-impl/src/com/intellij/psi/impl/file/impl/FileManagerImpl.java index 2f62b89a624c..272946bcaf98 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/file/impl/FileManagerImpl.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/file/impl/FileManagerImpl.java @@ -204,18 +204,6 @@ public class FileManagerImpl implements FileManager { myDisposed = false; myInitialized = true; - myConnection.subscribe(AppTopics.FILE_TYPES, new FileTypeListener() { - public void beforeFileTypesChanged(FileTypeEvent event) {} - - public void fileTypesChanged(FileTypeEvent e) { - handleFileTypesChange(new FileTypesChanged() { - protected void updateMaps() { - removeInvalidFilesAndDirs(true); - } - }); - } - }); - myConnection.subscribe(AppTopics.FILE_DOCUMENT_SYNC, new MyFileDocumentManagerAdapter()); } @@ -223,6 +211,14 @@ public class FileManagerImpl implements FileManager { return myInitialized; } + void processFileTypesChanged() { + handleFileTypesChange(new FileTypesChanged() { + protected void updateMaps() { + removeInvalidFilesAndDirs(true); + } + }); + } + private abstract class FileTypesChanged implements Runnable { protected abstract void updateMaps(); 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 55eb6ea20e7c..980ccffe5b2d 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 @@ -21,6 +21,8 @@ import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.Document; import com.intellij.openapi.fileEditor.FileDocumentManager; import com.intellij.openapi.fileTypes.FileType; +import com.intellij.openapi.fileTypes.FileTypeEvent; +import com.intellij.openapi.fileTypes.FileTypeListener; import com.intellij.openapi.fileTypes.FileTypeManager; import com.intellij.openapi.module.Module; import com.intellij.openapi.roots.*; @@ -63,6 +65,13 @@ public class PsiVFSListener extends VirtualFileAdapter { public void run() { myConnection.subscribe(VirtualFileManager.VFS_CHANGES, new BulkVirtualFileListenerAdapter(PsiVFSListener.this)); myConnection.subscribe(ProjectTopics.PROJECT_ROOTS, new MyModuleRootListener()); + myConnection.subscribe(FileTypeManager.TOPIC, new FileTypeListener() { + public void beforeFileTypesChanged(FileTypeEvent event) {} + + public void fileTypesChanged(FileTypeEvent e) { + myFileManager.processFileTypesChanged(); + } + }); } }); } diff --git a/platform/lang-impl/src/com/intellij/util/indexing/FileBasedIndex.java b/platform/lang-impl/src/com/intellij/util/indexing/FileBasedIndex.java index 25706fb0a210..fa1ed8442e3c 100644 --- a/platform/lang-impl/src/com/intellij/util/indexing/FileBasedIndex.java +++ b/platform/lang-impl/src/com/intellij/util/indexing/FileBasedIndex.java @@ -165,7 +165,7 @@ public class FileBasedIndex implements ApplicationComponent { } }); - connection.subscribe(AppTopics.FILE_TYPES, new FileTypeListener() { + connection.subscribe(FileTypeManager.TOPIC, new FileTypeListener() { private Map> myTypeToExtensionMap; public void beforeFileTypesChanged(final FileTypeEvent event) { cleanupProcessedFlag(); diff --git a/platform/platform-api/src/com/intellij/AppTopics.java b/platform/platform-api/src/com/intellij/AppTopics.java index 6d638d31af33..fd4a613a7438 100644 --- a/platform/platform-api/src/com/intellij/AppTopics.java +++ b/platform/platform-api/src/com/intellij/AppTopics.java @@ -20,10 +20,8 @@ package com.intellij; import com.intellij.openapi.fileEditor.FileDocumentManagerListener; -import com.intellij.openapi.fileTypes.FileTypeListener; import com.intellij.util.messages.Topic; public class AppTopics { - public static final Topic FILE_TYPES = new Topic("File types change", FileTypeListener.class); public static final Topic FILE_DOCUMENT_SYNC = new Topic("Document load, save and reload events", FileDocumentManagerListener.class); } \ No newline at end of file diff --git a/platform/platform-api/src/com/intellij/openapi/fileTypes/FileTypeManager.java b/platform/platform-api/src/com/intellij/openapi/fileTypes/FileTypeManager.java index e53e0b12f165..1112275b0dd7 100644 --- a/platform/platform-api/src/com/intellij/openapi/fileTypes/FileTypeManager.java +++ b/platform/platform-api/src/com/intellij/openapi/fileTypes/FileTypeManager.java @@ -19,6 +19,7 @@ import com.intellij.openapi.application.ApplicationComponentLocator; import com.intellij.openapi.application.CachedSingletonsRegistry; import com.intellij.openapi.util.Getter; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.util.messages.Topic; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -41,6 +42,9 @@ public abstract class FileTypeManager extends FileTypeRegistry { } private static FileTypeManager ourInstance = CachedSingletonsRegistry.markCachedField(FileTypeManager.class); + + public static final Topic TOPIC = new Topic("File types change", FileTypeListener.class); + /** * Returns the singleton instance of the FileTypeManager component. * @@ -117,7 +121,7 @@ public abstract class FileTypeManager extends FileTypeRegistry { * registered file types. * * @param listener The listener instance. - * @deprecated Subscribe to #FILE_TYPES on any message bus level. + * @deprecated Subscribe to #TOPIC on any message bus level. */ public abstract void addFileTypeListener(@NotNull FileTypeListener listener); @@ -127,7 +131,7 @@ public abstract class FileTypeManager extends FileTypeRegistry { * registered file types. * * @param listener The listener instance. - * @deprecated Subscribe to #FILE_TYPES on any message bus level. + * @deprecated Subscribe to #TOPIC on any message bus level. */ public abstract void removeFileTypeListener(@NotNull FileTypeListener listener); diff --git a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/FileEditorManagerImpl.java b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/FileEditorManagerImpl.java index df53c6db5a8c..2fdd884c2660 100644 --- a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/FileEditorManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/FileEditorManagerImpl.java @@ -15,7 +15,6 @@ */ package com.intellij.openapi.fileEditor.impl; -import com.intellij.AppTopics; import com.intellij.ProjectTopics; import com.intellij.ide.IdeBundle; import com.intellij.ide.plugins.PluginManager; @@ -41,6 +40,7 @@ import com.intellij.openapi.fileEditor.impl.text.TextEditorImpl; import com.intellij.openapi.fileEditor.impl.text.TextEditorProvider; import com.intellij.openapi.fileTypes.FileTypeEvent; import com.intellij.openapi.fileTypes.FileTypeListener; +import com.intellij.openapi.fileTypes.FileTypeManager; import com.intellij.openapi.project.DumbAwareRunnable; import com.intellij.openapi.project.DumbService; import com.intellij.openapi.project.Project; @@ -1201,7 +1201,7 @@ public class FileEditorManagerImpl extends FileEditorManagerEx implements Projec final MyFileStatusListener myFileStatusListener = new MyFileStatusListener(); fileStatusManager.addFileStatusListener(myFileStatusListener, myProject); } - connection.subscribe(AppTopics.FILE_TYPES, new MyFileTypeListener()); + connection.subscribe(FileTypeManager.TOPIC, new MyFileTypeListener()); connection.subscribe(ProjectTopics.PROJECT_ROOTS, new MyRootsListener()); /** diff --git a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/text/TextEditorComponent.java b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/text/TextEditorComponent.java index 212d3d84b664..35aceb5940a1 100644 --- a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/text/TextEditorComponent.java +++ b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/text/TextEditorComponent.java @@ -15,7 +15,6 @@ */ package com.intellij.openapi.fileEditor.impl.text; -import com.intellij.AppTopics; import com.intellij.ide.ui.customization.CustomActionsSchema; import com.intellij.openapi.actionSystem.*; import com.intellij.openapi.application.ApplicationManager; @@ -36,6 +35,7 @@ import com.intellij.openapi.fileEditor.FileEditorManager; import com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl; import com.intellij.openapi.fileTypes.FileTypeEvent; import com.intellij.openapi.fileTypes.FileTypeListener; +import com.intellij.openapi.fileTypes.FileTypeManager; import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.VirtualFileAdapter; @@ -107,7 +107,7 @@ class TextEditorComponent extends JPanel implements DataProvider{ myEditorPropertyChangeListener = new MyEditorPropertyChangeListener(); myConnection = project.getMessageBus().connect(); - myConnection.subscribe(AppTopics.FILE_TYPES, new MyFileTypeListener()); + myConnection.subscribe(FileTypeManager.TOPIC, new MyFileTypeListener()); myVirtualFileListener = new MyVirtualFileListener(); myFile.getFileSystem().addVirtualFileListener(myVirtualFileListener); diff --git a/platform/platform-impl/src/com/intellij/openapi/fileTypes/impl/FileTypeManagerImpl.java b/platform/platform-impl/src/com/intellij/openapi/fileTypes/impl/FileTypeManagerImpl.java index 2a494c77400e..541c76b49c4e 100644 --- a/platform/platform-impl/src/com/intellij/openapi/fileTypes/impl/FileTypeManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/fileTypes/impl/FileTypeManagerImpl.java @@ -15,7 +15,6 @@ */ package com.intellij.openapi.fileTypes.impl; -import com.intellij.AppTopics; import com.intellij.ide.highlighter.custom.SyntaxTable; import com.intellij.ide.highlighter.custom.impl.ReadFileType; import com.intellij.ide.plugins.PluginManager; @@ -408,7 +407,7 @@ public class FileTypeManagerImpl extends FileTypeManagerEx implements NamedJDOME public void fireBeforeFileTypesChanged() { FileTypeEvent event = new FileTypeEvent(this); - myMessageBus.syncPublisher(AppTopics.FILE_TYPES).beforeFileTypesChanged(event); + myMessageBus.syncPublisher(TOPIC).beforeFileTypesChanged(event); } public SchemesManager getSchemesManager() { @@ -416,14 +415,14 @@ public class FileTypeManagerImpl extends FileTypeManagerEx implements NamedJDOME } public void fireFileTypesChanged() { - myMessageBus.syncPublisher(AppTopics.FILE_TYPES).fileTypesChanged(new FileTypeEvent(this)); + myMessageBus.syncPublisher(TOPIC).fileTypesChanged(new FileTypeEvent(this)); } private final Map myAdapters = new HashMap(); public void addFileTypeListener(@NotNull FileTypeListener listener) { final MessageBusConnection connection = myMessageBus.connect(); - connection.subscribe(AppTopics.FILE_TYPES, listener); + connection.subscribe(TOPIC, listener); myAdapters.put(listener, connection); } 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 a90fd33ef1f4..2285b65309a3 100644 --- a/plugins/copyright/src/com/maddyhome/idea/copyright/util/FileTypeUtil.java +++ b/plugins/copyright/src/com/maddyhome/idea/copyright/util/FileTypeUtil.java @@ -16,7 +16,6 @@ package com.maddyhome.idea.copyright.util; -import com.intellij.AppTopics; import com.intellij.lang.Commenter; import com.intellij.lang.LanguageCommenters; import com.intellij.openapi.components.ServiceManager; @@ -294,7 +293,7 @@ public class FileTypeUtil { createMappings(); loadFileTypes(); - bus.connect().subscribe(AppTopics.FILE_TYPES, new FileTypeListener() { + bus.connect().subscribe(FileTypeManager.TOPIC, new FileTypeListener() { @Override public void beforeFileTypesChanged(FileTypeEvent event) { }