update helper methods to search something after review

This commit is contained in:
Sergey Malenkov
2017-05-02 19:25:10 +03:00
parent de5e753f45
commit a501e72381
5 changed files with 50 additions and 50 deletions
@@ -28,7 +28,6 @@ import com.intellij.ide.ui.laf.darcula.DarculaLookAndFeelInfo;
import com.intellij.ide.util.PropertiesComponent;
import com.intellij.openapi.Disposable;
import com.intellij.openapi.actionSystem.DataContext;
import com.intellij.openapi.actionSystem.DataProvider;
import com.intellij.openapi.application.ApplicationBundle;
import com.intellij.openapi.application.ApplicationNamesInfo;
import com.intellij.openapi.editor.colors.*;
@@ -41,6 +40,7 @@ import com.intellij.openapi.options.Configurable;
import com.intellij.openapi.options.ConfigurationException;
import com.intellij.openapi.options.SchemeManager;
import com.intellij.openapi.options.SearchableConfigurable;
import com.intellij.openapi.options.ShowSettingsUtil;
import com.intellij.openapi.options.colors.*;
import com.intellij.openapi.options.ex.Settings;
import com.intellij.openapi.project.Project;
@@ -76,6 +76,9 @@ import java.util.*;
import java.util.List;
import java.util.function.Function;
import static com.intellij.openapi.actionSystem.CommonDataKeys.PROJECT;
import static com.intellij.openapi.actionSystem.PlatformDataKeys.CONTEXT_COMPONENT;
public class ColorAndFontOptions extends SearchableConfigurable.Parent.Abstract
implements EditorOptionsProvider, SchemesModel<EditorColorsScheme> {
public static final String ID = "reference.settingsdialog.IDE.editor.colors";
@@ -1417,23 +1420,53 @@ public class ColorAndFontOptions extends SearchableConfigurable.Parent.Abstract
}
}
public static Runnable getColorSelector(DataProvider provider, String search, String name) {
return getSelector(Settings.KEY.getData(provider), search, options -> options.findSubConfigurable(name));
public static boolean selectOrEditColor(DataContext context, String search, String name) {
return selectOrEdit(context, search, options -> options.findSubConfigurable(name));
}
public static Runnable getColorSelector(DataContext context, String search, Class<?> type) {
return getSelector(Settings.KEY.getData(context), search, options -> options.findSubConfigurable(type));
public static boolean selectOrEditColor(DataContext context, String search, Class<?> type) {
return selectOrEdit(context, search, options -> options.findSubConfigurable(type));
}
private static Runnable getSelector(Settings settings, String search, Function<ColorAndFontOptions, SearchableConfigurable> function) {
if (settings == null) return null;
private static boolean selectOrEdit(DataContext context, String search, Function<ColorAndFontOptions, SearchableConfigurable> function) {
return select(context, search, function) || edit(context, search, function);
}
private static boolean select(DataContext context, String search, Function<ColorAndFontOptions, SearchableConfigurable> function) {
Settings settings = Settings.KEY.getData(context);
if (settings == null) return false;
ColorAndFontOptions options = settings.find(ColorAndFontOptions.class);
if (options == null) return null;
if (options == null) return false;
SearchableConfigurable page = function.apply(options);
if (page == null) return null;
if (page == null) return false;
return () -> settings.select(page, search);
settings.select(page, search);
return true;
}
private static boolean edit(DataContext context, String search, Function<ColorAndFontOptions, SearchableConfigurable> function) {
ColorAndFontOptions options = new ColorAndFontOptions();
SearchableConfigurable page = function.apply(options);
Configurable[] configurables = options.getConfigurables();
try {
if (page != null) {
Runnable runnable = search == null ? null : page.enableSearch(search);
Window window = UIUtil.getWindow(CONTEXT_COMPONENT.getData(context));
if (window != null) {
ShowSettingsUtil.getInstance().editConfigurable(window, page, runnable);
}
else {
ShowSettingsUtil.getInstance().editConfigurable(PROJECT.getData(context), page, runnable);
}
}
}
finally {
for (Configurable configurable : configurables) configurable.disposeUIResources();
options.disposeUIResources();
}
return page != null;
}
}
@@ -17,7 +17,6 @@ package com.intellij.application.options.colors;
import com.intellij.codeInsight.daemon.impl.HighlightInfo;
import com.intellij.codeInsight.hint.HintManager;
import com.intellij.ide.actions.ShowSettingsUtilImpl;
import com.intellij.injected.editor.EditorWindow;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.CommonDataKeys;
@@ -39,7 +38,6 @@ import com.intellij.openapi.fileTypes.SyntaxHighlighter;
import com.intellij.openapi.options.colors.AttributesDescriptor;
import com.intellij.openapi.options.colors.ColorSettingsPage;
import com.intellij.openapi.options.colors.ColorSettingsPages;
import com.intellij.openapi.options.newEditor.SettingsDialog;
import com.intellij.openapi.project.DumbAwareAction;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.popup.JBPopupFactory;
@@ -62,7 +60,7 @@ import java.util.Collections;
import java.util.List;
import java.util.Map;
import static com.intellij.application.options.colors.ColorAndFontOptions.getColorSelector;
import static com.intellij.application.options.colors.ColorAndFontOptions.selectOrEditColor;
import static com.intellij.ui.SimpleTextAttributes.*;
/**
@@ -185,12 +183,6 @@ public class JumpToColorsAndFontsAction extends DumbAwareAction {
}
private static boolean openSettingsAndSelectKey(@NotNull Project project, @NotNull ColorSettingsPage page, @NotNull AttributesDescriptor descriptor) {
SettingsDialog dialog = (SettingsDialog)ShowSettingsUtilImpl.getDialog(
project, ShowSettingsUtilImpl.getConfigurableGroups(project, true), null);
Runnable selector = getColorSelector(dialog, descriptor.getDisplayName(), page.getDisplayName());
if (selector == null) return false;
selector.run();
dialog.show();
return true;
return selectOrEditColor(id -> CommonDataKeys.PROJECT.is(id) ? project : null, descriptor.getDisplayName(), page.getDisplayName());
}
}
@@ -17,7 +17,6 @@
package com.intellij.codeInspection.ex;
import com.intellij.application.options.colors.ColorAndFontDescriptionPanel;
import com.intellij.application.options.colors.ColorAndFontOptions;
import com.intellij.application.options.colors.InspectionColorSettingsPage;
import com.intellij.application.options.colors.TextAttributesDescription;
import com.intellij.codeInsight.daemon.impl.HighlightInfoType;
@@ -27,15 +26,11 @@ import com.intellij.codeInspection.InspectionsBundle;
import com.intellij.ide.DataManager;
import com.intellij.lang.annotation.HighlightSeverity;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.CommonDataKeys;
import com.intellij.openapi.actionSystem.DataContext;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.editor.colors.CodeInsightColors;
import com.intellij.openapi.editor.colors.TextAttributesKey;
import com.intellij.openapi.editor.markup.TextAttributes;
import com.intellij.openapi.options.Configurable;
import com.intellij.openapi.options.SearchableConfigurable;
import com.intellij.openapi.options.ShowSettingsUtil;
import com.intellij.openapi.ui.DialogWrapper;
import com.intellij.openapi.ui.InputValidator;
import com.intellij.openapi.ui.Messages;
@@ -57,6 +52,7 @@ import java.awt.event.ActionListener;
import java.util.*;
import java.util.List;
import static com.intellij.application.options.colors.ColorAndFontOptions.selectOrEditColor;
import static com.intellij.codeInsight.daemon.impl.SeverityRegistrar.SeverityBasedTextAttributes;
/**
@@ -237,25 +233,7 @@ public class SeverityEditorDialog extends DialogWrapper {
}
myOptionsList.clearSelection();
final DataContext dataContext = DataManager.getInstance().getDataContext(myPanel);
Runnable selector = ColorAndFontOptions.getColorSelector(dataContext, toConfigure, InspectionColorSettingsPage.class);
if (selector != null) {
selector.run();
}
else {
ColorAndFontOptions colorAndFontOptions = new ColorAndFontOptions();
final Configurable[] configurables = colorAndFontOptions.buildConfigurables();
try {
final SearchableConfigurable javaPage = colorAndFontOptions.findSubConfigurable(InspectionColorSettingsPage.class);
LOG.assertTrue(javaPage != null);
ShowSettingsUtil.getInstance().editConfigurable(CommonDataKeys.PROJECT.getData(dataContext), javaPage);
}
finally {
for (Configurable configurable : configurables) {
configurable.disposeUIResources();
}
colorAndFontOptions.disposeUIResources();
}
}
selectOrEditColor(dataContext, toConfigure, InspectionColorSettingsPage.class);
}
private void fillList(final @Nullable HighlightSeverity severity) {
@@ -48,7 +48,7 @@ public abstract class ShowSettingsUtil {
public abstract boolean editConfigurable(@Nullable Component parent, @NotNull Configurable configurable);
public abstract boolean editConfigurable(Component parent, Configurable configurable, @NotNull Runnable advancedInitialization);
public abstract boolean editConfigurable(Component parent, Configurable configurable, Runnable advancedInitialization);
public abstract boolean editConfigurable(Project project, @NonNls String dimensionServiceKey, Configurable configurable);
@@ -35,7 +35,7 @@ import javax.swing.JPanel;
import java.util.LinkedHashMap;
import java.util.Map.Entry;
import static com.intellij.application.options.colors.ColorAndFontOptions.getColorSelector;
import static com.intellij.application.options.colors.ColorAndFontOptions.selectOrEditColor;
import static com.intellij.openapi.application.ApplicationBundle.message;
/**
@@ -61,10 +61,7 @@ final class BreadcrumbsConfigurable implements Configurable {
upper.add(box);
upper.add(LinkLabel.create(message("configure.breadcrumbs.colors"), () -> {
DataContext context = DataManager.getInstance().getDataContext(component);
Runnable select = getColorSelector(context, "Breadcrumbs//Current", GeneralColorsPage.class);
if (select != null) {
select.run();
}
selectOrEditColor(context, "Breadcrumbs//Current", GeneralColorsPage.class);
}));
JPanel boxes = new JPanel(new VerticalLayout(0));