summaryrefslogtreecommitdiff
path: root/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/FileDocumentManagerImpl.java
diff options
context:
space:
mode:
Diffstat (limited to 'platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/FileDocumentManagerImpl.java')
-rw-r--r--platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/FileDocumentManagerImpl.java19
1 files changed, 15 insertions, 4 deletions
diff --git a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/FileDocumentManagerImpl.java b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/FileDocumentManagerImpl.java
index cce6de27545d..ec2559fc06ba 100644
--- a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/FileDocumentManagerImpl.java
+++ b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/FileDocumentManagerImpl.java
@@ -550,14 +550,18 @@ public class FileDocumentManagerImpl extends FileDocumentManager implements Virt
if (document != null) {
// a file is linked to a document - chances are it is an "unknown text file" now
if (isBinaryWithoutDecompiler(file)) {
- myDocuments.remove(file);
- file.putUserData(HARD_REF_TO_DOCUMENT_KEY, null);
- document.putUserData(FILE_KEY, null);
+ unbindFileFromDocument(file, document);
}
}
}
}
+ private void unbindFileFromDocument(@NotNull VirtualFile file, @NotNull Document document) {
+ myDocuments.remove(file);
+ file.putUserData(HARD_REF_TO_DOCUMENT_KEY, null);
+ document.putUserData(FILE_KEY, null);
+ }
+
private static boolean isBinaryWithDecompiler(@NotNull VirtualFile file) {
final FileType ft = file.getFileType();
return ft.isBinary() && BinaryFileTypeDecompilers.INSTANCE.forFileType(ft) != null;
@@ -609,6 +613,13 @@ public class FileDocumentManagerImpl extends FileDocumentManager implements Virt
return;
}
+ if (file.getLength() > FileUtilRt.LARGE_FOR_CONTENT_LOADING) {
+ unbindFileFromDocument(file, document);
+ myUnsavedDocuments.remove(document);
+ myMultiCaster.fileWithNoDocumentChanged(file);
+ return;
+ }
+
final Project project = ProjectLocator.getInstance().guessProjectForFile(file);
CommandProcessor.getInstance().executeCommand(project, new Runnable() {
@Override
@@ -640,7 +651,7 @@ public class FileDocumentManagerImpl extends FileDocumentManager implements Virt
public boolean process(final VirtualFile file, final Document document) {
String message = UIBundle.message("file.cache.conflict.message.text", file.getPresentableUrl());
- final DialogBuilder builder = new DialogBuilder((Project)null);
+ final DialogBuilder builder = new DialogBuilder();
builder.setCenterPanel(new JLabel(message, Messages.getQuestionIcon(), SwingConstants.CENTER));
builder.addOkAction().setText(UIBundle.message("file.cache.conflict.load.fs.changes.button"));
builder.addCancelAction().setText(UIBundle.message("file.cache.conflict.keep.memory.changes.button"));