From b387bba44b4e67b7db3b5093cdf022b24f8ab80f Mon Sep 17 00:00:00 2001 From: Alexander Zolotov Date: Wed, 26 Aug 2015 01:36:27 +0300 Subject: [PATCH] IDEA-144172 Move breadcrumbs settings to some platform class --- .../editor/EditorAppearanceConfigurable.form | 14 +++++-- .../editor/EditorAppearanceConfigurable.java | 26 +++++++++--- .../ex/EditorSettingsExternalizable.java | 9 ++++ .../src/messages/ApplicationBundle.properties | 1 + .../src/messages/XmlBundle.properties | 1 - .../WebEditorAppearanceConfigurable.java | 2 - .../XmlTagTreeHighlightingPass.java | 2 +- .../BreadcrumbsLoaderComponent.java | 41 +++++++++---------- .../breadcrumbs/BreadcrumbsXmlWrapper.java | 10 ++--- .../options/editor/WebEditorOptions.java | 22 ---------- 10 files changed, 67 insertions(+), 61 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/application/options/editor/EditorAppearanceConfigurable.form b/platform/lang-impl/src/com/intellij/application/options/editor/EditorAppearanceConfigurable.form index dee99e97b52d..42b6c69f61fd 100644 --- a/platform/lang-impl/src/com/intellij/application/options/editor/EditorAppearanceConfigurable.form +++ b/platform/lang-impl/src/com/intellij/application/options/editor/EditorAppearanceConfigurable.form @@ -1,6 +1,6 @@
- + @@ -10,7 +10,7 @@ - + @@ -86,7 +86,7 @@ - + @@ -146,6 +146,14 @@ + + + + + + + + diff --git a/platform/lang-impl/src/com/intellij/application/options/editor/EditorAppearanceConfigurable.java b/platform/lang-impl/src/com/intellij/application/options/editor/EditorAppearanceConfigurable.java index 62acd2103353..5b3cc29e5ec5 100644 --- a/platform/lang-impl/src/com/intellij/application/options/editor/EditorAppearanceConfigurable.java +++ b/platform/lang-impl/src/com/intellij/application/options/editor/EditorAppearanceConfigurable.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2014 JetBrains s.r.o. + * Copyright 2000-2015 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -24,7 +24,9 @@ import com.intellij.ide.ui.UISettings; import com.intellij.openapi.application.ApplicationBundle; import com.intellij.openapi.editor.ex.EditorSettingsExternalizable; import com.intellij.openapi.extensions.ExtensionPointName; -import com.intellij.openapi.options.*; +import com.intellij.openapi.options.CompositeConfigurable; +import com.intellij.openapi.options.ConfigurationException; +import com.intellij.openapi.options.UnnamedConfigurable; import com.intellij.openapi.options.ex.ConfigurableWrapper; import org.jetbrains.annotations.Nls; import org.jetbrains.annotations.NotNull; @@ -36,7 +38,7 @@ import java.awt.event.ActionListener; import java.util.List; /** - * To provide additional options in Editor | Appearance section register implementation of {@link com.intellij.openapi.options.UnnamedConfigurable} in the plugin.xml: + * To provide additional options in Editor | Appearance section register implementation of {@link UnnamedConfigurable} in the plugin.xml: *

* <extensions defaultExtensionNs="com.intellij">
*   <editorAppearanceConfigurable instance="class-name"/>
@@ -64,6 +66,7 @@ public class EditorAppearanceConfigurable extends CompositeConfigurable implements UnnamedConfigurable { public WebEditorAppearanceConfigurable() { super(WebEditorOptions.getInstance()); - checkBox("breadcrumbsEnabled", XmlBundle.message("xml.editor.options.breadcrumbs.title")); checkBox("showCssColorPreviewInGutter", "Show CSS color preview icon in gutter"); checkBox("showCssInlineColorPreview", "Show CSS color preview as background"); } diff --git a/xml/impl/src/com/intellij/codeInsight/daemon/impl/tagTreeHighlighting/XmlTagTreeHighlightingPass.java b/xml/impl/src/com/intellij/codeInsight/daemon/impl/tagTreeHighlighting/XmlTagTreeHighlightingPass.java index ebf85eab5f4a..7a1a25287d8f 100644 --- a/xml/impl/src/com/intellij/codeInsight/daemon/impl/tagTreeHighlighting/XmlTagTreeHighlightingPass.java +++ b/xml/impl/src/com/intellij/codeInsight/daemon/impl/tagTreeHighlighting/XmlTagTreeHighlightingPass.java @@ -74,7 +74,7 @@ public class XmlTagTreeHighlightingPass extends TextEditorHighlightingPass { myFile = file; myEditor = editor; final FileViewProvider viewProvider = file.getManager().findViewProvider(file.getVirtualFile()); - myInfoProvider = BreadcrumbsXmlWrapper.findInfoProvider(viewProvider, WebEditorOptions.getInstance()); + myInfoProvider = BreadcrumbsXmlWrapper.findInfoProvider(viewProvider); } @Override diff --git a/xml/impl/src/com/intellij/xml/breadcrumbs/BreadcrumbsLoaderComponent.java b/xml/impl/src/com/intellij/xml/breadcrumbs/BreadcrumbsLoaderComponent.java index 5122b35b08a2..2b6a5d71eba2 100644 --- a/xml/impl/src/com/intellij/xml/breadcrumbs/BreadcrumbsLoaderComponent.java +++ b/xml/impl/src/com/intellij/xml/breadcrumbs/BreadcrumbsLoaderComponent.java @@ -15,7 +15,8 @@ */ package com.intellij.xml.breadcrumbs; -import com.intellij.application.options.editor.WebEditorOptions; +import com.intellij.ide.ui.UISettings; +import com.intellij.ide.ui.UISettingsListener; import com.intellij.openapi.Disposable; import com.intellij.openapi.components.AbstractProjectComponent; import com.intellij.openapi.editor.Editor; @@ -54,17 +55,17 @@ public class BreadcrumbsLoaderComponent extends AbstractProjectComponent { public void initComponent() { MessageBusConnection connection = myProject.getMessageBus().connect(myProject); connection.subscribe(FileEditorManagerListener.FILE_EDITOR_MANAGER, new MyFileEditorManagerListener()); - connection.subscribe(WebEditorOptions.WEB_EDITOR_OPTIONS, new MyWebEditorOptionsListener()); connection.subscribe(FileTypeManager.TOPIC, new MyFileTypeListener()); MyVirtualFileListener listener = new MyVirtualFileListener(); VirtualFileManager.getInstance().addVirtualFileListener(listener, myProject); + UISettings.getInstance().addUISettingsListener(new MyUISettingsListener(), myProject); } private static class MyFileEditorManagerListener extends FileEditorManagerAdapter { @Override public void fileOpened(@NotNull final FileEditorManager source, @NotNull final VirtualFile file) { - reinitBreadcrumbsComponent(source, file, WebEditorOptions.getInstance()); + reinitBreadcrumbsComponent(source, file); } } @@ -75,37 +76,35 @@ public class BreadcrumbsLoaderComponent extends AbstractProjectComponent { FileEditorManager fileEditorManager = FileEditorManager.getInstance(myProject); VirtualFile file = event.getFile(); if (fileEditorManager.isFileOpen(file)) { - reinitBreadcrumbsComponent(fileEditorManager, file, WebEditorOptions.getInstance()); + reinitBreadcrumbsComponent(fileEditorManager, file); } } } } - private class MyWebEditorOptionsListener implements WebEditorOptions.WebEditorOptionsListener { - @Override - public void breadcrumbsOptionsChanged(@NotNull WebEditorOptions options) { - reinitBreadcrumbsInAllEditors(options); - } - } - private class MyFileTypeListener extends FileTypeListener.Adapter { @Override public void fileTypesChanged(@NotNull FileTypeEvent event) { - reinitBreadcrumbsInAllEditors(WebEditorOptions.getInstance()); + reinitBreadcrumbsInAllEditors(); } } - private void reinitBreadcrumbsInAllEditors(@NotNull WebEditorOptions options) { + private class MyUISettingsListener implements UISettingsListener { + @Override + public void uiSettingsChanged(UISettings source) { + reinitBreadcrumbsInAllEditors(); + } + } + + private void reinitBreadcrumbsInAllEditors() { FileEditorManager fileEditorManager = FileEditorManager.getInstance(myProject); for (VirtualFile virtualFile : fileEditorManager.getOpenFiles()) { - reinitBreadcrumbsComponent(fileEditorManager, virtualFile, options); + reinitBreadcrumbsComponent(fileEditorManager, virtualFile); } } - private static void reinitBreadcrumbsComponent(@NotNull final FileEditorManager fileEditorManager, - @NotNull VirtualFile file, - @NotNull WebEditorOptions webEditorOptions) { - if (webEditorOptions.isBreadcrumbsEnabled() && isSuitable(fileEditorManager.getProject(), file, webEditorOptions)) { + private static void reinitBreadcrumbsComponent(@NotNull final FileEditorManager fileEditorManager, @NotNull VirtualFile file) { + if (isSuitable(fileEditorManager.getProject(), file)) { FileEditor[] fileEditors = fileEditorManager.getAllEditors(file); for (final FileEditor fileEditor : fileEditors) { if (fileEditor instanceof TextEditor) { @@ -113,7 +112,7 @@ public class BreadcrumbsLoaderComponent extends AbstractProjectComponent { if (BreadcrumbsXmlWrapper.getBreadcrumbsComponent(editor) != null) { continue; } - final BreadcrumbsXmlWrapper wrapper = new BreadcrumbsXmlWrapper(editor, webEditorOptions); + final BreadcrumbsXmlWrapper wrapper = new BreadcrumbsXmlWrapper(editor); final JComponent c = wrapper.getComponent(); fileEditorManager.addTopComponent(fileEditor, c); @@ -144,13 +143,13 @@ public class BreadcrumbsLoaderComponent extends AbstractProjectComponent { } } - private static boolean isSuitable(@NotNull Project project, @NotNull VirtualFile file, @NotNull WebEditorOptions webEditorOptions) { + private static boolean isSuitable(@NotNull Project project, @NotNull VirtualFile file) { if (file instanceof HttpVirtualFile) { return false; } final FileViewProvider provider = PsiManager.getInstance(project).findViewProvider(file); - return provider != null && BreadcrumbsXmlWrapper.findInfoProvider(provider, webEditorOptions) != null; + return provider != null && BreadcrumbsXmlWrapper.findInfoProvider(provider) != null; } private static void disposeWrapper(@NotNull FileEditorManager fileEditorManager, diff --git a/xml/impl/src/com/intellij/xml/breadcrumbs/BreadcrumbsXmlWrapper.java b/xml/impl/src/com/intellij/xml/breadcrumbs/BreadcrumbsXmlWrapper.java index a308cdc2d421..1787dbe4d419 100644 --- a/xml/impl/src/com/intellij/xml/breadcrumbs/BreadcrumbsXmlWrapper.java +++ b/xml/impl/src/com/intellij/xml/breadcrumbs/BreadcrumbsXmlWrapper.java @@ -15,7 +15,6 @@ */ package com.intellij.xml.breadcrumbs; -import com.intellij.application.options.editor.WebEditorOptions; import com.intellij.codeInsight.daemon.impl.tagTreeHighlighting.XmlTagTreeHighlightingUtil; import com.intellij.codeInsight.highlighting.HighlightManager; import com.intellij.ide.ui.UISettings; @@ -33,6 +32,7 @@ import com.intellij.openapi.editor.event.CaretAdapter; import com.intellij.openapi.editor.event.CaretEvent; import com.intellij.openapi.editor.event.CaretListener; import com.intellij.openapi.editor.ex.EditorGutterComponentEx; +import com.intellij.openapi.editor.ex.EditorSettingsExternalizable; import com.intellij.openapi.editor.impl.EditorImpl; import com.intellij.openapi.editor.markup.RangeHighlighter; import com.intellij.openapi.editor.markup.TextAttributes; @@ -80,7 +80,7 @@ public class BreadcrumbsXmlWrapper implements BreadcrumbsItemListener BREADCRUMBS_COMPONENT_KEY = new Key("BREADCRUMBS_KEY"); - public BreadcrumbsXmlWrapper(@NotNull final Editor editor, @NotNull WebEditorOptions webEditorOptions) { + public BreadcrumbsXmlWrapper(@NotNull final Editor editor) { myEditor = editor; myEditor.putUserData(BREADCRUMBS_COMPONENT_KEY, this); @@ -112,7 +112,7 @@ public class BreadcrumbsXmlWrapper implements BreadcrumbsItemListener { - public static final Topic WEB_EDITOR_OPTIONS = - new Topic("web editor options changed", WebEditorOptionsListener.class); - - private boolean myBreadcrumbsEnabled = true; private boolean myShowCssColorPreviewInGutter = true; private boolean mySelectWholeCssIdentifierOnDoubleClick = true; private boolean myShowCssInlineColorPreview = false; @@ -54,18 +48,6 @@ public class WebEditorOptions implements PersistentStateComponent