[settingsDialog] IJPL-176500 – Revert All button

GitOrigin-RevId: e35cff9c7710cad8182d24fb3cb8e32e67b0ce8c
This commit is contained in:
Sergey Pak
2025-02-05 22:04:32 +00:00
committed by intellij-monorepo-bot
parent 2d378bbf04
commit ec666232a2
3 changed files with 33 additions and 11 deletions
@@ -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}
@@ -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();
@@ -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<Configurable, ConfigurableController> 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<? extends ConfigurableGroup> 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();