mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
update helper methods to search something after review
This commit is contained in:
+43
-10
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
+2
-10
@@ -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));
|
||||
|
||||
Reference in New Issue
Block a user