diff options
Diffstat (limited to 'platform/platform-impl/src/com/intellij/openapi/options/ConfigurableBase.java')
-rw-r--r-- | platform/platform-impl/src/com/intellij/openapi/options/ConfigurableBase.java | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/platform/platform-impl/src/com/intellij/openapi/options/ConfigurableBase.java b/platform/platform-impl/src/com/intellij/openapi/options/ConfigurableBase.java new file mode 100644 index 000000000000..104dc7b30ec7 --- /dev/null +++ b/platform/platform-impl/src/com/intellij/openapi/options/ConfigurableBase.java @@ -0,0 +1,52 @@ +package com.intellij.openapi.options; + +import org.jetbrains.annotations.Nullable; + +import javax.swing.*; + +public abstract class ConfigurableBase<UI extends ConfigurableUi<S>, S> implements SearchableConfigurable, Configurable.NoScroll { + private UI ui; + + @Nullable + @Override + public Runnable enableSearch(String option) { + return null; + } + + protected abstract S getSettings(); + + @Override + public void reset() { + if (ui != null) { + ui.reset(getSettings()); + } + } + + @Nullable + @Override + public final JComponent createComponent() { + if (ui == null) { + ui = createUi(); + } + return ui.getComponent(); + } + + protected abstract UI createUi(); + + @Override + public final boolean isModified() { + return ui != null && ui.isModified(getSettings()); + } + + @Override + public final void apply() { + if (ui != null) { + ui.apply(getSettings()); + } + } + + @Override + public void disposeUIResources() { + ui = null; + } +}
\ No newline at end of file |