From c4d856126ef1506cfdf44172eb386646a26e492e Mon Sep 17 00:00:00 2001 From: peter Date: Tue, 10 Jul 2012 11:54:02 +0200 Subject: [PATCH] IDEA-88507 Throwable at ToolWindowManagerImpl.notifyByBalloon() from notification --- .../src/com/intellij/openapi/wm/ToolWindowManager.java | 2 ++ .../notification/impl/NotificationsManagerImpl.java | 3 +-- .../openapi/wm/impl/ToolWindowHeadlessManagerImpl.java | 4 ++++ .../openapi/wm/impl/ToolWindowManagerImpl.java | 10 ++++++++++ platform/testFramework/src/com/intellij/mock/Mock.java | 6 ++++++ 5 files changed, 23 insertions(+), 2 deletions(-) diff --git a/platform/platform-api/src/com/intellij/openapi/wm/ToolWindowManager.java b/platform/platform-api/src/com/intellij/openapi/wm/ToolWindowManager.java index 9b103708544b..e7245b93aabb 100644 --- a/platform/platform-api/src/com/intellij/openapi/wm/ToolWindowManager.java +++ b/platform/platform-api/src/com/intellij/openapi/wm/ToolWindowManager.java @@ -27,6 +27,8 @@ import javax.swing.event.HyperlinkListener; public abstract class ToolWindowManager { + public abstract boolean canShowNotification(@NotNull String toolWindowId); + public static ToolWindowManager getInstance(Project project){ return project.getComponent(ToolWindowManager.class); } diff --git a/platform/platform-impl/src/com/intellij/notification/impl/NotificationsManagerImpl.java b/platform/platform-impl/src/com/intellij/notification/impl/NotificationsManagerImpl.java index 579f7570f0a8..ed00f9ecec2e 100644 --- a/platform/platform-impl/src/com/intellij/notification/impl/NotificationsManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/notification/impl/NotificationsManagerImpl.java @@ -46,7 +46,6 @@ import javax.swing.event.HyperlinkEvent; import javax.swing.event.HyperlinkListener; import java.awt.*; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; /** @@ -142,7 +141,7 @@ public class NotificationsManagerImpl extends NotificationsManager implements No NotificationDisplayType type = settings.getDisplayType(); String toolWindowId = NotificationsConfigurationImpl.getNotificationsConfigurationImpl().getToolWindowId(groupId); if (type == NotificationDisplayType.TOOL_WINDOW && - (toolWindowId == null || project == null || !Arrays.asList(ToolWindowManager.getInstance(project).getToolWindowIds()).contains(toolWindowId))) { + (toolWindowId == null || project == null || !ToolWindowManager.getInstance(project).canShowNotification(toolWindowId))) { type = NotificationDisplayType.BALLOON; } diff --git a/platform/platform-impl/src/com/intellij/openapi/wm/impl/ToolWindowHeadlessManagerImpl.java b/platform/platform-impl/src/com/intellij/openapi/wm/impl/ToolWindowHeadlessManagerImpl.java index 61dac0c65b3a..1952e00ff686 100644 --- a/platform/platform-impl/src/com/intellij/openapi/wm/impl/ToolWindowHeadlessManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/wm/impl/ToolWindowHeadlessManagerImpl.java @@ -56,6 +56,10 @@ import java.util.List; @SuppressWarnings({"ConstantConditions"}) public class ToolWindowHeadlessManagerImpl extends ToolWindowManagerEx { + @Override + public boolean canShowNotification(@NotNull String toolWindowId) { + return false; + } @Override public void notifyByBalloon(@NotNull final String toolWindowId, @NotNull final MessageType type, @NotNull final String htmlBody) { diff --git a/platform/platform-impl/src/com/intellij/openapi/wm/impl/ToolWindowManagerImpl.java b/platform/platform-impl/src/com/intellij/openapi/wm/impl/ToolWindowManagerImpl.java index b4387715657e..a8e4dd109a5f 100644 --- a/platform/platform-impl/src/com/intellij/openapi/wm/impl/ToolWindowManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/wm/impl/ToolWindowManagerImpl.java @@ -1288,6 +1288,16 @@ public final class ToolWindowManagerImpl extends ToolWindowManagerEx implements return IdeFocusManager.getInstance(myProject); } + @Override + public boolean canShowNotification(@NotNull final String toolWindowId) { + if (!Arrays.asList(getToolWindowIds()).contains(toolWindowId)) { + return false; + } + final Stripe stripe = myToolWindowsPane.getStripeFor(toolWindowId); + return stripe.getButtonFor(toolWindowId) != null; + + } + @Override public void notifyByBalloon(@NotNull final String toolWindowId, @NotNull final MessageType type, @NotNull final String htmlBody) { notifyByBalloon(toolWindowId, type, htmlBody, null, null); diff --git a/platform/testFramework/src/com/intellij/mock/Mock.java b/platform/testFramework/src/com/intellij/mock/Mock.java index 74c68d273eb0..df2b960465ca 100644 --- a/platform/testFramework/src/com/intellij/mock/Mock.java +++ b/platform/testFramework/src/com/intellij/mock/Mock.java @@ -531,6 +531,12 @@ public class Mock { } public static class MyToolWindowManager extends ToolWindowManager { + + @Override + public boolean canShowNotification(@NotNull String toolWindowId) { + return false; + } + @Override public ToolWindow registerToolWindow(@NotNull String id, @NotNull JComponent component, @NotNull ToolWindowAnchor anchor) { return null;