diff --git a/platform/lang-impl/src/com/intellij/openapi/file/exclude/EnforcedPlainTextFileTypeManager.java b/platform/lang-impl/src/com/intellij/openapi/file/exclude/EnforcedPlainTextFileTypeManager.java index 07399bd8d7cb..67ec99535f03 100644 --- a/platform/lang-impl/src/com/intellij/openapi/file/exclude/EnforcedPlainTextFileTypeManager.java +++ b/platform/lang-impl/src/com/intellij/openapi/file/exclude/EnforcedPlainTextFileTypeManager.java @@ -78,36 +78,34 @@ public class EnforcedPlainTextFileTypeManager implements ProjectManagerListener return !originalType.isBinary() && originalType != FileTypes.PLAIN_TEXT && originalType != StdFileTypes.JAVA; } - public void markAsPlainText(VirtualFile... files) { - setPlainTextStatus(true, files); + public void markAsPlainText(@NotNull Project project, VirtualFile... files) { + setPlainTextStatus(project, true, files); } - public void resetOriginalFileType(VirtualFile... files) { - setPlainTextStatus(false, files); + public void resetOriginalFileType(@NotNull Project project, VirtualFile... files) { + setPlainTextStatus(project, false, files); } - private void setPlainTextStatus(final boolean isAdded, final VirtualFile... files) { + private void setPlainTextStatus(@NotNull final Project project, final boolean isAdded, final VirtualFile... files) { ApplicationManager.getApplication().runWriteAction(new Runnable() { @Override public void run() { - for (final Project project : ProjectManager.getInstance().getOpenProjects()) { - ProjectRootManagerEx.getInstanceEx(project).makeRootsChange(new Runnable() { - @Override - public void run() { - ProjectPlainTextFileTypeManager projectPlainTextFileTypeManager = ProjectPlainTextFileTypeManager.getInstance(project); - for (VirtualFile file : files) { - if (projectPlainTextFileTypeManager.hasProjectContaining(file)) { - ensureProjectFileSetAdded(project, projectPlainTextFileTypeManager); - if (isAdded ? - projectPlainTextFileTypeManager.addFile(file) : - projectPlainTextFileTypeManager.removeFile(file)) { - FileBasedIndex.getInstance().requestReindex(file); - } + ProjectRootManagerEx.getInstanceEx(project).makeRootsChange(new Runnable() { + @Override + public void run() { + ProjectPlainTextFileTypeManager projectPlainTextFileTypeManager = ProjectPlainTextFileTypeManager.getInstance(project); + for (VirtualFile file : files) { + if (projectPlainTextFileTypeManager.hasProjectContaining(file)) { + ensureProjectFileSetAdded(project, projectPlainTextFileTypeManager); + if (isAdded ? + projectPlainTextFileTypeManager.addFile(file) : + projectPlainTextFileTypeManager.removeFile(file)) { + FileBasedIndex.getInstance().requestReindex(file); } } } - }, false, true); - } + } + }, false, true); } }); } diff --git a/platform/lang-impl/src/com/intellij/openapi/file/exclude/ui/MarkAsOriginalTypeAction.java b/platform/lang-impl/src/com/intellij/openapi/file/exclude/ui/MarkAsOriginalTypeAction.java index c4e9c1a8ea31..31800af92667 100644 --- a/platform/lang-impl/src/com/intellij/openapi/file/exclude/ui/MarkAsOriginalTypeAction.java +++ b/platform/lang-impl/src/com/intellij/openapi/file/exclude/ui/MarkAsOriginalTypeAction.java @@ -20,6 +20,7 @@ import com.intellij.openapi.actionSystem.*; import com.intellij.openapi.file.exclude.EnforcedPlainTextFileTypeManager; import com.intellij.openapi.fileTypes.FileType; import com.intellij.openapi.fileTypes.FileTypeManager; +import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.VirtualFile; import java.util.ArrayList; @@ -33,6 +34,7 @@ public class MarkAsOriginalTypeAction extends AnAction { public void actionPerformed(AnActionEvent e) { DataContext dataContext = e.getDataContext(); final VirtualFile[] selectedFiles = CommonDataKeys.VIRTUAL_FILE_ARRAY.getData(dataContext); + final Project project = CommonDataKeys.PROJECT.getData(dataContext); if (selectedFiles == null || selectedFiles.length == 0) return; Collection filesToUnmark = new ArrayList(); for (VirtualFile file : selectedFiles) { @@ -42,7 +44,9 @@ public class MarkAsOriginalTypeAction extends AnAction { } EnforcedPlainTextFileTypeManager typeManager = EnforcedPlainTextFileTypeManager.getInstance(); assert typeManager != null; - typeManager.resetOriginalFileType(filesToUnmark.toArray(new VirtualFile[filesToUnmark.size()])); + if (project != null) { + typeManager.resetOriginalFileType(project, filesToUnmark.toArray(new VirtualFile[filesToUnmark.size()])); + } } @Override diff --git a/platform/lang-impl/src/com/intellij/openapi/file/exclude/ui/MarkAsPlainTextAction.java b/platform/lang-impl/src/com/intellij/openapi/file/exclude/ui/MarkAsPlainTextAction.java index 7af431c561b5..7bc03da3a195 100644 --- a/platform/lang-impl/src/com/intellij/openapi/file/exclude/ui/MarkAsPlainTextAction.java +++ b/platform/lang-impl/src/com/intellij/openapi/file/exclude/ui/MarkAsPlainTextAction.java @@ -18,6 +18,7 @@ package com.intellij.openapi.file.exclude.ui; import com.intellij.openapi.actionSystem.*; import com.intellij.openapi.file.exclude.EnforcedPlainTextFileTypeFactory; import com.intellij.openapi.file.exclude.EnforcedPlainTextFileTypeManager; +import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.VirtualFile; import java.util.ArrayList; @@ -31,6 +32,7 @@ public class MarkAsPlainTextAction extends AnAction { public void actionPerformed(AnActionEvent e) { DataContext dataContext = e.getDataContext(); final VirtualFile[] selectedFiles = CommonDataKeys.VIRTUAL_FILE_ARRAY.getData(dataContext); + final Project project = CommonDataKeys.PROJECT.getData(dataContext); if (selectedFiles == null || selectedFiles.length == 0) return; EnforcedPlainTextFileTypeManager typeManager = EnforcedPlainTextFileTypeManager.getInstance(); assert typeManager != null; @@ -43,7 +45,9 @@ public class MarkAsPlainTextAction extends AnAction { filesToMark.add(file); } } - typeManager.markAsPlainText(filesToMark.toArray(new VirtualFile[filesToMark.size()])); + if (project != null) { + typeManager.markAsPlainText(project, filesToMark.toArray(new VirtualFile[filesToMark.size()])); + } } @Override diff --git a/platform/platform-tests/testSrc/com/intellij/openapi/fileTypes/EnforcedPlaintTextFileTypeManagerTest.java b/platform/platform-tests/testSrc/com/intellij/openapi/fileTypes/EnforcedPlaintTextFileTypeManagerTest.java index 2fe27875e2e9..b7cefc60d1f6 100644 --- a/platform/platform-tests/testSrc/com/intellij/openapi/fileTypes/EnforcedPlaintTextFileTypeManagerTest.java +++ b/platform/platform-tests/testSrc/com/intellij/openapi/fileTypes/EnforcedPlaintTextFileTypeManagerTest.java @@ -29,10 +29,10 @@ public class EnforcedPlaintTextFileTypeManagerTest extends LightPlatformCodeInsi VirtualFile file = myFixture.getTempDirFixture().createFile("test.java"); FileType originalType = file.getFileType(); assertEquals("JAVA", originalType.getName()); - manager.markAsPlainText(file); + manager.markAsPlainText(getProject(), file); FileType changedType = file.getFileType(); assertEquals(EnforcedPlainTextFileTypeFactory.ENFORCED_PLAIN_TEXT, changedType.getName()); - manager.resetOriginalFileType(file); + manager.resetOriginalFileType(getProject(), file); FileType revertedType = file.getFileType(); assertEquals(originalType, revertedType); }