summaryrefslogtreecommitdiff
path: root/plugins/editorconfig/src/org/editorconfig/plugincomponents/ConfigProjectComponent.java
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/editorconfig/src/org/editorconfig/plugincomponents/ConfigProjectComponent.java')
-rw-r--r--plugins/editorconfig/src/org/editorconfig/plugincomponents/ConfigProjectComponent.java61
1 files changed, 61 insertions, 0 deletions
diff --git a/plugins/editorconfig/src/org/editorconfig/plugincomponents/ConfigProjectComponent.java b/plugins/editorconfig/src/org/editorconfig/plugincomponents/ConfigProjectComponent.java
new file mode 100644
index 000000000000..0d31b2bb8b2c
--- /dev/null
+++ b/plugins/editorconfig/src/org/editorconfig/plugincomponents/ConfigProjectComponent.java
@@ -0,0 +1,61 @@
+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);
+ }
+}