From ec666232a21f56b3a1c574df7d73eb00a03d43ca Mon Sep 17 00:00:00 2001 From: Sergey Pak Date: Mon, 3 Feb 2025 15:24:14 +0100 Subject: [PATCH] =?UTF-8?q?[settingsDialog]=20IJPL-176500=20=E2=80=93=20Re?= =?UTF-8?q?vert=20All=20button?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit GitOrigin-RevId: e35cff9c7710cad8182d24fb3cb8e32e67b0ce8c --- .../resources/messages/UIBundle.properties | 2 ++ .../options/newEditor/ConfigurableEditor.java | 14 ++++++---- .../options/newEditor/SettingsEditor.java | 28 +++++++++++++++---- 3 files changed, 33 insertions(+), 11 deletions(-) diff --git a/platform/platform-api/resources/messages/UIBundle.properties b/platform/platform-api/resources/messages/UIBundle.properties index 2249a49721d1..19755a1b3cb8 100644 --- a/platform/platform-api/resources/messages/UIBundle.properties +++ b/platform/platform-api/resources/messages/UIBundle.properties @@ -280,6 +280,8 @@ button.text.down=Down configurable.reset.action.name=Revert changes configurable.reset.action.description=Revert all changes on this page to the previously saved state +settings.reset.all.action.name=Revert All +settings.reset.all.action.description=Revert all settings to the previously saved state please.enter.a.number=Please enter a number please.enter.a.number.from.0.to.1=Please enter a number from {0} to {1} 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 ef766dc3ae63..b83bf93ee9ce 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 @@ -63,11 +63,7 @@ class ConfigurableEditor extends AbstractEditor implements AnActionListener, AWT private final AbstractAction myResetAction = new AbstractAction(UIBundle.message("configurable.reset.action.name")) { @Override public void actionPerformed(ActionEvent event) { - if (configurable != null) { - ConfigurableCardPanel.reset(configurable); - updateCurrent(configurable, true); - FeatureUsageUiEventsKt.getUiEventLogger().logResetConfigurable(configurable); - } + reset(); } }; private Configurable configurable; @@ -133,6 +129,14 @@ class ConfigurableEditor extends AbstractEditor implements AnActionListener, AWT return setError(apply(myApplyAction.isEnabled() ? configurable : null)); } + protected void reset() { + if (configurable != null) { + ConfigurableCardPanel.reset(configurable); + updateCurrent(configurable, true); + FeatureUsageUiEventsKt.getUiEventLogger().logResetConfigurable(configurable); + } + } + @Override protected boolean cancel(AWTEvent source) { configurable.cancel(); diff --git a/platform/platform-impl/src/com/intellij/openapi/options/newEditor/SettingsEditor.java b/platform/platform-impl/src/com/intellij/openapi/options/newEditor/SettingsEditor.java index fa4332b55d8e..44b471141ba2 100644 --- a/platform/platform-impl/src/com/intellij/openapi/options/newEditor/SettingsEditor.java +++ b/platform/platform-impl/src/com/intellij/openapi/options/newEditor/SettingsEditor.java @@ -13,10 +13,7 @@ import com.intellij.openapi.options.Configurable; import com.intellij.openapi.options.ConfigurableGroup; import com.intellij.openapi.options.ConfigurationException; import com.intellij.openapi.options.SearchableConfigurable; -import com.intellij.openapi.options.ex.ConfigurableVisitor; -import com.intellij.openapi.options.ex.ConfigurableWrapper; -import com.intellij.openapi.options.ex.MutableConfigurableGroup; -import com.intellij.openapi.options.ex.Settings; +import com.intellij.openapi.options.ex.*; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.LoadingDecorator; import com.intellij.openapi.ui.Splitter; @@ -29,6 +26,7 @@ import com.intellij.openapi.wm.impl.IdeFrameDecorator; import com.intellij.ui.IdeUICustomization; import com.intellij.ui.OnePixelSplitter; import com.intellij.ui.SearchTextField; +import com.intellij.ui.UIBundle; import com.intellij.ui.components.panels.VerticalLayout; import com.intellij.ui.navigation.History; import com.intellij.ui.navigation.Place; @@ -46,6 +44,7 @@ import org.jetbrains.concurrency.Promises; import javax.swing.*; import java.awt.*; +import java.awt.event.ActionEvent; import java.awt.event.FocusAdapter; import java.awt.event.FocusEvent; import java.awt.event.KeyEvent; @@ -73,6 +72,14 @@ public final class SettingsEditor extends AbstractEditor implements UiDataProvid private final Map controllers = new HashMap<>(); private ConfigurableController lastController; + private final AbstractAction myResetAllAction = new AbstractAction(UIBundle.message("settings.reset.all.action.name")) { + @Override + public void actionPerformed(ActionEvent event) { + reset(); + } + }; + + SettingsEditor(@NotNull Disposable parent, @NotNull Project project, @NotNull List groups, @@ -414,7 +421,14 @@ public final class SettingsEditor extends AbstractEditor implements UiDataProvid @Override protected Action getResetAction() { - return editor.getResetAction(); + return myResetAllAction; + } + + private void reset() { + checkModified(filter.context.getCurrentConfigurable()); + for (Configurable configurable : filter.context.getModified()) { + filter.context.fireReset(configurable); + } } @Override @@ -465,7 +479,9 @@ public final class SettingsEditor extends AbstractEditor implements UiDataProvid filter.updateSpotlight(configurable == null); if (editor != null) { ConfigurationException exception = filter.context.getErrors().get(configurable); - editor.getApplyAction().setEnabled(!filter.context.getModified().isEmpty()); + boolean hasModified = filter.context.getModified().isEmpty(); + editor.getApplyAction().setEnabled(!hasModified); + myResetAllAction.setEnabled(!hasModified); editor.getResetAction().setEnabled(filter.context.isModified(configurable) || exception != null); editor.setError(exception); editor.revalidate();