From 52d9d450f438974b848dcdb04732889c81e07c8d Mon Sep 17 00:00:00 2001 From: Aleksey Pivovarov Date: Thu, 1 Dec 2016 20:12:53 +0300 Subject: [PATCH] [fix] ui: allow to override background color for Editor notification panel pass background color in constructor, so it could be used in `createActionLabel` call follow-up: 0de9910, 1e42810, 9089601 --- .../impl/LibrarySourceNotificationProvider.kt | 3 +-- ...sonSchemaConflictNotificationProvider.java | 3 +-- .../diff/tools/util/DiffNotifications.java | 3 +-- .../impl/FileLevelIntentionComponent.java | 8 ++++---- .../intellij/ui/EditorNotificationPanel.java | 20 +++++++++---------- .../EditorConfigNotifierProvider.java | 3 +-- .../CCSubtaskEditorNotificationProvider.java | 3 +-- 7 files changed, 19 insertions(+), 24 deletions(-) diff --git a/java/idea-ui/src/com/intellij/codeInsight/daemon/impl/LibrarySourceNotificationProvider.kt b/java/idea-ui/src/com/intellij/codeInsight/daemon/impl/LibrarySourceNotificationProvider.kt index 3034e708d571..23c379c4eb64 100644 --- a/java/idea-ui/src/com/intellij/codeInsight/daemon/impl/LibrarySourceNotificationProvider.kt +++ b/java/idea-ui/src/com/intellij/codeInsight/daemon/impl/LibrarySourceNotificationProvider.kt @@ -59,8 +59,7 @@ class LibrarySourceNotificationProvider(private val project: Project, notificati if (offender != null) { val clsFile = offender.originalElement.containingFile?.virtualFile if (clsFile != null && !clsFile.path.matches(ANDROID_SDK_PATTERN)) { - val panel = EditorNotificationPanel() - panel.background(LightColors.RED) + val panel = EditorNotificationPanel(LightColors.RED) panel.setText(ProjectBundle.message("library.source.mismatch", offender.name)) panel.createActionLabel(ProjectBundle.message("library.source.open.class"), { OpenFileDescriptor(project, clsFile, -1).navigate(true) diff --git a/json/src/com/jetbrains/jsonSchema/impl/JsonSchemaConflictNotificationProvider.java b/json/src/com/jetbrains/jsonSchema/impl/JsonSchemaConflictNotificationProvider.java index 726389529990..cde46b673e67 100644 --- a/json/src/com/jetbrains/jsonSchema/impl/JsonSchemaConflictNotificationProvider.java +++ b/json/src/com/jetbrains/jsonSchema/impl/JsonSchemaConflictNotificationProvider.java @@ -66,8 +66,7 @@ public class JsonSchemaConflictNotificationProvider extends EditorNotifications. final String message = worker.createMessage(descriptors); if (message == null) return null; - final EditorNotificationPanel panel = new EditorNotificationPanel(); - panel.background(LightColors.RED); + final EditorNotificationPanel panel = new EditorNotificationPanel(LightColors.RED); panel.setText(message); panel.createActionLabel("Edit JSON Schema Mappings", () -> { ShowSettingsUtil.getInstance().editConfigurable(myProject, new JsonSchemaMappingsConfigurable(myProject)); diff --git a/platform/diff-impl/src/com/intellij/diff/tools/util/DiffNotifications.java b/platform/diff-impl/src/com/intellij/diff/tools/util/DiffNotifications.java index 188fbce96516..a0e0ed9d0944 100644 --- a/platform/diff-impl/src/com/intellij/diff/tools/util/DiffNotifications.java +++ b/platform/diff-impl/src/com/intellij/diff/tools/util/DiffNotifications.java @@ -87,9 +87,8 @@ public class DiffNotifications { @NotNull public static JPanel createNotification(@NotNull String text, @Nullable final Color background, boolean showHideAction) { - final EditorNotificationPanel panel = new EditorNotificationPanel(); + final EditorNotificationPanel panel = new EditorNotificationPanel(background); panel.text(text); - panel.background(background); if (showHideAction) { HyperlinkLabel link = panel.createActionLabel("Hide", () -> panel.setVisible(false)); link.setToolTipText("Hide this notification"); diff --git a/platform/lang-impl/src/com/intellij/codeInsight/intention/impl/FileLevelIntentionComponent.java b/platform/lang-impl/src/com/intellij/codeInsight/intention/impl/FileLevelIntentionComponent.java index 51a59ab9a22f..9a91c50560d3 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/intention/impl/FileLevelIntentionComponent.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/intention/impl/FileLevelIntentionComponent.java @@ -56,8 +56,8 @@ public class FileLevelIntentionComponent extends EditorNotificationPanel { @NotNull final Project project, @NotNull final PsiFile psiFile, @NotNull final Editor editor, @Nullable String tooltip) { + super(getColor(project, severity)); myProject = project; - background(getColor(severity)); final ShowIntentionsPass.IntentionsInfo info = new ShowIntentionsPass.IntentionsInfo(); @@ -106,12 +106,12 @@ public class FileLevelIntentionComponent extends EditorNotificationPanel { } @NotNull - private Color getColor(@NotNull HighlightSeverity severity) { - if (SeverityRegistrar.getSeverityRegistrar(myProject).compare(severity, HighlightSeverity.ERROR) >= 0) { + private static Color getColor(@NotNull Project project, @NotNull HighlightSeverity severity) { + if (SeverityRegistrar.getSeverityRegistrar(project).compare(severity, HighlightSeverity.ERROR) >= 0) { return LightColors.RED; } - if (SeverityRegistrar.getSeverityRegistrar(myProject).compare(severity, HighlightSeverity.WARNING) >= 0) { + if (SeverityRegistrar.getSeverityRegistrar(project).compare(severity, HighlightSeverity.WARNING) >= 0) { return LightColors.YELLOW; } diff --git a/platform/platform-api/src/com/intellij/ui/EditorNotificationPanel.java b/platform/platform-api/src/com/intellij/ui/EditorNotificationPanel.java index 23086a061b67..2f58fd69f531 100644 --- a/platform/platform-api/src/com/intellij/ui/EditorNotificationPanel.java +++ b/platform/platform-api/src/com/intellij/ui/EditorNotificationPanel.java @@ -60,6 +60,16 @@ public class EditorNotificationPanel extends JPanel implements IntentionActionPr protected Color myBackgroundColor; protected ColorKey myBackgroundColorKey; + public EditorNotificationPanel(@Nullable Color backgroundColor) { + this(); + myBackgroundColor = backgroundColor; + } + + public EditorNotificationPanel(@Nullable ColorKey backgroundColorKey) { + this(); + myBackgroundColorKey = backgroundColorKey; + } + public EditorNotificationPanel() { super(new BorderLayout()); @@ -83,16 +93,6 @@ public class EditorNotificationPanel extends JPanel implements IntentionActionPr return this; } - public EditorNotificationPanel background(@Nullable Color color) { - myBackgroundColor = color; - return this; - } - - public EditorNotificationPanel background(@Nullable ColorKey colorKey) { - myBackgroundColorKey = colorKey; - return this; - } - public EditorNotificationPanel icon(@NotNull Icon icon) { myLabel.setIcon(icon); return this; diff --git a/plugins/editorconfig/src/org/editorconfig/plugincomponents/EditorConfigNotifierProvider.java b/plugins/editorconfig/src/org/editorconfig/plugincomponents/EditorConfigNotifierProvider.java index b0380712479d..1d455ea1de85 100644 --- a/plugins/editorconfig/src/org/editorconfig/plugincomponents/EditorConfigNotifierProvider.java +++ b/plugins/editorconfig/src/org/editorconfig/plugincomponents/EditorConfigNotifierProvider.java @@ -42,8 +42,7 @@ public class EditorConfigNotifierProvider extends EditorNotifications.Provider pairs = SettingsProviderComponent.getInstance().getOutPairs(project, Utils.getFilePath(project, file)); if (!pairs.isEmpty()) { - final EditorNotificationPanel panel = new EditorNotificationPanel() - .background(LightColors.GREEN) + final EditorNotificationPanel panel = new EditorNotificationPanel(LightColors.GREEN) .text("EditorConfig is overriding Code Style settings for this file") .icon(EditorconfigIcons.Editorconfig); panel.createActionLabel("OK", () -> { diff --git a/python/educational-core/course-creator/src/com/jetbrains/edu/coursecreator/CCSubtaskEditorNotificationProvider.java b/python/educational-core/course-creator/src/com/jetbrains/edu/coursecreator/CCSubtaskEditorNotificationProvider.java index 9c2c99fcbca0..679392e9204c 100644 --- a/python/educational-core/course-creator/src/com/jetbrains/edu/coursecreator/CCSubtaskEditorNotificationProvider.java +++ b/python/educational-core/course-creator/src/com/jetbrains/edu/coursecreator/CCSubtaskEditorNotificationProvider.java @@ -65,8 +65,7 @@ public class CCSubtaskEditorNotificationProvider extends EditorNotifications.Pro if (task == null || !task.hasSubtasks()) { return null; } - EditorNotificationPanel panel = new EditorNotificationPanel(); - panel.background(EditorColors.GUTTER_BACKGROUND); + EditorNotificationPanel panel = new EditorNotificationPanel(EditorColors.GUTTER_BACKGROUND); String header = (isTestFile ? "test" : "task") + " file"; int activeSubtaskIndex = task.getActiveSubtaskIndex() + 1; int subtaskSize = task.getLastSubtaskIndex() + 1;