-
Notifications
You must be signed in to change notification settings - Fork 274
Show notification banner #5097
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Show notification banner #5097
Changes from 24 commits
c3cc2bf
09729c7
885f3f0
f0aca38
e909a0e
5a84e39
56c1888
a981227
682897f
adb6ec7
dbfcefc
823ea7f
218c8ed
b684a01
368fd25
57fb2ef
a5126d1
22f9438
87ec1d9
24a2f65
78f8c6b
bfc1077
1a83a40
9e8b0af
1b12854
e7d8594
bbf6779
a8fa482
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,42 @@ | ||
| // Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. | ||
| // SPDX-License-Identifier: Apache-2.0 | ||
|
|
||
| package software.aws.toolkits.jetbrains.services.amazonq.toolwindow | ||
|
|
||
| import com.intellij.icons.AllIcons | ||
| import com.intellij.openapi.application.runInEdt | ||
| import com.intellij.ui.EditorNotificationPanel | ||
| import com.intellij.ui.components.panels.Wrapper | ||
| import com.intellij.util.ui.components.BorderLayoutPanel | ||
| import software.aws.toolkits.jetbrains.core.notifications.BannerContent | ||
| import software.aws.toolkits.jetbrains.core.notifications.NotificationManager | ||
| import software.aws.toolkits.jetbrains.core.notifications.ProcessNotificationsBase | ||
| import software.aws.toolkits.resources.AwsCoreBundle | ||
|
|
||
| class NotificationPanel : BorderLayoutPanel() { | ||
| private val wrapper = Wrapper() | ||
| init { | ||
| isOpaque = false | ||
| addToCenter(wrapper) | ||
| ProcessNotificationsBase.showBannerNotification.forEach { | ||
| updateNotificationPanel(it.value) | ||
| } | ||
| } | ||
|
Check warning on line 24 in plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/toolwindow/NotificationPanel.kt
|
||
|
|
||
| private fun removeNotificationPanel(notificationId: String) = runInEdt { | ||
| ProcessNotificationsBase.showBannerNotification.remove(notificationId) // TODO: add id to dismissed notification list | ||
| wrapper.removeAll() | ||
| } | ||
|
Check warning on line 29 in plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/toolwindow/NotificationPanel.kt
|
||
|
|
||
| fun updateNotificationPanel(bannerContent: BannerContent) { | ||
| val panel = EditorNotificationPanel() | ||
| panel.text = bannerContent.title | ||
| panel.icon(AllIcons.General.Error) | ||
| val panelWithActions = NotificationManager.buildBannerPanel(panel, bannerContent.actions) | ||
| panelWithActions.createActionLabel(AwsCoreBundle.message("general.dismiss")) { | ||
| removeNotificationPanel(bannerContent.id) | ||
| } | ||
|
Check warning on line 38 in plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/toolwindow/NotificationPanel.kt
|
||
|
|
||
| wrapper.setContent(panelWithActions) | ||
| } | ||
|
Check warning on line 41 in plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/toolwindow/NotificationPanel.kt
|
||
| } | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,39 @@ | ||
| // Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. | ||
| // SPDX-License-Identifier: Apache-2.0 | ||
|
|
||
| package software.aws.toolkits.jetbrains.services.amazonq.toolwindow | ||
|
|
||
| import com.intellij.openapi.project.Project | ||
| import com.intellij.ui.components.panels.Wrapper | ||
| import com.intellij.util.ui.components.BorderLayoutPanel | ||
| import software.aws.toolkits.core.utils.error | ||
| import software.aws.toolkits.core.utils.getLogger | ||
| import software.aws.toolkits.jetbrains.core.webview.BrowserState | ||
| import software.aws.toolkits.jetbrains.services.amazonq.QWebviewPanel | ||
| import software.aws.toolkits.jetbrains.utils.isQConnected | ||
| import software.aws.toolkits.jetbrains.utils.isQExpired | ||
| import software.aws.toolkits.telemetry.FeatureId | ||
| import javax.swing.JComponent | ||
|
|
||
| class OuterAmazonQPanel(val project: Project) : BorderLayoutPanel() { | ||
Check warningCode scanning / QDJVMC Unused symbol Warning
Class "OuterAmazonQPanel" is never used
|
||
| private val wrapper = Wrapper() | ||
| init { | ||
| isOpaque = false | ||
| addToCenter(wrapper) | ||
|
Check warning on line 22 in plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/toolwindow/OuterAmazonQPanel.kt
|
||
| val component = if (isQConnected(project) && !isQExpired(project)) { | ||
| AmazonQToolWindow.getInstance(project).component | ||
|
Check warning on line 24 in plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/toolwindow/OuterAmazonQPanel.kt
|
||
| } else { | ||
| QWebviewPanel.getInstance(project).browser?.prepareBrowser(BrowserState(FeatureId.AmazonQ)) | ||
| QWebviewPanel.getInstance(project).component | ||
|
Check warning on line 27 in plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/toolwindow/OuterAmazonQPanel.kt
|
||
| } | ||
| updateQPanel(component) | ||
| } | ||
|
Check warning on line 30 in plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/toolwindow/OuterAmazonQPanel.kt
|
||
|
|
||
| fun updateQPanel(content: JComponent) { | ||
Check noticeCode scanning / QDJVMC Class member can have 'private' visibility Note
Function 'updateQPanel' could be private
|
||
| try { | ||
| wrapper.setContent(content) | ||
| } catch (e: Exception) { | ||
| getLogger<OuterAmazonQPanel>().error { "Error while creating window" } | ||
|
Check warning on line 36 in plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/toolwindow/OuterAmazonQPanel.kt
|
||
| } | ||
| } | ||
|
Check warning on line 38 in plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/toolwindow/OuterAmazonQPanel.kt
|
||
| } | ||
Uh oh!
There was an error while loading. Please reload this page.