From 40e541db42c68e97cd4e480b6062e797b1f13135 Mon Sep 17 00:00:00 2001 From: "Gregory.Shrago" Date: Mon, 24 Aug 2015 22:15:15 +0300 Subject: [PATCH] Configurable: allow third-party groups with hyper-links --- .../ex/ConfigurableExtensionPointUtil.java | 5 +++- .../options/newEditor/ConfigurableEditor.java | 25 ++++++++----------- 2 files changed, 14 insertions(+), 16 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/options/ex/ConfigurableExtensionPointUtil.java b/platform/platform-impl/src/com/intellij/openapi/options/ex/ConfigurableExtensionPointUtil.java index 2ba863334da8..530827f53f52 100644 --- a/platform/platform-impl/src/com/intellij/openapi/options/ex/ConfigurableExtensionPointUtil.java +++ b/platform/platform-impl/src/com/intellij/openapi/options/ex/ConfigurableExtensionPointUtil.java @@ -370,7 +370,10 @@ public class ConfigurableExtensionPointUtil { return project == null || !project.isDefault() || !ConfigurableWrapper.isNonDefaultProject(configurable); } - private static ResourceBundle getBundle(String resource, List configurables, ResourceBundle alternative) { + @Nullable + public static ResourceBundle getBundle(@NotNull String resource, + @Nullable Iterable configurables, + @Nullable ResourceBundle alternative) { ResourceBundle bundle = OptionsBundle.getBundle(); if (getString(bundle, resource) != null) { return bundle; diff --git a/platform/platform-impl/src/com/intellij/openapi/options/newEditor/ConfigurableEditor.java b/platform/platform-impl/src/com/intellij/openapi/options/newEditor/ConfigurableEditor.java index 51998e773774..f471bc8c3527 100644 --- a/platform/platform-impl/src/com/intellij/openapi/options/newEditor/ConfigurableEditor.java +++ b/platform/platform-impl/src/com/intellij/openapi/options/newEditor/ConfigurableEditor.java @@ -24,16 +24,20 @@ import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.DataContext; import com.intellij.openapi.actionSystem.ex.AnActionListener; -import com.intellij.openapi.options.*; +import com.intellij.openapi.options.BaseConfigurable; +import com.intellij.openapi.options.Configurable; +import com.intellij.openapi.options.ConfigurationException; +import com.intellij.openapi.options.ShowSettingsUtil; import com.intellij.openapi.options.ex.ConfigurableCardPanel; +import com.intellij.openapi.options.ex.ConfigurableExtensionPointUtil; import com.intellij.openapi.options.ex.ConfigurableVisitor; -import com.intellij.openapi.options.ex.ConfigurableWrapper; import com.intellij.openapi.ui.Messages; import com.intellij.openapi.util.ActionCallback; import com.intellij.openapi.util.Disposer; import com.intellij.ui.JBColor; import com.intellij.ui.RelativeFont; import com.intellij.ui.components.labels.LinkLabel; +import com.intellij.util.containers.JBIterable; import com.intellij.util.ui.JBUI; import com.intellij.util.ui.UIUtil; import com.intellij.util.ui.update.MergingUpdateQueue; @@ -300,19 +304,10 @@ class ConfigurableEditor extends AbstractEditor implements AnActionListener, AWT } private static String getString(Configurable configurable, String key) { - try { - if (configurable instanceof ConfigurableWrapper) { - ConfigurableWrapper wrapper = (ConfigurableWrapper)configurable; - ResourceBundle bundle = wrapper.getExtensionPoint().findBundle(); - if (bundle != null) { - return CommonBundle.message(bundle, key); - } - } - return OptionsBundle.message(key); - } - catch (AssertionError error) { - return null; - } + JBIterable it = JBIterable.of(configurable).append( + JBIterable.of(configurable instanceof Configurable.Composite ? ((Configurable.Composite)configurable).getConfigurables() : null)); + ResourceBundle bundle = ConfigurableExtensionPointUtil.getBundle(key, it, null); + return bundle != null ? bundle.getString(key) : null; } static ConfigurationException apply(Configurable configurable) {