From a501e72381afb106a1dee0a0ec75cf0e5dd10704 Mon Sep 17 00:00:00 2001 From: Sergey Malenkov Date: Tue, 2 May 2017 19:22:04 +0300 Subject: [PATCH] update helper methods to search something after review --- .../options/colors/ColorAndFontOptions.java | 53 +++++++++++++++---- .../colors/JumpToColorsAndFontsAction.java | 12 +---- .../ex/SeverityEditorDialog.java | 26 +-------- .../openapi/options/ShowSettingsUtil.java | 2 +- .../breadcrumbs/BreadcrumbsConfigurable.java | 7 +-- 5 files changed, 50 insertions(+), 50 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/application/options/colors/ColorAndFontOptions.java b/platform/lang-impl/src/com/intellij/application/options/colors/ColorAndFontOptions.java index 3eac291743d5..87ef0ba0794c 100644 --- a/platform/lang-impl/src/com/intellij/application/options/colors/ColorAndFontOptions.java +++ b/platform/lang-impl/src/com/intellij/application/options/colors/ColorAndFontOptions.java @@ -28,7 +28,6 @@ import com.intellij.ide.ui.laf.darcula.DarculaLookAndFeelInfo; import com.intellij.ide.util.PropertiesComponent; import com.intellij.openapi.Disposable; import com.intellij.openapi.actionSystem.DataContext; -import com.intellij.openapi.actionSystem.DataProvider; import com.intellij.openapi.application.ApplicationBundle; import com.intellij.openapi.application.ApplicationNamesInfo; import com.intellij.openapi.editor.colors.*; @@ -41,6 +40,7 @@ import com.intellij.openapi.options.Configurable; import com.intellij.openapi.options.ConfigurationException; import com.intellij.openapi.options.SchemeManager; import com.intellij.openapi.options.SearchableConfigurable; +import com.intellij.openapi.options.ShowSettingsUtil; import com.intellij.openapi.options.colors.*; import com.intellij.openapi.options.ex.Settings; import com.intellij.openapi.project.Project; @@ -76,6 +76,9 @@ import java.util.*; import java.util.List; import java.util.function.Function; +import static com.intellij.openapi.actionSystem.CommonDataKeys.PROJECT; +import static com.intellij.openapi.actionSystem.PlatformDataKeys.CONTEXT_COMPONENT; + public class ColorAndFontOptions extends SearchableConfigurable.Parent.Abstract implements EditorOptionsProvider, SchemesModel { public static final String ID = "reference.settingsdialog.IDE.editor.colors"; @@ -1417,23 +1420,53 @@ public class ColorAndFontOptions extends SearchableConfigurable.Parent.Abstract } } - public static Runnable getColorSelector(DataProvider provider, String search, String name) { - return getSelector(Settings.KEY.getData(provider), search, options -> options.findSubConfigurable(name)); + public static boolean selectOrEditColor(DataContext context, String search, String name) { + return selectOrEdit(context, search, options -> options.findSubConfigurable(name)); } - public static Runnable getColorSelector(DataContext context, String search, Class type) { - return getSelector(Settings.KEY.getData(context), search, options -> options.findSubConfigurable(type)); + public static boolean selectOrEditColor(DataContext context, String search, Class type) { + return selectOrEdit(context, search, options -> options.findSubConfigurable(type)); } - private static Runnable getSelector(Settings settings, String search, Function function) { - if (settings == null) return null; + private static boolean selectOrEdit(DataContext context, String search, Function function) { + return select(context, search, function) || edit(context, search, function); + } + + private static boolean select(DataContext context, String search, Function function) { + Settings settings = Settings.KEY.getData(context); + if (settings == null) return false; ColorAndFontOptions options = settings.find(ColorAndFontOptions.class); - if (options == null) return null; + if (options == null) return false; SearchableConfigurable page = function.apply(options); - if (page == null) return null; + if (page == null) return false; - return () -> settings.select(page, search); + settings.select(page, search); + return true; + } + + private static boolean edit(DataContext context, String search, Function function) { + ColorAndFontOptions options = new ColorAndFontOptions(); + SearchableConfigurable page = function.apply(options); + + Configurable[] configurables = options.getConfigurables(); + try { + if (page != null) { + Runnable runnable = search == null ? null : page.enableSearch(search); + Window window = UIUtil.getWindow(CONTEXT_COMPONENT.getData(context)); + if (window != null) { + ShowSettingsUtil.getInstance().editConfigurable(window, page, runnable); + } + else { + ShowSettingsUtil.getInstance().editConfigurable(PROJECT.getData(context), page, runnable); + } + } + } + finally { + for (Configurable configurable : configurables) configurable.disposeUIResources(); + options.disposeUIResources(); + } + return page != null; } } diff --git a/platform/lang-impl/src/com/intellij/application/options/colors/JumpToColorsAndFontsAction.java b/platform/lang-impl/src/com/intellij/application/options/colors/JumpToColorsAndFontsAction.java index d33363b579f5..7693a6d3b1b3 100644 --- a/platform/lang-impl/src/com/intellij/application/options/colors/JumpToColorsAndFontsAction.java +++ b/platform/lang-impl/src/com/intellij/application/options/colors/JumpToColorsAndFontsAction.java @@ -17,7 +17,6 @@ package com.intellij.application.options.colors; import com.intellij.codeInsight.daemon.impl.HighlightInfo; import com.intellij.codeInsight.hint.HintManager; -import com.intellij.ide.actions.ShowSettingsUtilImpl; import com.intellij.injected.editor.EditorWindow; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.CommonDataKeys; @@ -39,7 +38,6 @@ import com.intellij.openapi.fileTypes.SyntaxHighlighter; import com.intellij.openapi.options.colors.AttributesDescriptor; import com.intellij.openapi.options.colors.ColorSettingsPage; import com.intellij.openapi.options.colors.ColorSettingsPages; -import com.intellij.openapi.options.newEditor.SettingsDialog; import com.intellij.openapi.project.DumbAwareAction; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.popup.JBPopupFactory; @@ -62,7 +60,7 @@ import java.util.Collections; import java.util.List; import java.util.Map; -import static com.intellij.application.options.colors.ColorAndFontOptions.getColorSelector; +import static com.intellij.application.options.colors.ColorAndFontOptions.selectOrEditColor; import static com.intellij.ui.SimpleTextAttributes.*; /** @@ -185,12 +183,6 @@ public class JumpToColorsAndFontsAction extends DumbAwareAction { } private static boolean openSettingsAndSelectKey(@NotNull Project project, @NotNull ColorSettingsPage page, @NotNull AttributesDescriptor descriptor) { - SettingsDialog dialog = (SettingsDialog)ShowSettingsUtilImpl.getDialog( - project, ShowSettingsUtilImpl.getConfigurableGroups(project, true), null); - Runnable selector = getColorSelector(dialog, descriptor.getDisplayName(), page.getDisplayName()); - if (selector == null) return false; - selector.run(); - dialog.show(); - return true; + return selectOrEditColor(id -> CommonDataKeys.PROJECT.is(id) ? project : null, descriptor.getDisplayName(), page.getDisplayName()); } } diff --git a/platform/lang-impl/src/com/intellij/codeInspection/ex/SeverityEditorDialog.java b/platform/lang-impl/src/com/intellij/codeInspection/ex/SeverityEditorDialog.java index 67126078cb59..702a6905d0a3 100644 --- a/platform/lang-impl/src/com/intellij/codeInspection/ex/SeverityEditorDialog.java +++ b/platform/lang-impl/src/com/intellij/codeInspection/ex/SeverityEditorDialog.java @@ -17,7 +17,6 @@ package com.intellij.codeInspection.ex; import com.intellij.application.options.colors.ColorAndFontDescriptionPanel; -import com.intellij.application.options.colors.ColorAndFontOptions; import com.intellij.application.options.colors.InspectionColorSettingsPage; import com.intellij.application.options.colors.TextAttributesDescription; import com.intellij.codeInsight.daemon.impl.HighlightInfoType; @@ -27,15 +26,11 @@ import com.intellij.codeInspection.InspectionsBundle; import com.intellij.ide.DataManager; import com.intellij.lang.annotation.HighlightSeverity; import com.intellij.openapi.actionSystem.AnActionEvent; -import com.intellij.openapi.actionSystem.CommonDataKeys; import com.intellij.openapi.actionSystem.DataContext; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.colors.CodeInsightColors; import com.intellij.openapi.editor.colors.TextAttributesKey; import com.intellij.openapi.editor.markup.TextAttributes; -import com.intellij.openapi.options.Configurable; -import com.intellij.openapi.options.SearchableConfigurable; -import com.intellij.openapi.options.ShowSettingsUtil; import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.ui.InputValidator; import com.intellij.openapi.ui.Messages; @@ -57,6 +52,7 @@ import java.awt.event.ActionListener; import java.util.*; import java.util.List; +import static com.intellij.application.options.colors.ColorAndFontOptions.selectOrEditColor; import static com.intellij.codeInsight.daemon.impl.SeverityRegistrar.SeverityBasedTextAttributes; /** @@ -237,25 +233,7 @@ public class SeverityEditorDialog extends DialogWrapper { } myOptionsList.clearSelection(); final DataContext dataContext = DataManager.getInstance().getDataContext(myPanel); - Runnable selector = ColorAndFontOptions.getColorSelector(dataContext, toConfigure, InspectionColorSettingsPage.class); - if (selector != null) { - selector.run(); - } - else { - ColorAndFontOptions colorAndFontOptions = new ColorAndFontOptions(); - final Configurable[] configurables = colorAndFontOptions.buildConfigurables(); - try { - final SearchableConfigurable javaPage = colorAndFontOptions.findSubConfigurable(InspectionColorSettingsPage.class); - LOG.assertTrue(javaPage != null); - ShowSettingsUtil.getInstance().editConfigurable(CommonDataKeys.PROJECT.getData(dataContext), javaPage); - } - finally { - for (Configurable configurable : configurables) { - configurable.disposeUIResources(); - } - colorAndFontOptions.disposeUIResources(); - } - } + selectOrEditColor(dataContext, toConfigure, InspectionColorSettingsPage.class); } private void fillList(final @Nullable HighlightSeverity severity) { diff --git a/platform/platform-api/src/com/intellij/openapi/options/ShowSettingsUtil.java b/platform/platform-api/src/com/intellij/openapi/options/ShowSettingsUtil.java index 299ead948e64..4e9564ebaf85 100644 --- a/platform/platform-api/src/com/intellij/openapi/options/ShowSettingsUtil.java +++ b/platform/platform-api/src/com/intellij/openapi/options/ShowSettingsUtil.java @@ -48,7 +48,7 @@ public abstract class ShowSettingsUtil { public abstract boolean editConfigurable(@Nullable Component parent, @NotNull Configurable configurable); - public abstract boolean editConfigurable(Component parent, Configurable configurable, @NotNull Runnable advancedInitialization); + public abstract boolean editConfigurable(Component parent, Configurable configurable, Runnable advancedInitialization); public abstract boolean editConfigurable(Project project, @NonNls String dimensionServiceKey, Configurable configurable); diff --git a/xml/impl/src/com/intellij/xml/breadcrumbs/BreadcrumbsConfigurable.java b/xml/impl/src/com/intellij/xml/breadcrumbs/BreadcrumbsConfigurable.java index ae4a89ee7698..df1bcbec7199 100644 --- a/xml/impl/src/com/intellij/xml/breadcrumbs/BreadcrumbsConfigurable.java +++ b/xml/impl/src/com/intellij/xml/breadcrumbs/BreadcrumbsConfigurable.java @@ -35,7 +35,7 @@ import javax.swing.JPanel; import java.util.LinkedHashMap; import java.util.Map.Entry; -import static com.intellij.application.options.colors.ColorAndFontOptions.getColorSelector; +import static com.intellij.application.options.colors.ColorAndFontOptions.selectOrEditColor; import static com.intellij.openapi.application.ApplicationBundle.message; /** @@ -61,10 +61,7 @@ final class BreadcrumbsConfigurable implements Configurable { upper.add(box); upper.add(LinkLabel.create(message("configure.breadcrumbs.colors"), () -> { DataContext context = DataManager.getInstance().getDataContext(component); - Runnable select = getColorSelector(context, "Breadcrumbs//Current", GeneralColorsPage.class); - if (select != null) { - select.run(); - } + selectOrEditColor(context, "Breadcrumbs//Current", GeneralColorsPage.class); })); JPanel boxes = new JPanel(new VerticalLayout(0));