6774a2bc7f2fdbe44bd94f18c744778dc0d14070
[idea/community.git] / platform / platform-api / src / com / intellij / openapi / fileEditor / FileDocumentManagerListener.java
1 // Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
2 package com.intellij.openapi.fileEditor;
3
4 import com.intellij.AppTopics;
5 import com.intellij.openapi.editor.Document;
6 import com.intellij.openapi.extensions.ExtensionPointName;
7 import com.intellij.openapi.vfs.VirtualFile;
8 import org.jetbrains.annotations.NotNull;
9
10 import java.util.EventListener;
11
12 /**
13  * @see AppTopics#FILE_DOCUMENT_SYNC
14  */
15 public interface FileDocumentManagerListener extends EventListener {
16
17   /**
18    * There is a possible case that callback that listens for the events implied by the current interface needs to modify document
19    * contents (e.g. strip trailing spaces before saving a document). It's too dangerous to do that from message bus callback
20    * because that may cause unexpected 'nested modification' (see IDEA-71701 for more details).
21    * <p/>
22    * That's why this interface is exposed via extension point as well - it's possible to modify document content from
23    * the extension callback.
24    */
25   ExtensionPointName<FileDocumentManagerListener> EP_NAME = ExtensionPointName.create("com.intellij.fileDocumentManagerListener");
26
27   /**
28    * Fired before processing FileDocumentManager.saveAllDocuments(). Can be used by plugins
29    * which need to perform additional save operations when documents, rather than settings,
30    * are saved.
31    */
32   default void beforeAllDocumentsSaving() {
33   }
34
35   /**
36    * NOTE: Vetoing facility is deprecated in this listener implement {@link FileDocumentSynchronizationVetoer} instead.
37    */
38   default void beforeDocumentSaving(@NotNull Document document) {
39   }
40
41   /**
42    * NOTE: Vetoing facility is deprecated in this listener implement {@link FileDocumentSynchronizationVetoer} instead.
43    */
44   default void beforeFileContentReload(@NotNull VirtualFile file, @NotNull Document document) {
45   }
46
47   default void fileWithNoDocumentChanged(@NotNull VirtualFile file) {
48   }
49
50   default void fileContentReloaded(@NotNull VirtualFile file, @NotNull Document document) {
51   }
52
53   default void fileContentLoaded(@NotNull VirtualFile file, @NotNull Document document) {
54   }
55
56   default void unsavedDocumentDropped(@NotNull Document document) {
57     unsavedDocumentsDropped();
58   }
59
60   default void unsavedDocumentsDropped() {
61   }
62 }