@@ -13,8 +13,6 @@ import com.intellij.openapi.project.Project
1313import com.intellij.openapi.wm.ToolWindow
1414import com.intellij.openapi.wm.ToolWindowFactory
1515import com.intellij.openapi.wm.ex.ToolWindowEx
16- import com.intellij.ui.EditorNotificationPanel
17- import com.intellij.ui.components.panels.Wrapper
1816import com.intellij.util.messages.Topic
1917import com.intellij.util.ui.components.BorderLayoutPanel
2018import software.aws.toolkits.core.utils.debug
@@ -34,25 +32,26 @@ import software.aws.toolkits.jetbrains.core.credentials.sono.IDENTITY_CENTER_ROL
3432import software.aws.toolkits.jetbrains.core.credentials.sso.bearer.BearerTokenAuthState
3533import software.aws.toolkits.jetbrains.core.credentials.sso.bearer.BearerTokenProviderListener
3634import software.aws.toolkits.jetbrains.core.experiments.ExperimentsActionGroup
35+ import software.aws.toolkits.jetbrains.core.explorer.webview.NotificationPanel
36+ import software.aws.toolkits.jetbrains.core.explorer.webview.OuterToolkitPanel
3737import software.aws.toolkits.jetbrains.core.explorer.webview.ToolkitWebviewPanel
3838import software.aws.toolkits.jetbrains.core.explorer.webview.shouldPromptToolkitReauth
3939import software.aws.toolkits.jetbrains.core.help.HelpIds
4040import software.aws.toolkits.jetbrains.core.notifications.NotificationActionList
41- import software.aws.toolkits.jetbrains.core.notifications.NotificationManager
4241import software.aws.toolkits.jetbrains.core.notifications.ShowCriticalNotificationBannerListener
4342import software.aws.toolkits.jetbrains.core.webview.BrowserState
4443import software.aws.toolkits.jetbrains.utils.actions.OpenBrowserAction
4544import software.aws.toolkits.jetbrains.utils.isTookitConnected
46- import software.aws.toolkits.resources.AwsCoreBundle
4745import software.aws.toolkits.resources.message
4846import software.aws.toolkits.telemetry.FeatureId
4947import java.util.EventListener
5048import javax.swing.JComponent
5149
5250class AwsToolkitExplorerFactory : ToolWindowFactory , DumbAware {
53- private val notificationPanel = NotificationPanel ()
54- private val toolkitPanel = ToolkitPanel ()
51+
5552 override fun createToolWindowContent (project : Project , toolWindow : ToolWindow ) {
53+ val notificationPanel = NotificationPanel .getInstance(project)
54+ val toolkitPanel = OuterToolkitPanel .getInstance(project)
5655 val mainPanel = BorderLayoutPanel ()
5756 mainPanel.addToTop(notificationPanel)
5857 mainPanel.add(toolkitPanel)
@@ -133,7 +132,7 @@ class AwsToolkitExplorerFactory : ToolWindowFactory, DumbAware {
133132 if (ToolkitConnectionManager .getInstance(project)
134133 .connectionStateForFeature(CodeCatalystConnection .getInstance()) == BearerTokenAuthState .AUTHORIZED
135134 ) {
136- loadContent(AwsToolkitExplorerToolWindow .getInstance(project))
135+ loadContent(project, AwsToolkitExplorerToolWindow .getInstance(project))
137136 }
138137 }
139138 }
@@ -143,11 +142,11 @@ class AwsToolkitExplorerFactory : ToolWindowFactory, DumbAware {
143142 ShowToolkitListener .TOPIC ,
144143 object : ShowToolkitListener {
145144 override fun showWebview (project : Project ) {
146- loadContent(ToolkitWebviewPanel .getInstance(project).component)
145+ loadContent(project, ToolkitWebviewPanel .getInstance(project).component)
147146 }
148147
149148 override fun showExplorerTree (project : Project ) {
150- loadContent(AwsToolkitExplorerToolWindow .getInstance(project))
149+ loadContent(project, AwsToolkitExplorerToolWindow .getInstance(project))
151150 }
152151 }
153152 )
@@ -187,12 +186,12 @@ class AwsToolkitExplorerFactory : ToolWindowFactory, DumbAware {
187186 }
188187
189188 if (isNewConnToolkitConnection) {
190- loadContent(AwsToolkitExplorerToolWindow .getInstance(project))
189+ loadContent(project, AwsToolkitExplorerToolWindow .getInstance(project))
191190 } else if (! isTookitConnected(project) || shouldPromptToolkitReauth(project)) {
192191 ToolkitWebviewPanel .getInstance(project).browser?.prepareBrowser(BrowserState (FeatureId .AwsExplorer ))
193- loadContent(ToolkitWebviewPanel .getInstance(project).component)
192+ loadContent(project, ToolkitWebviewPanel .getInstance(project).component)
194193 } else {
195- loadContent(AwsToolkitExplorerToolWindow .getInstance(project))
194+ loadContent(project, AwsToolkitExplorerToolWindow .getInstance(project))
196195 }
197196 }
198197
@@ -207,14 +206,17 @@ class AwsToolkitExplorerFactory : ToolWindowFactory, DumbAware {
207206
208207 if (! isToolkitConnected || shouldPromptToolkitReauth(project)) {
209208 ToolkitWebviewPanel .getInstance(project).browser?.prepareBrowser(BrowserState (FeatureId .AwsExplorer ))
210- loadContent(ToolkitWebviewPanel .getInstance(project).component)
209+ loadContent(project, ToolkitWebviewPanel .getInstance(project).component)
211210 } else {
212- loadContent(AwsToolkitExplorerToolWindow .getInstance(project))
211+ loadContent(project, AwsToolkitExplorerToolWindow .getInstance(project))
213212 }
214213 }
215214
216- private fun loadContent (component : JComponent ) {
217- toolkitPanel.updateToolkitPanel(component)
215+ private fun loadContent (project : Project , component : JComponent ) {
216+ runInEdt {
217+ val toolkitPanel = OuterToolkitPanel .getInstance(project)
218+ toolkitPanel.updateToolkitPanel(component)
219+ }
218220 }
219221
220222 companion object {
@@ -223,47 +225,6 @@ class AwsToolkitExplorerFactory : ToolWindowFactory, DumbAware {
223225 }
224226}
225227
226- class NotificationPanel : BorderLayoutPanel () {
227- private val wrapper = Wrapper ()
228- init {
229- isOpaque = false
230- addToCenter(wrapper)
231- }
232-
233- private fun removeNotificationPanel () = runInEdt {
234- wrapper.removeAll()
235- }
236-
237- fun updateNotificationPanel (title : String , message : String , notificationActionList : List <NotificationActionList >) {
238- val panel = EditorNotificationPanel ()
239- panel.text = title
240- panel.icon(AllIcons .General .Error )
241- val panelWithActions = NotificationManager .buildBannerPanel(panel, notificationActionList)
242-
243- panelWithActions.createActionLabel(AwsCoreBundle .message(" general.dismiss" )) {
244- removeNotificationPanel()
245- }
246-
247- wrapper.setContent(panelWithActions)
248- }
249- }
250-
251- class ToolkitPanel : BorderLayoutPanel () {
252- private val wrapper = Wrapper ()
253- init {
254- isOpaque = false
255- addToCenter(wrapper)
256- }
257-
258- fun updateToolkitPanel (content : JComponent ) {
259- try {
260- wrapper.setContent(content)
261- } catch (e: Exception ) {
262- getLogger<ToolkitPanel >().error(" Error while creating window" )
263- }
264- }
265- }
266-
267228interface ShowToolkitListener : EventListener {
268229 fun showExplorerTree (project : Project )
269230 fun showWebview (project : Project )
0 commit comments