Skip to content

Commit 1a83a40

Browse files
committed
feedback
1 parent bfc1077 commit 1a83a40

File tree

6 files changed

+45
-55
lines changed

6 files changed

+45
-55
lines changed

plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/toolwindow/AmazonQToolWindowFactory.kt

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@ class AmazonQToolWindowFactory : ToolWindowFactory, DumbAware {
3838

3939
override fun createToolWindowContent(project: Project, toolWindow: ToolWindow) {
4040
val mainPanel = BorderLayoutPanel()
41-
val qPanel = OuterAmazonQPanel.getInstance(project)
42-
val notificationPanel = NotificationPanel.getInstance(project)
41+
val qPanel = OuterAmazonQPanel(project)
42+
val notificationPanel = NotificationPanel()
4343

4444
mainPanel.addToTop(notificationPanel)
4545
mainPanel.add(qPanel)
@@ -60,7 +60,7 @@ class AmazonQToolWindowFactory : ToolWindowFactory, DumbAware {
6060
ToolkitConnectionManagerListener.TOPIC,
6161
object : ToolkitConnectionManagerListener {
6262
override fun activeConnectionChanged(newConnection: ToolkitConnection?) {
63-
onConnectionChanged(project, newConnection)
63+
onConnectionChanged(project, newConnection, qPanel)
6464
}
6565
}
6666
)
@@ -70,7 +70,7 @@ class AmazonQToolWindowFactory : ToolWindowFactory, DumbAware {
7070
object : RefreshQChatPanelButtonPressedListener {
7171
override fun onRefresh() {
7272
runInEdt {
73-
prepareChatContent(project)
73+
prepareChatContent(project, qPanel)
7474
}
7575
}
7676
}
@@ -91,7 +91,7 @@ class AmazonQToolWindowFactory : ToolWindowFactory, DumbAware {
9191
}
9292
)
9393

94-
prepareChatContent(project)
94+
prepareChatContent(project, qPanel)
9595

9696
val content = contentManager.factory.createContent(mainPanel, null, false).also {
9797
it.isCloseable = true
@@ -103,6 +103,7 @@ class AmazonQToolWindowFactory : ToolWindowFactory, DumbAware {
103103

104104
private fun prepareChatContent(
105105
project: Project,
106+
qPanel: OuterAmazonQPanel,
106107
) {
107108
val component = if (isQConnected(project) && !isQExpired(project)) {
108109
AmazonQToolWindow.getInstance(project).component
@@ -112,7 +113,6 @@ class AmazonQToolWindowFactory : ToolWindowFactory, DumbAware {
112113
}
113114

114115
runInEdt {
115-
val qPanel = OuterAmazonQPanel.getInstance(project)
116116
qPanel.updateQPanel(component)
117117
}
118118
}
@@ -135,7 +135,7 @@ class AmazonQToolWindowFactory : ToolWindowFactory, DumbAware {
135135

136136
override fun shouldBeAvailable(project: Project): Boolean = isQWebviewsAvailable()
137137

138-
private fun onConnectionChanged(project: Project, newConnection: ToolkitConnection?) {
138+
private fun onConnectionChanged(project: Project, newConnection: ToolkitConnection?, qPanel: OuterAmazonQPanel) {
139139
val isNewConnectionForQ = newConnection?.let {
140140
(it as? AwsBearerTokenConnection)?.let { conn ->
141141
val scopeShouldHave = Q_SCOPES
@@ -161,7 +161,6 @@ class AmazonQToolWindowFactory : ToolWindowFactory, DumbAware {
161161
QWebviewPanel.getInstance(project).component
162162
}
163163
runInEdt {
164-
val qPanel = OuterAmazonQPanel.getInstance(project)
165164
qPanel.updateQPanel(component)
166165
}
167166
}

plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/toolwindow/NotificationPanel.kt

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,6 @@ package software.aws.toolkits.jetbrains.services.amazonq.toolwindow
55

66
import com.intellij.icons.AllIcons
77
import com.intellij.openapi.application.runInEdt
8-
import com.intellij.openapi.components.Service
9-
import com.intellij.openapi.components.service
10-
import com.intellij.openapi.project.Project
118
import com.intellij.ui.EditorNotificationPanel
129
import com.intellij.ui.components.panels.Wrapper
1310
import com.intellij.util.ui.components.BorderLayoutPanel
@@ -16,7 +13,6 @@ import software.aws.toolkits.jetbrains.core.notifications.NotificationManager
1613
import software.aws.toolkits.jetbrains.core.notifications.ProcessNotificationsBase
1714
import software.aws.toolkits.resources.AwsCoreBundle
1815

19-
@Service(Service.Level.PROJECT)
2016
class NotificationPanel : BorderLayoutPanel() {
2117
private val wrapper = Wrapper()
2218
init {
@@ -43,8 +39,4 @@ class NotificationPanel : BorderLayoutPanel() {
4339

4440
wrapper.setContent(panelWithActions)
4541
}
46-
47-
companion object {
48-
fun getInstance(project: Project): NotificationPanel = project.service()
49-
}
5042
}

plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/toolwindow/OuterAmazonQPanel.kt

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,30 @@
33

44
package software.aws.toolkits.jetbrains.services.amazonq.toolwindow
55

6-
import com.intellij.openapi.components.Service
7-
import com.intellij.openapi.components.service
86
import com.intellij.openapi.project.Project
97
import com.intellij.ui.components.panels.Wrapper
108
import com.intellij.util.ui.components.BorderLayoutPanel
119
import software.aws.toolkits.core.utils.error
1210
import software.aws.toolkits.core.utils.getLogger
11+
import software.aws.toolkits.jetbrains.core.webview.BrowserState
12+
import software.aws.toolkits.jetbrains.services.amazonq.QWebviewPanel
13+
import software.aws.toolkits.jetbrains.utils.isQConnected
14+
import software.aws.toolkits.jetbrains.utils.isQExpired
15+
import software.aws.toolkits.telemetry.FeatureId
1316
import javax.swing.JComponent
1417

15-
@Service(Service.Level.PROJECT)
16-
class OuterAmazonQPanel : BorderLayoutPanel() {
18+
class OuterAmazonQPanel(val project: Project) : BorderLayoutPanel() {
1719
private val wrapper = Wrapper()
1820
init {
1921
isOpaque = false
2022
addToCenter(wrapper)
23+
val component = if (isQConnected(project) && !isQExpired(project)) {
24+
AmazonQToolWindow.getInstance(project).component
25+
} else {
26+
QWebviewPanel.getInstance(project).browser?.prepareBrowser(BrowserState(FeatureId.AmazonQ))
27+
QWebviewPanel.getInstance(project).component
28+
}
29+
updateQPanel(component)
2130
}
2231

2332
fun updateQPanel(content: JComponent) {
@@ -27,8 +36,4 @@ class OuterAmazonQPanel : BorderLayoutPanel() {
2736
getLogger<OuterAmazonQPanel>().error { "Error while creating window" }
2837
}
2938
}
30-
31-
companion object {
32-
fun getInstance(project: Project): OuterAmazonQPanel = project.service()
33-
}
3439
}

plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/core/explorer/AwsToolkitExplorerFactory.kt

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,8 @@ import javax.swing.JComponent
4949
class AwsToolkitExplorerFactory : ToolWindowFactory, DumbAware {
5050

5151
override fun createToolWindowContent(project: Project, toolWindow: ToolWindow) {
52-
val notificationPanel = NotificationPanel.getInstance(project)
53-
val toolkitPanel = OuterToolkitPanel.getInstance(project)
52+
val notificationPanel = NotificationPanel()
53+
val toolkitPanel = OuterToolkitPanel(project)
5454
val mainPanel = BorderLayoutPanel()
5555
mainPanel.addToTop(notificationPanel)
5656
mainPanel.add(toolkitPanel)
@@ -116,7 +116,7 @@ class AwsToolkitExplorerFactory : ToolWindowFactory, DumbAware {
116116
ToolkitConnectionManagerListener.TOPIC,
117117
object : ToolkitConnectionManagerListener {
118118
override fun activeConnectionChanged(newConnection: ToolkitConnection?) {
119-
connectionChanged(project, newConnection)
119+
connectionChanged(project, newConnection, toolkitPanel)
120120
}
121121
}
122122
)
@@ -125,7 +125,7 @@ class AwsToolkitExplorerFactory : ToolWindowFactory, DumbAware {
125125
AwsConnectionManager.CONNECTION_SETTINGS_STATE_CHANGED,
126126
object : ConnectionSettingsStateChangeNotifier {
127127
override fun settingsStateChanged(newState: ConnectionState) {
128-
settingsStateChanged(project, newState)
128+
settingsStateChanged(project, newState, toolkitPanel)
129129
}
130130
}
131131
)
@@ -137,7 +137,7 @@ class AwsToolkitExplorerFactory : ToolWindowFactory, DumbAware {
137137
if (ToolkitConnectionManager.getInstance(project)
138138
.connectionStateForFeature(CodeCatalystConnection.getInstance()) == BearerTokenAuthState.AUTHORIZED
139139
) {
140-
loadContent(project, AwsToolkitExplorerToolWindow.getInstance(project))
140+
loadContent(AwsToolkitExplorerToolWindow.getInstance(project), toolkitPanel)
141141
}
142142
}
143143
}
@@ -147,11 +147,11 @@ class AwsToolkitExplorerFactory : ToolWindowFactory, DumbAware {
147147
ShowToolkitListener.TOPIC,
148148
object : ShowToolkitListener {
149149
override fun showWebview(project: Project) {
150-
loadContent(project, ToolkitWebviewPanel.getInstance(project).component)
150+
loadContent(ToolkitWebviewPanel.getInstance(project).component, toolkitPanel)
151151
}
152152

153153
override fun showExplorerTree(project: Project) {
154-
loadContent(project, AwsToolkitExplorerToolWindow.getInstance(project))
154+
loadContent(AwsToolkitExplorerToolWindow.getInstance(project), toolkitPanel)
155155
}
156156
}
157157
)
@@ -161,7 +161,7 @@ class AwsToolkitExplorerFactory : ToolWindowFactory, DumbAware {
161161
toolWindow.stripeTitle = message("aws.notification.title")
162162
}
163163

164-
private fun connectionChanged(project: Project, newConnection: ToolkitConnection?) {
164+
private fun connectionChanged(project: Project, newConnection: ToolkitConnection?, toolkitPanel: OuterToolkitPanel) {
165165
val isNewConnToolkitConnection = when (newConnection) {
166166
is AwsConnectionManagerConnection -> {
167167
LOG.debug { "IAM connection" }
@@ -182,16 +182,16 @@ class AwsToolkitExplorerFactory : ToolWindowFactory, DumbAware {
182182
}
183183

184184
if (isNewConnToolkitConnection) {
185-
loadContent(project, AwsToolkitExplorerToolWindow.getInstance(project))
185+
loadContent(AwsToolkitExplorerToolWindow.getInstance(project), toolkitPanel)
186186
} else if (!isTookitConnected(project) || shouldPromptToolkitReauth(project)) {
187187
ToolkitWebviewPanel.getInstance(project).browser?.prepareBrowser(BrowserState(FeatureId.AwsExplorer))
188-
loadContent(project, ToolkitWebviewPanel.getInstance(project).component)
188+
loadContent(ToolkitWebviewPanel.getInstance(project).component, toolkitPanel)
189189
} else {
190-
loadContent(project, AwsToolkitExplorerToolWindow.getInstance(project))
190+
loadContent(AwsToolkitExplorerToolWindow.getInstance(project), toolkitPanel)
191191
}
192192
}
193193

194-
private fun settingsStateChanged(project: Project, newState: ConnectionState) {
194+
private fun settingsStateChanged(project: Project, newState: ConnectionState, toolkitPanel: OuterToolkitPanel) {
195195
val isToolkitConnected = if (newState is ConnectionState.ValidConnection) {
196196
true
197197
} else {
@@ -202,15 +202,14 @@ class AwsToolkitExplorerFactory : ToolWindowFactory, DumbAware {
202202

203203
if (!isToolkitConnected || shouldPromptToolkitReauth(project)) {
204204
ToolkitWebviewPanel.getInstance(project).browser?.prepareBrowser(BrowserState(FeatureId.AwsExplorer))
205-
loadContent(project, ToolkitWebviewPanel.getInstance(project).component)
205+
loadContent(ToolkitWebviewPanel.getInstance(project).component, toolkitPanel)
206206
} else {
207-
loadContent(project, AwsToolkitExplorerToolWindow.getInstance(project))
207+
loadContent(AwsToolkitExplorerToolWindow.getInstance(project), toolkitPanel)
208208
}
209209
}
210210

211-
private fun loadContent(project: Project, component: JComponent) {
211+
private fun loadContent(component: JComponent, toolkitPanel: OuterToolkitPanel) {
212212
runInEdt {
213-
val toolkitPanel = OuterToolkitPanel.getInstance(project)
214213
toolkitPanel.updateToolkitPanel(component)
215214
}
216215
}

plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/core/explorer/webview/NotificationPanel.kt

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@ package software.aws.toolkits.jetbrains.core.explorer.webview
55

66
import com.intellij.icons.AllIcons
77
import com.intellij.openapi.application.runInEdt
8-
import com.intellij.openapi.components.Service
9-
import com.intellij.openapi.components.service
108
import com.intellij.ui.EditorNotificationPanel
119
import com.intellij.ui.components.panels.Wrapper
1210
import com.intellij.util.ui.components.BorderLayoutPanel
@@ -15,7 +13,6 @@ import software.aws.toolkits.jetbrains.core.notifications.NotificationManager
1513
import software.aws.toolkits.jetbrains.core.notifications.ProcessNotificationsBase
1614
import software.aws.toolkits.resources.AwsCoreBundle
1715

18-
@Service(Service.Level.PROJECT)
1916
class NotificationPanel : BorderLayoutPanel() {
2017
private val wrapper = Wrapper()
2118
init {
@@ -44,8 +41,4 @@ class NotificationPanel : BorderLayoutPanel() {
4441

4542
wrapper.setContent(panelWithActions)
4643
}
47-
48-
companion object {
49-
fun getInstance(project: com.intellij.openapi.project.Project): NotificationPanel = project.service()
50-
}
5144
}

plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/core/explorer/webview/OuterToolkitPanel.kt

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,27 @@
33

44
package software.aws.toolkits.jetbrains.core.explorer.webview
55

6-
import com.intellij.openapi.components.Service
7-
import com.intellij.openapi.components.service
86
import com.intellij.openapi.project.Project
97
import com.intellij.ui.components.panels.Wrapper
108
import com.intellij.util.ui.components.BorderLayoutPanel
119
import software.aws.toolkits.core.utils.error
1210
import software.aws.toolkits.core.utils.getLogger
11+
import software.aws.toolkits.jetbrains.core.explorer.AwsToolkitExplorerToolWindow
12+
import software.aws.toolkits.jetbrains.utils.isTookitConnected
1313
import javax.swing.JComponent
1414

15-
@Service(Service.Level.PROJECT)
16-
class OuterToolkitPanel : BorderLayoutPanel() {
15+
class OuterToolkitPanel(val project: Project) : BorderLayoutPanel() {
1716
private val wrapper = Wrapper()
1817
init {
1918
isOpaque = false
2019
addToCenter(wrapper)
20+
val component = if (!isTookitConnected(project) || shouldPromptToolkitReauth(project)) {
21+
ToolkitWebviewPanel.getInstance(project).component
22+
} else {
23+
AwsToolkitExplorerToolWindow.getInstance(project)
24+
}
25+
26+
updateToolkitPanel(component)
2127
}
2228

2329
fun updateToolkitPanel(content: JComponent) {
@@ -27,8 +33,4 @@ class OuterToolkitPanel : BorderLayoutPanel() {
2733
getLogger<OuterToolkitPanel>().error { "Error while creating window" }
2834
}
2935
}
30-
31-
companion object {
32-
fun getInstance(project: Project): OuterToolkitPanel = project.service()
33-
}
3436
}

0 commit comments

Comments
 (0)