mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Merge remote-tracking branch 'origin/master'
This commit is contained in:
+18
-29
@@ -25,16 +25,13 @@ import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.project.ProjectManager;
|
||||
import com.intellij.openapi.project.ProjectManagerListener;
|
||||
import com.intellij.openapi.roots.ex.ProjectRootManagerEx;
|
||||
import com.intellij.openapi.util.EmptyRunnable;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.openapi.vfs.VirtualFileWithId;
|
||||
import com.intellij.util.containers.ConcurrentWeakHashMap;
|
||||
import com.intellij.util.indexing.FileBasedIndex;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
@@ -81,42 +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);
|
||||
}
|
||||
|
||||
public void setPlainTextStatus(boolean isPlainText, VirtualFile... files) {
|
||||
List<VirtualFile> filesToSync = new ArrayList<VirtualFile>();
|
||||
for (VirtualFile file : files) {
|
||||
filesToSync.add(file);
|
||||
FileBasedIndex.getInstance().requestReindex(file);
|
||||
}
|
||||
fireRootsChanged(filesToSync, isPlainText);
|
||||
}
|
||||
|
||||
private void fireRootsChanged(final Collection<VirtualFile> files, final boolean isAdded) {
|
||||
private void setPlainTextStatus(@NotNull final Project project, final boolean isAdded, final VirtualFile... files) {
|
||||
ApplicationManager.getApplication().runWriteAction(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
for (Project project : ProjectManager.getInstance().getOpenProjects()) {
|
||||
ProjectRootManagerEx.getInstanceEx(project).makeRootsChange(EmptyRunnable.getInstance(), false, true);
|
||||
ProjectPlainTextFileTypeManager projectPlainTextFileTypeManager = ProjectPlainTextFileTypeManager.getInstance(project);
|
||||
for (VirtualFile file : files) {
|
||||
if (projectPlainTextFileTypeManager.hasProjectContaining(file)) {
|
||||
ensureProjectFileSetAdded(project, projectPlainTextFileTypeManager);
|
||||
if (isAdded) {
|
||||
projectPlainTextFileTypeManager.addFile(file);
|
||||
}
|
||||
else {
|
||||
projectPlainTextFileTypeManager.removeFile(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);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
+5
-1
@@ -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
|
||||
|
||||
+5
-1
@@ -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
|
||||
|
||||
+2
-2
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user