Notify SettingsEditor on current settings change if the change is not directly coming from UI [IDEA-CR-19864]

This commit is contained in:
Rustam Vishnyakov
2017-03-30 18:15:55 +03:00
parent 4b83d7bd0d
commit 35570f6bd9
4 changed files with 20 additions and 2 deletions
@@ -18,11 +18,14 @@ package com.intellij.application.options.codeStyle;
import com.intellij.application.options.CodeStyleAbstractPanel;
import com.intellij.application.options.TabbedLanguageCodeStylePanel;
import com.intellij.ide.DataManager;
import com.intellij.ide.util.PropertiesComponent;
import com.intellij.lang.Language;
import com.intellij.openapi.actionSystem.DataContext;
import com.intellij.openapi.application.ApplicationBundle;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.options.ConfigurationException;
import com.intellij.openapi.options.ex.Settings;
import com.intellij.psi.codeStyle.CodeStyleScheme;
import com.intellij.psi.codeStyle.CodeStyleSchemes;
import com.intellij.ui.components.labels.SwingActionLink;
@@ -103,7 +106,12 @@ public class CodeStyleMainPanel extends JPanel implements TabbedLanguageCodeStyl
@Override
public void afterCurrentSettingsChanged() {
mySchemesPanel.updateOnCurrentSettingsChange();
mySchemesPanel.updateOnCurrentSettingsChange();
DataContext context = DataManager.getInstance().getDataContext(mySettingsPanel);
Settings settings = Settings.KEY.getData(context);
if (settings != null) {
settings.revalidate();
}
}
@Override
@@ -69,4 +69,9 @@ public abstract class Settings {
private static Configurable choose(Configurable configurable, Configurable variant) {
return variant != null ? variant : configurable;
}
/**
* Used to handle programmatic settings changes when no UI events are sent.
*/
public void revalidate() {}
}
@@ -187,7 +187,7 @@ class ConfigurableEditor extends AbstractEditor implements AnActionListener, AWT
}
}
private void requestUpdate() {
void requestUpdate() {
final Configurable configurable = myConfigurable;
myQueue.queue(new Update(this) {
@Override
@@ -76,6 +76,11 @@ final class SettingsEditor extends AbstractEditor implements DataProvider {
myFilter.update(null, false, true);
return myTreeView.select(configurable);
}
@Override
public void revalidate() {
myEditor.requestUpdate();
}
};
mySearch = new SettingsSearch() {
@Override