Skip to content

Commit f30d035

Browse files
committed
feat(amazonq): surface profile selection step requried in statusbar
1 parent dfdc784 commit f30d035

File tree

4 files changed

+16
-3
lines changed

4 files changed

+16
-3
lines changed
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"type" : "feature",
3+
"description" : "Amazon Q: Show visual indicator in status bar if profile selection is needed to continue with Q Inline / Q Chat"
4+
}

plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/status/CodeWhispererStatusBarWidget.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import software.aws.toolkits.jetbrains.core.credentials.profiles.ProfileWatcher
2323
import software.aws.toolkits.jetbrains.core.credentials.sso.bearer.BearerTokenProviderListener
2424
import software.aws.toolkits.jetbrains.services.amazonq.CodeWhispererFeatureConfigService
2525
import software.aws.toolkits.jetbrains.services.amazonq.gettingstarted.QActionGroups.Q_SIGNED_OUT_ACTION_GROUP
26+
import software.aws.toolkits.jetbrains.services.amazonq.profile.QRegionProfileManager
2627
import software.aws.toolkits.jetbrains.services.codewhisperer.customization.CodeWhispererCustomizationListener
2728
import software.aws.toolkits.jetbrains.services.codewhisperer.customization.CodeWhispererModelConfigurator
2829
import software.aws.toolkits.jetbrains.services.codewhisperer.explorer.QStatusBarLoggedInActionGroup
@@ -121,7 +122,7 @@ class CodeWhispererStatusBarWidget(project: Project) :
121122
}
122123

123124
override fun getIcon(): Icon =
124-
if (isQExpired(project)) {
125+
if (isQExpired(project) || QRegionProfileManager.getInstance().isPendingProfileSelection(project)) {
125126
AllIcons.General.BalloonWarning
126127
} else if (!isQConnected(project)) {
127128
AllIcons.RunConfigurations.TestState.Run

plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/actions/QSwitchProfilesAction.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,10 @@ import com.intellij.openapi.actionSystem.ActionUpdateThread
88
import com.intellij.openapi.actionSystem.AnAction
99
import com.intellij.openapi.actionSystem.AnActionEvent
1010
import com.intellij.openapi.project.DumbAware
11+
import com.intellij.ui.JBColor
1112
import software.aws.toolkits.jetbrains.services.amazonq.profile.QRegionProfileDialog
1213
import software.aws.toolkits.jetbrains.services.amazonq.profile.QRegionProfileManager
14+
import software.aws.toolkits.jetbrains.services.codewhisperer.util.getHexString
1315
import software.aws.toolkits.resources.AmazonQBundle.message
1416

1517
class QSwitchProfilesAction : AnAction(message("action.q.switchProfiles.text")), DumbAware {
@@ -18,6 +20,12 @@ class QSwitchProfilesAction : AnAction(message("action.q.switchProfiles.text")),
1820

1921
override fun update(e: AnActionEvent) {
2022
e.presentation.icon = AllIcons.Actions.SwapPanels
23+
val project = e.project ?: return
24+
if (QRegionProfileManager.getInstance().isPendingProfileSelection(project)) {
25+
e.presentation.text = """
26+
<html><body>Change profile <font color="${JBColor.GRAY.getHexString()}">(Select a profile to proceed)</font></body></html>
27+
""".trimIndent()
28+
}
2129
}
2230

2331
override fun actionPerformed(e: AnActionEvent) {
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,6 @@ object CodeWhispererColorUtil {
2121
val EDITOR_CODE_REFERENCE_HOVER = JBColor(0x4B4D4D, 0x4B4D4D)
2222
val INACTIVE_TEXT_COLOR = UIUtil.getInactiveTextColor().getHexString()
2323
val TRY_EXAMPLE_EVEN_ROW_COLOR = JBColor(0xCACACA, 0x252525)
24-
25-
fun Color.getHexString() = String.format("#%02x%02x%02x", this.red, this.green, this.blue)
2624
}
25+
26+
fun Color.getHexString() = String.format(null, "#%02x%02x%02x", this.red, this.green, this.blue)

0 commit comments

Comments
 (0)