diff --git a/java/java-impl/src/com/intellij/openapi/options/colors/pages/JavaColorSettingsPage.java b/java/java-impl/src/com/intellij/openapi/options/colors/pages/JavaColorSettingsPage.java index 4f7aade54c94..0f331235184b 100644 --- a/java/java-impl/src/com/intellij/openapi/options/colors/pages/JavaColorSettingsPage.java +++ b/java/java-impl/src/com/intellij/openapi/options/colors/pages/JavaColorSettingsPage.java @@ -178,9 +178,8 @@ public class JavaColorSettingsPage implements RainbowColorSettingsPage, Inspecti " public static int staticField = 0;\n" + " public final int instanceFinalField = 0;\n" + "\n" + - " /**\n" + - " * " + ApplicationBundle.message("rainbow.option.panel.display.name") + ":\n" + - " * " + RainbowHighlighter.generatePaletteExample() + "\n" + + " /**" + + RainbowHighlighter.generatePaletteExample("\n * ") + "\n" + " * @param param1\n" + " * @param reassignedParam\n" + " * @param param2\n" + diff --git a/platform/analysis-impl/src/com/intellij/codeHighlighting/RainbowHighlighter.java b/platform/analysis-impl/src/com/intellij/codeHighlighting/RainbowHighlighter.java index d73fdc6abfd6..b420c5801a2f 100644 --- a/platform/analysis-impl/src/com/intellij/codeHighlighting/RainbowHighlighter.java +++ b/platform/analysis-impl/src/com/intellij/codeHighlighting/RainbowHighlighter.java @@ -31,6 +31,7 @@ import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.PsiElement; import com.intellij.ui.ColorUtil; import com.intellij.ui.JBColor; +import com.intellij.ui.UIBundle; import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NotNull; @@ -110,21 +111,32 @@ public class RainbowHighlighter { @NotNull private static String getKey(@Nullable Language language) { - return RAINBOW_TYPE + " " + (language == null ? "Default language" : language.getID()); + return RAINBOW_TYPE + " " + (language == null ? UIBundle.message("color.settings.common.default.language") : language.getID()); } @NotNull - public static String generatePaletteExample() { + public static String generatePaletteExample(@NotNull String indent) { int stopCount = RAINBOW_COLOR_KEYS.length; StringBuilder sb = new StringBuilder(); + + sb.append(indent).append(UIBundle.message("color.settings.rainbow.demo.header.1")) + .append(indent).append(UIBundle.message("color.settings.rainbow.demo.header.2")) + .append(indent); String tagRainbow = RAINBOW_GRADIENT_DEMO.getExternalName(); + boolean needLineBreak = true; for (int i = 0; i < RAINBOW_TEMP_KEYS.length; ++i) { - if (sb.length() != 0) { - sb.append(" "); - } + sb.append(" "); sb.append("<").append(tagRainbow).append(">"); - sb.append((i % stopCount == 0) ? "Stop#" + String.valueOf(i / stopCount + 1) : "T"); + final String anchor = String.valueOf(i / stopCount + 1); + final String minor = String.valueOf(i % stopCount); + sb.append((i % stopCount == 0) ? "Color#" + anchor : ("SC" + anchor + "." + minor)); sb.append(""); + if (needLineBreak && i == RAINBOW_TEMP_KEYS.length/2) { + sb.append(indent); + needLineBreak = false; + //noinspection AssignmentToForLoopParameter + --i; + } } return sb.toString(); } diff --git a/platform/lang-impl/src/com/intellij/application/options/colors/RainbowDescriptionPanel.form b/platform/lang-impl/src/com/intellij/application/options/colors/RainbowDescriptionPanel.form index 0e8ddb02e857..733215ae3a77 100644 --- a/platform/lang-impl/src/com/intellij/application/options/colors/RainbowDescriptionPanel.form +++ b/platform/lang-impl/src/com/intellij/application/options/colors/RainbowDescriptionPanel.form @@ -14,6 +14,7 @@ + diff --git a/platform/lang-impl/src/com/intellij/application/options/colors/SimpleEditorPreview.java b/platform/lang-impl/src/com/intellij/application/options/colors/SimpleEditorPreview.java index 8051acb77c8a..4ee8016852f1 100644 --- a/platform/lang-impl/src/com/intellij/application/options/colors/SimpleEditorPreview.java +++ b/platform/lang-impl/src/com/intellij/application/options/colors/SimpleEditorPreview.java @@ -355,6 +355,7 @@ public class SimpleEditorPreview implements PreviewPanel { List rainbowMarkup = new ArrayList<>(); int tempKeyIndex = 0; + boolean repeatAnchor = true; for (HighlightData d : initialMarkup) { final TextAttributesKey highlightKey = d.getHighlightKey(); final boolean rainbowType = page.isRainbowType(highlightKey); @@ -368,7 +369,14 @@ public class SimpleEditorPreview implements PreviewPanel { rainbowTemp = getRainbowTemp(rainbowTempKeys, d.getStartOffset(), d.getEndOffset()); } else { - rainbowTemp = new HighlightData(d.getStartOffset(), d.getEndOffset(), rainbowTempKeys[tempKeyIndex++ % colorCount]); + rainbowTemp = new HighlightData(d.getStartOffset(), d.getEndOffset(), rainbowTempKeys[tempKeyIndex % colorCount]); + if (repeatAnchor && tempKeyIndex == colorCount/2) { + // anchor [Color#3] colored twice: it the end and in the beginning of rainbow-demo string + repeatAnchor = false; + } + else { + ++tempKeyIndex; + } } // TODO: // At some point highlighting data is applied in reversed order. To ensure rainbow highlighting is always on top, we add it twice. diff --git a/platform/lang-impl/src/com/intellij/openapi/options/colors/pages/DefaultLanguageColorsPage.java b/platform/lang-impl/src/com/intellij/openapi/options/colors/pages/DefaultLanguageColorsPage.java index 095d81869ea2..220702883b85 100644 --- a/platform/lang-impl/src/com/intellij/openapi/options/colors/pages/DefaultLanguageColorsPage.java +++ b/platform/lang-impl/src/com/intellij/openapi/options/colors/pages/DefaultLanguageColorsPage.java @@ -216,9 +216,8 @@ public class DefaultLanguageColorsPage implements RainbowColorSettingsPage, Disp "Global variable\n" + "/** \n" + " * Doc comment\n" + - " * @tag Markup\n" + - " * " + ApplicationBundle.message("rainbow.option.panel.display.name") + ":\n" + - " * " + RainbowHighlighter.generatePaletteExample() + "\n" + + " * @tag Markup" + + RainbowHighlighter.generatePaletteExample("\n * ") + "\n" + " * @param parameter1 documentation\n" + " * @param parameter2 documentation\n" + " * @param parameter3 documentation\n" + @@ -227,7 +226,7 @@ public class DefaultLanguageColorsPage implements RainbowColorSettingsPage, Disp "Function declaration (parameter1 parameter2 parameter3 parameter4)\n" + " Local variable1 variable2 variable3 variable4\n" + "Function call(" + - (PlatformUtils.isIntelliJ() ? "0, 1, 2" : "")+ + (PlatformUtils.isIntelliJ() ? "0, 1, 2" : "") + ")\n" + "Interface Name\n" + "@Metadata\n" + diff --git a/platform/platform-resources-en/src/messages/ApplicationBundle.properties b/platform/platform-resources-en/src/messages/ApplicationBundle.properties index be326c292657..b4380e86074e 100644 --- a/platform/platform-resources-en/src/messages/ApplicationBundle.properties +++ b/platform/platform-resources-en/src/messages/ApplicationBundle.properties @@ -753,18 +753,18 @@ quarantine.error.title=Warning quarantine.error.message=Error cleaning quarantine status rainbow.option.panel.display.name=Semantic highlighting -label.override.gradient=Override gradient: -label.inherited.gradient=Inherited from {1} gradient: -label.inherited.gradient.tooltip=''{0}->Override gradient'' from
''{1}'' section -checkbox.stop.1=Stop #1 -checkbox.stop.2=Stop #2 -checkbox.stop.3=Stop #3 -checkbox.stop.4=Stop #4 -checkbox.stop.5=Stop #5 -checkbox.rainbow=Unique color for each parameter
and local variable
Chosen from generated gradient -label.rainbow.inheritance=
''{0}->Unique color''
of {2} -label.rainbow.inheritance.tooltip=''{0}->Unique color'' from
''{1}'' section +label.override.gradient=Spectrum: +label.inherited.gradient=Inherited from
{1} spectrum: +label.inherited.gradient.tooltip=''{0}->Spectrum'' from
''{1}'' section +checkbox.stop.1=Color #1 +checkbox.stop.2=Color #2 +checkbox.stop.3=Color #3 +checkbox.stop.4=Color #4 +checkbox.stop.5=Color #5 +checkbox.rainbow=Semantic highlighting
Assign each parameter and local variable its
own color picked from spectrum below
+label.rainbow.inheritance=
''{0}->Semantic highlighting''
of {2} +label.rainbow.inheritance.tooltip=''{0}->Semantic highlighting'' from
''{1}'' section color.scheme.reset=Reset color.scheme.reset.message=Reset the scheme to its default values?\nNote: all the changes you have made to the scheme will be lost. -color.scheme.reset.title=Scheme Reset \ No newline at end of file +color.scheme.reset.title=Scheme Reset diff --git a/platform/platform-resources-en/src/messages/UIBundle.properties b/platform/platform-resources-en/src/messages/UIBundle.properties index d62118dcaddf..d4767b92a065 100644 --- a/platform/platform-resources-en/src/messages/UIBundle.properties +++ b/platform/platform-resources-en/src/messages/UIBundle.properties @@ -180,3 +180,6 @@ color.blindness.deuteranopia.name=Deuteranopia (green) color.blindness.tritanopia.name=Tritanopia (blue) color.blindness.achromatopsia.name=Achromatopsia color.blindness.link.to.help=How it works +color.settings.common.default.language=Default language +color.settings.rainbow.demo.header.1=Semantic highlighting: +color.settings.rainbow.demo.header.2=Generated spectrum to pick colors for local variables and parameters: