Ability to listen changes to settings in pojo fields made from UI. RIDER-IC-CR-52

This commit is contained in:
Alexander.Kirsanov
2018-04-19 01:02:39 +03:00
parent 92599f5420
commit 995a5a09c2
6 changed files with 29 additions and 5 deletions
@@ -70,6 +70,7 @@ public class CodeFoldingConfigurable extends CompositeConfigurable<CodeFoldingOp
Project project = editor.getProject();
if (project != null && !project.isDefault()) CodeFoldingManager.getInstance(project).scheduleAsyncFoldingUpdate(editor);
}
ApplicationManager.getApplication().getMessageBus().syncPublisher(EditorOptionsListener.FOLDING_CONFIGURABLE_TOPIC).changesApplied();
}
@Override
@@ -11,6 +11,7 @@ import com.intellij.codeInsight.hints.settings.ParameterNameHintsConfigurable;
import com.intellij.ide.ui.LafManager;
import com.intellij.ide.ui.UISettings;
import com.intellij.openapi.application.ApplicationBundle;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.editor.ex.EditorSettingsExternalizable;
import com.intellij.openapi.extensions.ExtensionPointName;
import com.intellij.openapi.options.CompositeConfigurable;
@@ -176,6 +177,7 @@ public class EditorAppearanceConfigurable extends CompositeConfigurable<UnnamedC
uiSettings.fireUISettingsChanged();
}
EditorOptionsPanel.restartDaemons();
ApplicationManager.getApplication().getMessageBus().syncPublisher(EditorOptionsListener.APPEARANCE_CONFIGURABLE_TOPIC).changesApplied();
super.apply();
}
@@ -0,0 +1,20 @@
// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package com.intellij.application.options.editor;
import com.intellij.util.messages.Topic;
/**
* Common interface of listeners that get notified on applying changes from editor-related settings pages.
* !!!Important!!!
* This is not a settings' listener, but the listener of a page these can be modified from,
* so it doesn't respond to external storage changes or changes made from code.
*/
public interface EditorOptionsListener {
Topic<EditorOptionsListener> FOLDING_CONFIGURABLE_TOPIC = Topic.create("CodeFoldingConfigurable changes applied", EditorOptionsListener.class);
Topic<EditorOptionsListener> APPEARANCE_CONFIGURABLE_TOPIC = Topic.create("EditorAppearanceConfigurable changes applied", EditorOptionsListener.class);
Topic<EditorOptionsListener> OPTIONS_PANEL_TOPIC = Topic.create("EditorOptionsPanel changes applied", EditorOptionsListener.class);
Topic<EditorOptionsListener> SMART_KEYS_CONFIGURABLE_TOPIC = Topic.create("EditorSmartKeysConfigurable changes applied", EditorOptionsListener.class);
Topic<EditorOptionsListener> GUTTER_ICONS_CONFIGURABLE_TOPIC = Topic.create("GutterIconsConfigurable changes applied", EditorOptionsListener.class);
void changesApplied();
}
@@ -366,6 +366,7 @@ public class EditorOptionsPanel implements SearchableConfigurable {
}
restartDaemons();
ApplicationManager.getApplication().getMessageBus().syncPublisher(EditorOptionsListener.OPTIONS_PANEL_TOPIC).changesApplied();
}
private int getQuickDocDelayFromGui() {
@@ -9,6 +9,7 @@ import com.intellij.lang.Commenter;
import com.intellij.lang.Language;
import com.intellij.lang.LanguageCommenters;
import com.intellij.openapi.application.ApplicationBundle;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.editor.ex.EditorSettingsExternalizable;
import com.intellij.openapi.extensions.ExtensionPointName;
@@ -209,6 +210,7 @@ public class EditorSmartKeysConfigurable extends CompositeConfigurable<UnnamedCo
editorSettings.setAddCaretsOnDoubleCtrl(myCbEnableAddingCaretsOnDoubleCtrlArrows.isSelected());
super.apply();
ApplicationManager.getApplication().getMessageBus().syncPublisher(EditorOptionsListener.SMART_KEYS_CONFIGURABLE_TOPIC).changesApplied();
}
@Override
@@ -19,6 +19,7 @@ import com.intellij.codeInsight.daemon.*;
import com.intellij.ide.plugins.IdeaPluginDescriptor;
import com.intellij.lang.LanguageExtensionPoint;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.editor.ex.EditorSettingsExternalizable;
import com.intellij.openapi.extensions.ExtensionPoint;
import com.intellij.openapi.extensions.Extensions;
@@ -28,8 +29,6 @@ import com.intellij.openapi.options.ConfigurationException;
import com.intellij.openapi.options.SearchableConfigurable;
import com.intellij.openapi.options.ShowSettingsUtil;
import com.intellij.openapi.project.DumbAwareAction;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.project.ProjectManager;
import com.intellij.openapi.util.Comparing;
import com.intellij.ui.CheckBoxList;
import com.intellij.ui.ListSpeedSearch;
@@ -162,9 +161,8 @@ public class GutterIconsConfigurable implements SearchableConfigurable, Configur
for (GutterIconDescriptor descriptor : myDescriptors) {
LineMarkerSettings.getSettings().setEnabled(descriptor, myList.isItemSelected(descriptor));
}
for (Project project : ProjectManager.getInstance().getOpenProjects()) {
DaemonCodeAnalyzer.getInstance(project).restart();
}
EditorOptionsPanel.restartDaemons();
ApplicationManager.getApplication().getMessageBus().syncPublisher(EditorOptionsListener.GUTTER_ICONS_CONFIGURABLE_TOPIC).changesApplied();
}
@Override