Skip to content

Commit 626038d

Browse files
authored
feat(amazonq): surface profile selection step requried in statusbar (#5615)
1 parent dfdc784 commit 626038d

File tree

7 files changed

+17
-5
lines changed

7 files changed

+17
-5
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/codescan/CodeWhispererCodeScanIssueDetailsPanel.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@ import software.aws.toolkits.jetbrains.services.codewhisperer.codescan.utils.ope
3737
import software.aws.toolkits.jetbrains.services.codewhisperer.codescan.utils.sendCodeFixGeneratedTelemetryToServiceAPI
3838
import software.aws.toolkits.jetbrains.services.codewhisperer.codescan.utils.truncateIssueTitle
3939
import software.aws.toolkits.jetbrains.services.codewhisperer.telemetry.CodeWhispererTelemetryService
40-
import software.aws.toolkits.jetbrains.services.codewhisperer.util.CodeWhispererColorUtil.getHexString
4140
import software.aws.toolkits.jetbrains.services.codewhisperer.util.CodeWhispererConstants
41+
import software.aws.toolkits.jetbrains.services.codewhisperer.util.getHexString
4242
import software.aws.toolkits.jetbrains.settings.CodeWhispererSettings
4343
import software.aws.toolkits.resources.message
4444
import software.aws.toolkits.telemetry.Component

plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/listeners/CodeWhispererCodeScanEditorMouseMotionListener.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ import software.aws.toolkits.jetbrains.services.codewhisperer.codescan.utils.sen
4141
import software.aws.toolkits.jetbrains.services.codewhisperer.codescan.utils.truncateIssueTitle
4242
import software.aws.toolkits.jetbrains.services.codewhisperer.language.programmingLanguage
4343
import software.aws.toolkits.jetbrains.services.codewhisperer.telemetry.CodeWhispererTelemetryService
44-
import software.aws.toolkits.jetbrains.services.codewhisperer.util.CodeWhispererColorUtil.getHexString
4544
import software.aws.toolkits.jetbrains.services.codewhisperer.util.CodeWhispererConstants
45+
import software.aws.toolkits.jetbrains.services.codewhisperer.util.getHexString
4646
import software.aws.toolkits.resources.message
4747
import software.aws.toolkits.telemetry.CodeFixAction
4848
import software.aws.toolkits.telemetry.MetricResult

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/resources/software/aws/toolkits/resources/AmazonQBundle.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ amazonq.workspace.settings.open.prompt=Workspace index is now enabled. You can d
1212
action.q.profile.usage.text=You changed your profile
1313
action.q.profile.usage=You''re using the ''<b>{0}</b>'' profile for Amazon Q.
1414
action.q.switchProfiles.text=Change Profile
15+
action.q.switchProfiles.text.action_required=<html><body>Change Profile <font color="{0}}">Select a profile to proceed</font></body></html>
1516
action.q.switchProfiles.dialog.text=Amazon Q Developer Profile
1617
action.q.switchProfiles.dialog.account.label=Account: {0}
1718
action.q.switchProfiles.dialog.panel.text=Change your Q Developer profile

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

Lines changed: 6 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,10 @@ 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 = message("action.q.switchProfiles.text.action_required", JBColor.GRAY.getHexString())
26+
}
2127
}
2228

2329
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)