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) { diff --git a/platform/platform-resources-en/src/messages/OptionsBundle.properties b/platform/platform-resources-en/src/messages/OptionsBundle.properties index ca74fbf95c04..3c1e425ab425 100644 --- a/platform/platform-resources-en/src/messages/OptionsBundle.properties +++ b/platform/platform-resources-en/src/messages/OptionsBundle.properties @@ -211,13 +211,13 @@ configurable.group.root.settings.display.name=ROOT GROUP configurable.group.appearance.settings.weight=70 configurable.group.appearance.settings.display.name=Appearance & Behavior configurable.group.appearance.settings.description=\ - Personalize IDE appearance and behavior: change themes and font size, tune the keymap,\ + Personalize IDE appearance and behavior: change themes and font size, tune the keymap, \ configure plugins and system settings, such as password policies, HTTP proxy, updates and more. configurable.group.editor.settings.weight=60 configurable.group.editor.settings.display.name=Editor configurable.group.editor.settings.description=\ - Personalize source code appearance by changing fonts, highlighting styles, indents, etc.\ - Customize the Editor from line numbers, caret placement and tabs to source code inspections,\ + Personalize source code appearance by changing fonts, highlighting styles, indents, etc. \ + Customize the Editor from line numbers, caret placement and tabs to source code inspections, \ setting up templates and file encodings. configurable.group.project.named.settings.display.name=Project: {0} configurable.group.project.settings.weight=40 @@ -227,7 +227,7 @@ configurable.group.project.settings.description=\ configurable.group.build.settings.weight=30 configurable.group.build.settings.display.name=Build, Execution, Deployment configurable.group.build.settings.description=\ - Configure you project integration with different build tools (Maven, Gradle or Gant),\ + Configure you project integration with different build tools (Maven, Gradle or Gant), \ modify the default compiler settings, manage server access configurations, customize the Debugger behavior, etc. configurable.group.build.tools.settings.parent=build configurable.group.build.tools.settings.weight=1000 @@ -241,7 +241,7 @@ configurable.group.language.settings.description=\ configurable.group.tools.settings.weight=10 configurable.group.tools.settings.display.name=Tools configurable.group.tools.settings.description=\ - Configure integration with third-party applications, specify the SSH Terminal connection settings,\ + Configure integration with third-party applications, specify the SSH Terminal connection settings, \ manage server certificates and tasks, configure diagrams layout, etc. configurable.group.other.settings.weight=-10 configurable.group.other.settings.display.name=Other Settings