| package org.editorconfig.plugincomponents; |
| |
| import com.intellij.AppTopics; |
| import com.intellij.openapi.components.ProjectComponent; |
| import com.intellij.openapi.fileEditor.FileEditorManagerListener; |
| import com.intellij.openapi.project.Project; |
| import com.intellij.openapi.wm.IdeFrame; |
| import com.intellij.openapi.wm.WindowManager; |
| import com.intellij.util.messages.MessageBus; |
| import org.editorconfig.configmanagement.CodeStyleManager; |
| import org.editorconfig.configmanagement.EditorSettingsManager; |
| import org.editorconfig.configmanagement.EncodingManager; |
| import org.editorconfig.configmanagement.LineEndingsManager; |
| import org.jetbrains.annotations.NotNull; |
| |
| import java.awt.*; |
| |
| public class ConfigProjectComponent implements ProjectComponent { |
| private final Project project; |
| private final CodeStyleManager codeStyleManager; |
| |
| public ConfigProjectComponent(Project project) { |
| this.project = project; |
| |
| // Register project-level config managers |
| MessageBus bus = project.getMessageBus(); |
| codeStyleManager = new CodeStyleManager(project); |
| EditorSettingsManager editorSettingsManager = new EditorSettingsManager(); |
| EncodingManager encodingManager = new EncodingManager(project); |
| LineEndingsManager lineEndingsManager = new LineEndingsManager(project); |
| bus.connect().subscribe(FileEditorManagerListener.FILE_EDITOR_MANAGER, codeStyleManager); |
| bus.connect().subscribe(AppTopics.FILE_DOCUMENT_SYNC, encodingManager); |
| bus.connect().subscribe(AppTopics.FILE_DOCUMENT_SYNC, editorSettingsManager); |
| bus.connect().subscribe(AppTopics.FILE_DOCUMENT_SYNC, lineEndingsManager); |
| } |
| |
| public void initComponent() { |
| } |
| |
| public void disposeComponent() { |
| } |
| |
| @NotNull |
| public String getComponentName() { |
| return "ConfigProjectComponent"; |
| } |
| |
| public void projectOpened() { |
| // called when project is opened |
| IdeFrame frame = WindowManager.getInstance().getIdeFrame(project); |
| final Window window = (Window)frame; |
| window.addWindowFocusListener(codeStyleManager); |
| } |
| |
| public void projectClosed() { |
| // called when project is being closed |
| IdeFrame frame = WindowManager.getInstance().getIdeFrame(project); |
| final Window window = (Window)frame; |
| window.removeWindowFocusListener(codeStyleManager); |
| } |
| } |