diff --git a/platform/platform-impl/src/com/intellij/openapi/options/ex/ConfigurableCardPanel.java b/platform/platform-impl/src/com/intellij/openapi/options/ex/ConfigurableCardPanel.java index ae1595f222a9..298c623e30cd 100644 --- a/platform/platform-impl/src/com/intellij/openapi/options/ex/ConfigurableCardPanel.java +++ b/platform/platform-impl/src/com/intellij/openapi/options/ex/ConfigurableCardPanel.java @@ -16,6 +16,7 @@ package com.intellij.openapi.options.ex; import com.intellij.openapi.application.ApplicationManager; +import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.options.Configurable; import com.intellij.openapi.options.MasterDetails; import com.intellij.openapi.util.Computable; @@ -31,9 +32,16 @@ import java.awt.BorderLayout; * @author Sergey.Malenkov */ public class ConfigurableCardPanel extends CardLayoutPanel { + private static final Logger LOG = Logger.getInstance(ConfigurableCardPanel.class); + @Override protected Configurable prepare(Configurable key) { - ConfigurableWrapper.cast(Configurable.class, key); // create wrapped configurable on a pooled thread + try { + ConfigurableWrapper.cast(Configurable.class, key); // create wrapped configurable on a pooled thread + } + catch (Exception unexpected) { + LOG.error("cannot prepare configurable", unexpected); + } return key; } @@ -52,9 +60,15 @@ public class ConfigurableCardPanel extends CardLayoutPanel() { @Override public JComponent compute() { - JComponent component = configurable.createComponent(); + JComponent component = null; + try { + component = configurable.createComponent(); + } + catch (Exception unexpected) { + LOG.error("cannot create configurable component", unexpected); + } if (component != null) { - configurable.reset(); + reset(configurable); if (ConfigurableWrapper.cast(MasterDetails.class, configurable) == null) { if (ConfigurableWrapper.cast(Configurable.NoMargin.class, configurable) == null) { if (!component.getClass().equals(JPanel.class)) { @@ -81,7 +95,23 @@ public class ConfigurableCardPanel extends CardLayoutPanel