Fixed IDEA-55516 Settings->Editor->Colors&Fonts: sort settings subtree ColorSettingsPage by name

This commit is contained in:
Rustam Vishnyakov
2012-02-13 15:26:32 +04:00
parent 93bc643e8c
commit d414658f4d
9 changed files with 139 additions and 11 deletions
@@ -28,6 +28,8 @@ import com.intellij.openapi.options.colors.AttributesDescriptor;
import com.intellij.openapi.options.colors.ColorDescriptor;
import com.intellij.openapi.options.colors.ColorSettingsPage;
import com.intellij.pom.java.LanguageLevel;
import com.intellij.psi.codeStyle.DisplayPriority;
import com.intellij.psi.codeStyle.DisplayPrioritySortable;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
@@ -35,7 +37,7 @@ import javax.swing.*;
import java.util.HashMap;
import java.util.Map;
public class JavaColorSettingsPage implements ColorSettingsPage, InspectionColorSettingsPage {
public class JavaColorSettingsPage implements ColorSettingsPage, InspectionColorSettingsPage, DisplayPrioritySortable {
private static final AttributesDescriptor[] ourDescriptors = {
new AttributesDescriptor(OptionsBundle.message("options.java.attribute.descriptor.keyword"), SyntaxHighlighterColors.KEYWORD),
new AttributesDescriptor(OptionsBundle.message("options.java.attribute.descriptor.number"), SyntaxHighlighterColors.NUMBER),
@@ -187,4 +189,9 @@ public class JavaColorSettingsPage implements ColorSettingsPage, InspectionColor
public Map<String,TextAttributesKey> getAdditionalHighlightingTagToDescriptorMap() {
return ourTags;
}
@Override
public DisplayPriority getPriority() {
return DisplayPriority.KEY_LANGUAGE_SETTINGS;
}
}
@@ -0,0 +1,24 @@
/*
* Copyright 2000-2012 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.intellij.psi.codeStyle;
/**
* Allows to define in which order settings items must be shown.
* @author Rustam Vishnyakov
*/
public interface DisplayPrioritySortable {
DisplayPriority getPriority();
}
@@ -52,6 +52,8 @@ import com.intellij.openapi.util.Pair;
import com.intellij.openapi.vcs.FileStatus;
import com.intellij.openapi.vcs.FileStatusFactory;
import com.intellij.openapi.vcs.FileStatusManager;
import com.intellij.psi.codeStyle.DisplayPriority;
import com.intellij.psi.codeStyle.DisplayPrioritySortable;
import com.intellij.psi.search.scope.packageSet.NamedScope;
import com.intellij.psi.search.scope.packageSet.NamedScopesHolder;
import com.intellij.psi.search.scope.packageSet.PackageSet;
@@ -322,11 +324,12 @@ public class ColorAndFontOptions extends SearchableConfigurable.Parent.Abstract
protected List<ColorAndFontPanelFactory> createPanelFactories() {
ArrayList<ColorAndFontPanelFactory> result = new ArrayList<ColorAndFontPanelFactory>();
result.add(new FontConfigurableFactory());
result.add(new ConsoleFontConfigurableFactory());
List<ColorAndFontPanelFactory> extensions = new ArrayList<ColorAndFontPanelFactory>();
extensions.add(new ConsoleFontConfigurableFactory());
ColorSettingsPage[] pages = ColorSettingsPages.getInstance().getRegisteredPages();
for (final ColorSettingsPage page : pages) {
result.add(new ColorAndFontPanelFactory() {
extensions.add(new ColorAndFontPanelFactoryEx() {
@NotNull
public NewColorAndFontPanel createPanel(@NotNull ColorAndFontOptions options) {
final SimpleEditorPreview preview = new SimpleEditorPreview(options, page);
@@ -337,9 +340,37 @@ public class ColorAndFontOptions extends SearchableConfigurable.Parent.Abstract
public String getPanelDisplayName() {
return page.getDisplayName();
}
@Override
public DisplayPriority getPriority() {
if (page instanceof DisplayPrioritySortable) {
return ((DisplayPrioritySortable)page).getPriority();
}
return DisplayPriority.LANGUAGE_SETTINGS;
}
});
}
Collections.addAll(result, Extensions.getExtensions(ColorAndFontPanelFactory.EP_NAME));
Collections.addAll(extensions, Extensions.getExtensions(ColorAndFontPanelFactory.EP_NAME));
Collections.sort(extensions, new Comparator<ColorAndFontPanelFactory>() {
@Override
public int compare(ColorAndFontPanelFactory f1, ColorAndFontPanelFactory f2) {
if (f1 instanceof DisplayPrioritySortable) {
if (f2 instanceof DisplayPrioritySortable) {
int result = ((DisplayPrioritySortable)f1).getPriority().compareTo(((DisplayPrioritySortable)f2).getPriority());
if (result != 0) return result;
}
else {
return 1;
}
}
else if (f2 instanceof DisplayPrioritySortable) {
return -1;
}
return f1.getPanelDisplayName().compareTo(f2.getPanelDisplayName());
}
});
result.addAll(extensions);
result.add(new DiffColorsPageFactory());
result.add(new FileStatusColorsPageFactory());
result.add(new ScopeColorsPageFactory());
@@ -365,7 +396,7 @@ public class ColorAndFontOptions extends SearchableConfigurable.Parent.Abstract
}
}
private static class ConsoleFontConfigurableFactory implements ColorAndFontPanelFactory {
private static class ConsoleFontConfigurableFactory implements ColorAndFontPanelFactoryEx {
@NotNull
public NewColorAndFontPanel createPanel(@NotNull ColorAndFontOptions options) {
FontEditorPreview previewPanel = new FontEditorPreview(options, false) {
@@ -386,7 +417,12 @@ public class ColorAndFontOptions extends SearchableConfigurable.Parent.Abstract
public String getPanelDisplayName() {
return "Console Font";
}
}
@Override
public DisplayPriority getPriority() {
return DisplayPriority.COMMON_SETTINGS;
}
}
private class DiffColorsPageFactory implements ColorAndFontPanelFactory {
@NotNull
@@ -0,0 +1,28 @@
/*
* Copyright 2000-2012 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.intellij.application.options.colors;
import com.intellij.openapi.extensions.ExtensionPointName;
import com.intellij.psi.codeStyle.DisplayPrioritySortable;
import org.jetbrains.annotations.NotNull;
/**
* @author Rustam Vishnyakov
*/
public interface ColorAndFontPanelFactoryEx extends ColorAndFontPanelFactory, DisplayPrioritySortable {
}
@@ -10,6 +10,8 @@ import com.intellij.openapi.options.OptionsBundle;
import com.intellij.openapi.options.colors.AttributesDescriptor;
import com.intellij.openapi.options.colors.ColorDescriptor;
import com.intellij.openapi.options.colors.ColorSettingsPage;
import com.intellij.psi.codeStyle.DisplayPriority;
import com.intellij.psi.codeStyle.DisplayPrioritySortable;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -20,7 +22,7 @@ import java.util.Map;
/**
* @author oleg, Roman.Chernyatchik
*/
public class ANSIColoredConsoleColorsPage implements ColorSettingsPage {
public class ANSIColoredConsoleColorsPage implements ColorSettingsPage, DisplayPrioritySortable {
private static final String DEMO_TEXT =
"<stdsys>C:\\command.com</stdsys>\n" +
@@ -120,4 +122,8 @@ public class ANSIColoredConsoleColorsPage implements ColorSettingsPage {
return DEMO_TEXT;
}
@Override
public DisplayPriority getPriority() {
return DisplayPriority.COMMON_SETTINGS;
}
}
@@ -24,6 +24,8 @@ import com.intellij.openapi.options.OptionsBundle;
import com.intellij.openapi.options.colors.AttributesDescriptor;
import com.intellij.openapi.options.colors.ColorDescriptor;
import com.intellij.openapi.options.colors.ColorSettingsPage;
import com.intellij.psi.codeStyle.DisplayPriority;
import com.intellij.psi.codeStyle.DisplayPrioritySortable;
import com.intellij.util.PlatformIcons;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
@@ -31,7 +33,7 @@ import org.jetbrains.annotations.NotNull;
import javax.swing.*;
import java.util.Map;
public class CustomColorsPage implements ColorSettingsPage {
public class CustomColorsPage implements ColorSettingsPage, DisplayPrioritySortable {
private static final AttributesDescriptor[] ATTRS = {
new AttributesDescriptor(OptionsBundle.message("options.custom.attribute.descriptor.keyword1"), CustomHighlighterColors.CUSTOM_KEYWORD1_ATTRIBUTES),
new AttributesDescriptor(OptionsBundle.message("options.custom.attribute.descriptor.keyword2"), CustomHighlighterColors.CUSTOM_KEYWORD2_ATTRIBUTES),
@@ -108,4 +110,9 @@ public class CustomColorsPage implements ColorSettingsPage {
public Map<String, TextAttributesKey> getAdditionalHighlightingTagToDescriptorMap() {
return null;
}
@Override
public DisplayPriority getPriority() {
return DisplayPriority.COMMON_SETTINGS;
}
}
@@ -32,13 +32,15 @@ import com.intellij.openapi.options.OptionsBundle;
import com.intellij.openapi.options.colors.AttributesDescriptor;
import com.intellij.openapi.options.colors.ColorDescriptor;
import com.intellij.openapi.options.colors.ColorSettingsPage;
import com.intellij.psi.codeStyle.DisplayPriority;
import com.intellij.psi.codeStyle.DisplayPrioritySortable;
import org.jetbrains.annotations.NotNull;
import javax.swing.*;
import java.util.HashMap;
import java.util.Map;
public class GeneralColorsPage implements ColorSettingsPage, InspectionColorSettingsPage {
public class GeneralColorsPage implements ColorSettingsPage, InspectionColorSettingsPage, DisplayPrioritySortable {
private static final String ADDITIONAL_DEMO_TEXT =
"\n" +
"<todo>//TODO: Visit JB Web resources:</todo>\n"+
@@ -188,6 +190,11 @@ public class GeneralColorsPage implements ColorSettingsPage, InspectionColorSett
return ADDITIONAL_HIGHLIGHT_DESCRIPTORS;
}
@Override
public DisplayPriority getPriority() {
return DisplayPriority.GENERAL_SETTINGS;
}
private static String getCustomSeveritiesDemoText() {
final StringBuilder buff = new StringBuilder();
@@ -23,6 +23,8 @@ import com.intellij.openapi.options.colors.AttributesDescriptor;
import com.intellij.openapi.options.colors.ColorDescriptor;
import com.intellij.openapi.options.colors.ColorSettingsPage;
import com.intellij.openapi.util.IconLoader;
import com.intellij.psi.codeStyle.DisplayPriority;
import com.intellij.psi.codeStyle.DisplayPrioritySortable;
import com.intellij.xdebugger.XDebuggerBundle;
import com.intellij.xdebugger.ui.DebuggerColors;
import org.jetbrains.annotations.NonNls;
@@ -35,7 +37,7 @@ import java.util.Map;
/**
* @author max
*/
public class DebuggerColorsPage implements ColorSettingsPage {
public class DebuggerColorsPage implements ColorSettingsPage, DisplayPrioritySortable {
@NotNull
public String getDisplayName() {
return XDebuggerBundle.message("xdebugger.colors.page.name");
@@ -76,4 +78,9 @@ public class DebuggerColorsPage implements ColorSettingsPage {
public Map<String, TextAttributesKey> getAdditionalHighlightingTagToDescriptorMap() {
return null;
}
@Override
public DisplayPriority getPriority() {
return DisplayPriority.COMMON_SETTINGS;
}
}
@@ -1,6 +1,7 @@
package org.jetbrains.plugins.gradle.config;
import com.intellij.application.options.colors.*;
import com.intellij.psi.codeStyle.DisplayPriority;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.plugins.gradle.util.GradleBundle;
@@ -8,7 +9,7 @@ import org.jetbrains.plugins.gradle.util.GradleBundle;
* @author Denis Zhdanov
* @since 1/19/12 11:32 AM
*/
public class GradleColorAndFontPanelFactory implements ColorAndFontPanelFactory {
public class GradleColorAndFontPanelFactory implements ColorAndFontPanelFactoryEx {
@NotNull
@Override
@@ -25,4 +26,9 @@ public class GradleColorAndFontPanelFactory implements ColorAndFontPanelFactory
public String getPanelDisplayName() {
return GradleBundle.message("gradle.name");
}
@Override
public DisplayPriority getPriority() {
return DisplayPriority.LANGUAGE_SETTINGS;
}
}