From 06f8583069a6505f23ae2d0c972fab8b42ecd22b Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Wed, 21 Apr 2010 17:12:08 +0400 Subject: [PATCH] added before event firing --- .../src/com/intellij/util/FileContentUtil.java | 13 +++++++------ .../src/com/intellij/openapi/vfs/VirtualFile.java | 7 ++++++- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/platform/lang-api/src/com/intellij/util/FileContentUtil.java b/platform/lang-api/src/com/intellij/util/FileContentUtil.java index 5cf631476812..d627f9c15300 100644 --- a/platform/lang-api/src/com/intellij/util/FileContentUtil.java +++ b/platform/lang-api/src/com/intellij/util/FileContentUtil.java @@ -30,6 +30,7 @@ import com.intellij.psi.PsiDocumentManager; import com.intellij.psi.PsiFile; import com.intellij.psi.PsiManager; import gnu.trove.THashSet; +import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -42,7 +43,7 @@ import java.util.Set; * @author peter */ public class FileContentUtil { - public static final String FORCE_RELOAD_REQUESTOR = "FileContentUtil.saveOrReload"; + @NonNls public static final String FORCE_RELOAD_REQUESTOR = "FileContentUtil.saveOrReload"; private FileContentUtil() { } @@ -67,23 +68,23 @@ public class FileContentUtil { } public static void reparseFiles(@NotNull final Project project, @NotNull final Collection files, boolean includeOpenFiles) { - final Set list = new THashSet(); + final Set events = new THashSet(); for (VirtualFile file : files) { - saveOrReload(file, list); + saveOrReload(file, events); } if (includeOpenFiles) { for (VirtualFile open : FileEditorManager.getInstance(project).getOpenFiles()) { if (!files.contains(open)) { - saveOrReload(open, list); + saveOrReload(open, events); } } } ApplicationManager.getApplication().runWriteAction(new Runnable() { public void run() { ApplicationManager.getApplication().getMessageBus().syncPublisher(VirtualFileManager.VFS_CHANGES) - .before(new ArrayList(list)); + .before(new ArrayList(events)); ApplicationManager.getApplication().getMessageBus().syncPublisher(VirtualFileManager.VFS_CHANGES) - .after(new ArrayList(list)); + .after(new ArrayList(events)); } }); } diff --git a/platform/platform-api/src/com/intellij/openapi/vfs/VirtualFile.java b/platform/platform-api/src/com/intellij/openapi/vfs/VirtualFile.java index f60217bfd97a..5f4c0337dda3 100644 --- a/platform/platform-api/src/com/intellij/openapi/vfs/VirtualFile.java +++ b/platform/platform-api/src/com/intellij/openapi/vfs/VirtualFile.java @@ -24,6 +24,7 @@ import com.intellij.openapi.fileTypes.FileTypeManager; import com.intellij.openapi.util.*; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.encoding.EncodingManager; +import com.intellij.openapi.vfs.newvfs.BulkFileListener; import com.intellij.openapi.vfs.newvfs.events.VFilePropertyChangeEvent; import com.intellij.util.Icons; import org.jetbrains.annotations.NonNls; @@ -36,6 +37,7 @@ import java.io.InputStream; import java.io.OutputStream; import java.nio.charset.Charset; import java.util.Collections; +import java.util.List; /** * Represents a file in {@link VirtualFileSystem}. A particular file is represented by the same @@ -451,7 +453,10 @@ public abstract class VirtualFile extends UserDataHolderBase implements Modifica if (isValid() && !application.isDisposed()) { application.runWriteAction(new Runnable(){ public void run() { - application.getMessageBus().syncPublisher(VirtualFileManager.VFS_CHANGES).after(Collections.singletonList(new VFilePropertyChangeEvent(this, VirtualFile.this, PROP_ENCODING, old, charset, false))); + List events = Collections.singletonList(new VFilePropertyChangeEvent(this, VirtualFile.this, PROP_ENCODING, old, charset, false)); + BulkFileListener listener = application.getMessageBus().syncPublisher(VirtualFileManager.VFS_CHANGES); + listener.before(events); + listener.after(events); } }); }