cleanup
[idea/community.git] / platform / platform-api / src / com / intellij / openapi / fileEditor / FileDocumentManagerListener.java
1 // Copyright 2000-2020 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    * There is a possible case that callback that listens for the events implied by the current interface needs to modify document
18    * contents (e.g. strip trailing spaces before saving a document). It's too dangerous to do that from message bus callback
19    * because that may cause unexpected 'nested modification' (see IDEA-71701 for more details).
20    * <p/>
21    * That's why this interface is exposed via extension point as well - it's possible to modify document content from
22    * the extension callback.
23    */
24   ExtensionPointName<FileDocumentManagerListener> EP_NAME = new ExtensionPointName<>("com.intellij.fileDocumentManagerListener");
25
26   /**
27    * Fired before processing FileDocumentManager.saveAllDocuments(). Can be used by plugins
28    * which need to perform additional save operations when documents, rather than settings,
29    * are saved.
30    */
31   default void beforeAllDocumentsSaving() {
32   }
33
34   /**
35    * NOTE: Vetoing facility is deprecated in this listener implement {@link FileDocumentSynchronizationVetoer} instead.
36    */
37   default void beforeDocumentSaving(@NotNull Document document) {
38   }
39
40   /**
41    * NOTE: Vetoing facility is deprecated in this listener implement {@link FileDocumentSynchronizationVetoer} instead.
42    */
43   default void beforeFileContentReload(@NotNull VirtualFile file, @NotNull Document document) {
44   }
45
46   default void fileWithNoDocumentChanged(@NotNull VirtualFile file) {
47   }
48
49   default void fileContentReloaded(@NotNull VirtualFile file, @NotNull Document document) {
50   }
51
52   default void fileContentLoaded(@NotNull VirtualFile file, @NotNull Document document) {
53   }
54
55   default void unsavedDocumentDropped(@NotNull Document document) {
56     unsavedDocumentsDropped();
57   }
58
59   default void unsavedDocumentsDropped() {
60   }
61 }