Skip to content

Commit 3039c41

Browse files
authored
CodeWhisperer: follow-up fixes for Getting Started UX (#3893)
1. Remove usage of Tuple, changed to Pair 2. Other refactor to the code
1 parent 7aa13bc commit 3039c41

File tree

8 files changed

+42
-50
lines changed

8 files changed

+42
-50
lines changed

jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/learn/LearnCodeWhispererEditor.kt

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ import com.intellij.ui.dsl.builder.Row
2424
import com.intellij.ui.dsl.builder.TopGap
2525
import com.intellij.ui.dsl.builder.panel
2626
import com.intellij.ui.dsl.gridLayout.Gaps
27-
import groovy.lang.Tuple
2827
import icons.AwsIcons
2928
import software.aws.toolkits.jetbrains.services.codewhisperer.language.CodeWhispererProgrammingLanguage
3029
import software.aws.toolkits.jetbrains.services.codewhisperer.language.languages.CodeWhispererCsharp
@@ -44,7 +43,6 @@ import software.aws.toolkits.resources.message
4443
import java.awt.Font
4544
import java.beans.PropertyChangeListener
4645
import javax.swing.BorderFactory
47-
import javax.swing.Icon
4846
import javax.swing.ImageIcon
4947
import javax.swing.JButton
5048
import javax.swing.JComponent
@@ -178,15 +176,15 @@ class LearnCodeWhispererEditor(val project: Project, val virtualFile: VirtualFil
178176

179177
private fun Row.learnCodeWhispererLanguageButton(buttonLanguage: CodeWhispererProgrammingLanguage): Cell<JButton> {
180178
val buttonContext = when (buttonLanguage) {
181-
CodeWhispererJava.INSTANCE -> Tuple("Java ", AwsIcons.Misc.JAVA)
182-
CodeWhispererPython.INSTANCE -> Tuple("Python ", AwsIcons.Misc.PYTHON)
183-
CodeWhispererJavaScript.INSTANCE -> Tuple("JavaScript ", AwsIcons.Misc.JAVASCRIPT)
184-
CodeWhispererTypeScript.INSTANCE -> Tuple("TypeScript ", AwsIcons.Misc.TYPESCRIPT)
185-
CodeWhispererCsharp.INSTANCE -> Tuple("C# ", AwsIcons.Misc.CSHARP)
186-
else -> Tuple("Java ", AwsIcons.Misc.JAVA)
179+
CodeWhispererJava.INSTANCE -> "Java " to AwsIcons.Misc.JAVA
180+
CodeWhispererPython.INSTANCE -> "Python " to AwsIcons.Misc.PYTHON
181+
CodeWhispererJavaScript.INSTANCE -> "JavaScript " to AwsIcons.Misc.JAVASCRIPT
182+
CodeWhispererTypeScript.INSTANCE -> "TypeScript " to AwsIcons.Misc.TYPESCRIPT
183+
CodeWhispererCsharp.INSTANCE -> "C# " to AwsIcons.Misc.CSHARP
184+
else -> "Java " to AwsIcons.Misc.JAVA
187185
}
188-
val text = buttonContext[0] as String
189-
val buttonIcon = buttonContext[1] as Icon
186+
val text = buttonContext.first
187+
val buttonIcon = buttonContext.second
190188

191189
return button(text) {
192190
LearnCodeWhispererManager.getInstance(project).language = buttonLanguage

jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/learn/LearnCodeWhispererUIComponents.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -288,8 +288,8 @@ object LearnCodeWhispererUIComponents {
288288
addActionListener {
289289
val currentLanguage = LearnCodeWhispererManager.getInstance(project).language
290290
val fileContext = tryExampleFileContexts[taskType]?.get(currentLanguage) ?: return@addActionListener
291-
val fileContent = fileContext[0] as String
292-
val caretOffset = fileContext[1] as Int
291+
val fileContent = fileContext.first
292+
val caretOffset = fileContext.second
293293
CodeWhispererTelemetryService.getInstance().sendOnboardingClickEvent(currentLanguage, taskType)
294294
val fileExtension = LearnCodeWhispererManager.getInstance(project).getFileExtension()
295295
val fullFilename = "${tryExampleRowContext.filename}$fileExtension"
@@ -298,6 +298,7 @@ object LearnCodeWhispererUIComponents {
298298
(editor.foldingModel as FoldingModelImpl).isFoldingEnabled = false
299299
(editor.foldingModel as FoldingModelImpl).rebuild()
300300
(editor as EditorImpl).resetSizes()
301+
editor.caretModel.updateVisualPosition()
301302
if (fileExists) return@addActionListener
302303
editor.caretModel.moveToOffset(caretOffset)
303304
}

jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/learn/LearnCodeWhispererVirtualFile.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ class LearnCodeWhispererVirtualFile : LightVirtualFile("Learn CodeWhisperer") {
1616
override fun isWritable(): Boolean = false
1717

1818
// This along with hashCode() is to make sure only one editor for this is opened at a time
19-
override fun equals(other: Any?) = this.hashCode() == other.hashCode()
19+
override fun equals(other: Any?) = other is LearnCodeWhispererVirtualFile && this.hashCode() == other.hashCode()
2020

2121
override fun hashCode(): Int = presentableName.hashCode()
2222
}

jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/telemetry/CodeWhispererTelemetryService.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -474,7 +474,7 @@ class CodeWhispererTelemetryService {
474474

475475
fun sendOnboardingClickEvent(language: CodeWhispererProgrammingLanguage, taskType: CodewhispererGettingStartedTask) {
476476
// Project instance is not needed. We look at these metrics for each clientId.
477-
CodewhispererTelemetry.onboardingClick(null as Project?, language.toTelemetryType(), taskType)
477+
CodewhispererTelemetry.onboardingClick(project = null, language.toTelemetryType(), taskType)
478478
}
479479

480480
fun recordSuggestionState(

jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/CodeWhispererConstants.kt

Lines changed: 25 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ package software.aws.toolkits.jetbrains.services.codewhisperer.util
66
import com.intellij.openapi.editor.markup.EffectType
77
import com.intellij.openapi.editor.markup.TextAttributes
88
import com.intellij.ui.JBColor
9-
import groovy.lang.Tuple
109
import software.amazon.awssdk.regions.Region
1110
import software.aws.toolkits.jetbrains.services.codewhisperer.language.languages.CodeWhispererCsharp
1211
import software.aws.toolkits.jetbrains.services.codewhisperer.language.languages.CodeWhispererJava
@@ -285,39 +284,39 @@ public class SumFunction
285284

286285
val tryExampleFileContexts = mapOf(
287286
CodewhispererGettingStartedTask.AutoTrigger to mapOf(
288-
CodeWhispererJava.INSTANCE to Tuple(AUTO_TRIGGER_CONTENT_JAVA, AUTO_TRIGGER_CONTENT_JAVA.length - 8),
289-
CodeWhispererPython.INSTANCE to Tuple(AUTO_TRIGGER_CONTENT_PYTHON, AUTO_TRIGGER_CONTENT_PYTHON.length),
290-
CodeWhispererJavaScript.INSTANCE to Tuple(AUTO_TRIGGER_CONTENT_TS_JS, AUTO_TRIGGER_CONTENT_TS_JS.length),
291-
CodeWhispererTypeScript.INSTANCE to Tuple(AUTO_TRIGGER_CONTENT_TS_JS, AUTO_TRIGGER_CONTENT_TS_JS.length),
292-
CodeWhispererCsharp.INSTANCE to Tuple(AUTO_TRIGGER_CONTENT_CSHARP, AUTO_TRIGGER_CONTENT_CSHARP.length - 8)
287+
CodeWhispererJava.INSTANCE to (AUTO_TRIGGER_CONTENT_JAVA to AUTO_TRIGGER_CONTENT_JAVA.length - 8),
288+
CodeWhispererPython.INSTANCE to (AUTO_TRIGGER_CONTENT_PYTHON to AUTO_TRIGGER_CONTENT_PYTHON.length),
289+
CodeWhispererJavaScript.INSTANCE to (AUTO_TRIGGER_CONTENT_TS_JS to AUTO_TRIGGER_CONTENT_TS_JS.length),
290+
CodeWhispererTypeScript.INSTANCE to (AUTO_TRIGGER_CONTENT_TS_JS to AUTO_TRIGGER_CONTENT_TS_JS.length),
291+
CodeWhispererCsharp.INSTANCE to (AUTO_TRIGGER_CONTENT_CSHARP to AUTO_TRIGGER_CONTENT_CSHARP.length - 8)
293292
),
294293
CodewhispererGettingStartedTask.ManualTrigger to mapOf(
295-
CodeWhispererJava.INSTANCE to Tuple(MANUAL_TRIGGER_CONTENT_JAVA, MANUAL_TRIGGER_CONTENT_JAVA.length - 8),
296-
CodeWhispererPython.INSTANCE to Tuple(MANUAL_TRIGGER_CONTENT_PYTHON, MANUAL_TRIGGER_CONTENT_PYTHON.length),
297-
CodeWhispererJavaScript.INSTANCE to Tuple(MANUAL_TRIGGER_CONTENT_TS_JS, MANUAL_TRIGGER_CONTENT_TS_JS.length),
298-
CodeWhispererTypeScript.INSTANCE to Tuple(MANUAL_TRIGGER_CONTENT_TS_JS, MANUAL_TRIGGER_CONTENT_TS_JS.length),
299-
CodeWhispererCsharp.INSTANCE to Tuple(MANUAL_TRIGGER_CONTENT_CSHARP, MANUAL_TRIGGER_CONTENT_CSHARP.length - 8)
294+
CodeWhispererJava.INSTANCE to (MANUAL_TRIGGER_CONTENT_JAVA to MANUAL_TRIGGER_CONTENT_JAVA.length - 8),
295+
CodeWhispererPython.INSTANCE to (MANUAL_TRIGGER_CONTENT_PYTHON to MANUAL_TRIGGER_CONTENT_PYTHON.length),
296+
CodeWhispererJavaScript.INSTANCE to (MANUAL_TRIGGER_CONTENT_TS_JS to MANUAL_TRIGGER_CONTENT_TS_JS.length),
297+
CodeWhispererTypeScript.INSTANCE to (MANUAL_TRIGGER_CONTENT_TS_JS to MANUAL_TRIGGER_CONTENT_TS_JS.length),
298+
CodeWhispererCsharp.INSTANCE to (MANUAL_TRIGGER_CONTENT_CSHARP to MANUAL_TRIGGER_CONTENT_CSHARP.length - 8)
300299
),
301300
CodewhispererGettingStartedTask.CommentAsPrompt to mapOf(
302-
CodeWhispererJava.INSTANCE to Tuple(COMMENT_AS_PROMPT_CONTENT_NON_PYTHON, COMMENT_AS_PROMPT_CONTENT_NON_PYTHON.length),
303-
CodeWhispererPython.INSTANCE to Tuple(COMMENT_AS_PROMPT_CONTENT_PYTHON, COMMENT_AS_PROMPT_CONTENT_PYTHON.length),
304-
CodeWhispererJavaScript.INSTANCE to Tuple(COMMENT_AS_PROMPT_CONTENT_NON_PYTHON, COMMENT_AS_PROMPT_CONTENT_NON_PYTHON.length),
305-
CodeWhispererTypeScript.INSTANCE to Tuple(COMMENT_AS_PROMPT_CONTENT_NON_PYTHON, COMMENT_AS_PROMPT_CONTENT_NON_PYTHON.length),
306-
CodeWhispererCsharp.INSTANCE to Tuple(COMMENT_AS_PROMPT_CONTENT_NON_PYTHON, COMMENT_AS_PROMPT_CONTENT_NON_PYTHON.length)
301+
CodeWhispererJava.INSTANCE to (COMMENT_AS_PROMPT_CONTENT_NON_PYTHON to COMMENT_AS_PROMPT_CONTENT_NON_PYTHON.length),
302+
CodeWhispererPython.INSTANCE to (COMMENT_AS_PROMPT_CONTENT_PYTHON to COMMENT_AS_PROMPT_CONTENT_PYTHON.length),
303+
CodeWhispererJavaScript.INSTANCE to (COMMENT_AS_PROMPT_CONTENT_NON_PYTHON to COMMENT_AS_PROMPT_CONTENT_NON_PYTHON.length),
304+
CodeWhispererTypeScript.INSTANCE to (COMMENT_AS_PROMPT_CONTENT_NON_PYTHON to COMMENT_AS_PROMPT_CONTENT_NON_PYTHON.length),
305+
CodeWhispererCsharp.INSTANCE to (COMMENT_AS_PROMPT_CONTENT_NON_PYTHON to COMMENT_AS_PROMPT_CONTENT_NON_PYTHON.length)
307306
),
308307
CodewhispererGettingStartedTask.Navigation to mapOf(
309-
CodeWhispererJava.INSTANCE to Tuple(NAVIGATION_CONTENT_NON_PYTHON, NAVIGATION_CONTENT_NON_PYTHON.length),
310-
CodeWhispererPython.INSTANCE to Tuple(NAVIGATION_CONTENT_PYTHON, NAVIGATION_CONTENT_PYTHON.length),
311-
CodeWhispererJavaScript.INSTANCE to Tuple(NAVIGATION_CONTENT_NON_PYTHON, NAVIGATION_CONTENT_NON_PYTHON.length),
312-
CodeWhispererTypeScript.INSTANCE to Tuple(NAVIGATION_CONTENT_NON_PYTHON, NAVIGATION_CONTENT_NON_PYTHON.length),
313-
CodeWhispererCsharp.INSTANCE to Tuple(NAVIGATION_CONTENT_NON_PYTHON, NAVIGATION_CONTENT_NON_PYTHON.length)
308+
CodeWhispererJava.INSTANCE to (NAVIGATION_CONTENT_NON_PYTHON to NAVIGATION_CONTENT_NON_PYTHON.length),
309+
CodeWhispererPython.INSTANCE to (NAVIGATION_CONTENT_PYTHON to NAVIGATION_CONTENT_PYTHON.length),
310+
CodeWhispererJavaScript.INSTANCE to (NAVIGATION_CONTENT_NON_PYTHON to NAVIGATION_CONTENT_NON_PYTHON.length),
311+
CodeWhispererTypeScript.INSTANCE to (NAVIGATION_CONTENT_NON_PYTHON to NAVIGATION_CONTENT_NON_PYTHON.length),
312+
CodeWhispererCsharp.INSTANCE to (NAVIGATION_CONTENT_NON_PYTHON to NAVIGATION_CONTENT_NON_PYTHON.length)
314313
),
315314
CodewhispererGettingStartedTask.UnitTest to mapOf(
316-
CodeWhispererJava.INSTANCE to Tuple(UNIT_TEST_CONTENT_JAVA, UNIT_TEST_CONTENT_JAVA.length - 2),
317-
CodeWhispererPython.INSTANCE to Tuple(UNIT_TEST_CONTENT_PYTHON, UNIT_TEST_CONTENT_PYTHON.length),
318-
CodeWhispererJavaScript.INSTANCE to Tuple(UNIT_TEST_CONTENT_TS_JS, UNIT_TEST_CONTENT_TS_JS.length),
319-
CodeWhispererTypeScript.INSTANCE to Tuple(UNIT_TEST_CONTENT_TS_JS, UNIT_TEST_CONTENT_TS_JS.length),
320-
CodeWhispererCsharp.INSTANCE to Tuple(UNIT_TEST_CONTENT_CSHARP, UNIT_TEST_CONTENT_CSHARP.length - 8)
315+
CodeWhispererJava.INSTANCE to (UNIT_TEST_CONTENT_JAVA to UNIT_TEST_CONTENT_JAVA.length - 2),
316+
CodeWhispererPython.INSTANCE to (UNIT_TEST_CONTENT_PYTHON to UNIT_TEST_CONTENT_PYTHON.length),
317+
CodeWhispererJavaScript.INSTANCE to (UNIT_TEST_CONTENT_TS_JS to UNIT_TEST_CONTENT_TS_JS.length),
318+
CodeWhispererTypeScript.INSTANCE to (UNIT_TEST_CONTENT_TS_JS to UNIT_TEST_CONTENT_TS_JS.length),
319+
CodeWhispererCsharp.INSTANCE to (UNIT_TEST_CONTENT_CSHARP to UNIT_TEST_CONTENT_CSHARP.length - 8)
321320
)
322321
)
323322
}

jetbrains-core/src/software/aws/toolkits/jetbrains/ui/feedback/FeedbackDialog.kt

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -189,12 +189,7 @@ class FeedbackDialog(
189189

190190
init {
191191
super.init()
192-
193-
title = if (!isCodeWhisperer) {
194-
message("feedback.title")
195-
} else {
196-
message("feedback.title.codewhisperer")
197-
}
192+
title = message("feedback.title", productName)
198193
setOKButtonText(message("feedback.submit_button"))
199194
}
200195

@@ -221,7 +216,7 @@ class FeedbackDialog(
221216
}
222217
}
223218

224-
class ShowFeedbackDialogAction : DumbAwareAction(message("feedback.title"), message("feedback.description"), AwsIcons.Misc.SMILE_GREY) {
219+
class ShowFeedbackDialogAction : DumbAwareAction(message("feedback.title", "Toolkit"), message("feedback.description"), AwsIcons.Misc.SMILE_GREY) {
225220
override fun actionPerformed(e: AnActionEvent) {
226221
runInEdt {
227222
FeedbackDialog(e.getRequiredData(LangDataKeys.PROJECT)).show()

jetbrains-core/src/software/aws/toolkits/jetbrains/ui/feedback/SubmitFeedbackInGateway.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import com.intellij.openapi.project.DefaultProjectFactory
99
import com.intellij.openapi.project.DumbAwareAction
1010
import software.aws.toolkits.resources.message
1111

12-
class SubmitFeedbackInGateway : DumbAwareAction(message("feedback.title")) {
12+
class SubmitFeedbackInGateway : DumbAwareAction(message("feedback.title", "Toolkit")) {
1313
override fun actionPerformed(e: AnActionEvent) {
1414
runInEdt {
1515
FeedbackDialog(DefaultProjectFactory.getInstance().defaultProject).show()

resources/resources/software/aws/toolkits/resources/MessagesBundle.properties

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -844,8 +844,7 @@ feedback.submit_failed=An exception occurred while sharing your feedback: {0}
844844
feedback.submit_failed_title=Failed to share feedback
845845
feedback.submit_success=Thanks for the feedback!
846846
feedback.submitting=Sharing...
847-
feedback.title=Share Feedback for AWS Toolkit...
848-
feedback.title.codewhisperer=Share Feedback for AWS CodeWhisperer...
847+
feedback.title=Share Feedback for AWS {0}...
849848
feedback.validation.comment_too_long=Comment is too long.
850849
feedback.validation.empty_comment=Please provide a comment.
851850
feedback.validation.no_sentiment=Please select how you're feeling.

0 commit comments

Comments
 (0)