From d8736e94423d4f699d997123616c61d601f4675f Mon Sep 17 00:00:00 2001 From: Natalia Ukhorskaya Date: Tue, 15 Oct 2013 15:18:35 +0400 Subject: [PATCH] Extract single notification manager --- .../ConfigureKotlinNotificationManager.kt | 19 ++++++++----- .../ConfigureKotlinNotification.java | 28 +++++++++++-------- 2 files changed, 29 insertions(+), 18 deletions(-) diff --git a/idea/src/org/jetbrains/jet/plugin/configuration/ConfigureKotlinNotificationManager.kt b/idea/src/org/jetbrains/jet/plugin/configuration/ConfigureKotlinNotificationManager.kt index 32193af104b..37a68bb46b2 100644 --- a/idea/src/org/jetbrains/jet/plugin/configuration/ConfigureKotlinNotificationManager.kt +++ b/idea/src/org/jetbrains/jet/plugin/configuration/ConfigureKotlinNotificationManager.kt @@ -17,23 +17,28 @@ package org.jetbrains.jet.plugin.configuration import com.intellij.openapi.project.Project -import org.jetbrains.jet.plugin.configuration.ui.ConfigureKotlinNotification +import org.jetbrains.jet.plugin.configuration.ui.notifications.ConfigureKotlinNotification import com.intellij.notification.NotificationsManager +import com.intellij.notification.Notification -object ConfigureKotlinNotificationManager { +object ConfigureKotlinNotificationManager: KotlinSingleNotificationManager { fun notify(project: Project) { + notify(project, ConfigureKotlinNotification(project, ConfigureKotlinNotification.getNotificationString(project))) + } +} + +trait KotlinSingleNotificationManager { + fun notify(project: Project, notification: T) { val notificationsManager = NotificationsManager.getNotificationsManager() if (notificationsManager == null) { return } - val notificationString = ConfigureKotlinNotification.getNotificationString(project) - var isNotificationExists = false - val notifications = notificationsManager.getNotificationsOfType(javaClass(), project) + val notifications = notificationsManager.getNotificationsOfType(notification.javaClass, project) as Array for (oldNotification in notifications) { - if (oldNotification.getNotificationText() == notificationString) { + if (oldNotification == notification) { isNotificationExists = true } else { @@ -41,7 +46,7 @@ object ConfigureKotlinNotificationManager { } } if (!isNotificationExists) { - ConfigureKotlinNotification(project, notificationString).showNotification() + notification.notify(project) } } } diff --git a/idea/src/org/jetbrains/jet/plugin/configuration/ui/notifications/ConfigureKotlinNotification.java b/idea/src/org/jetbrains/jet/plugin/configuration/ui/notifications/ConfigureKotlinNotification.java index f4fcf9d46e9..0e94895c710 100644 --- a/idea/src/org/jetbrains/jet/plugin/configuration/ui/notifications/ConfigureKotlinNotification.java +++ b/idea/src/org/jetbrains/jet/plugin/configuration/ui/notifications/ConfigureKotlinNotification.java @@ -34,7 +34,6 @@ public class ConfigureKotlinNotification extends Notification { private static final String GROUP_ID = "Configure Kotlin: balloon"; private static final String TITLE = "Configure Kotlin"; - @NotNull private final Project project; @NotNull private final String notificationText; public ConfigureKotlinNotification( @@ -55,19 +54,9 @@ public class ConfigureKotlinNotification extends Notification { } }); - this.project = project; this.notificationText = notificationText; } - public void showNotification() { - super.notify(project); - } - - @NotNull - public String getNotificationText() { - return notificationText; - } - @NotNull public static String getNotificationString(Project project) { StringBuilder builder = new StringBuilder("Configure "); @@ -102,4 +91,21 @@ public class ConfigureKotlinNotification extends Notification { isOnlyOneModule ? ") module" : ") modules", ""); } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof ConfigureKotlinNotification)) return false; + + ConfigureKotlinNotification that = (ConfigureKotlinNotification) o; + + if (!notificationText.equals(that.notificationText)) return false; + + return true; + } + + @Override + public int hashCode() { + return notificationText.hashCode(); + } }