EnforcedPlainTextFileTypeManager: pass project as a parameter [CR-IC-4656]

This commit is contained in:
Rustam Vishnyakov
2014-03-07 14:01:19 +04:00
parent 8e176cef35
commit 6f729cfe0f
4 changed files with 30 additions and 24 deletions
@@ -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);
}
});
}
@@ -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<VirtualFile> filesToUnmark = new ArrayList<VirtualFile>();
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
@@ -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
@@ -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);
}