Skip to content

Commit 824566e

Browse files
andrewyuqleigaol
andauthored
Revert new auto-trigger UX (#5127)
* Revert "Fix perceivedLatency to set it for only 1 trigger per display session (#5118)" This reverts commit 364305e. * Revert "feat(amazonq): Introduce auto trigger changes officially (#5080)" This reverts commit b01283e. --------- Co-authored-by: Lei Gao <[email protected]>
1 parent f685aa0 commit 824566e

File tree

66 files changed

+4594
-1208
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

66 files changed

+4594
-1208
lines changed

plugins/amazonq/codewhisperer/jetbrains-community/resources/META-INF/plugin-codewhisperer.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,12 @@
55
<applicationListeners>
66
<listener class="software.aws.toolkits.jetbrains.services.codewhisperer.popup.CodeWhispererUIChangeListener"
77
topic="software.aws.toolkits.jetbrains.services.codewhisperer.popup.CodeWhispererPopupStateChangeListener"/>
8+
<listener class="software.aws.toolkits.jetbrains.services.codewhisperer.popup.CodeWhispererUIChangeListenerNew"
9+
topic="software.aws.toolkits.jetbrains.services.codewhisperer.popup.CodeWhispererPopupStateChangeListener"/>
810
<listener class="software.aws.toolkits.jetbrains.services.codewhisperer.toolwindow.CodeWhispererCodeReferenceActionListener"
911
topic="software.aws.toolkits.jetbrains.services.codewhisperer.popup.CodeWhispererUserActionListener"/>
12+
<listener class="software.aws.toolkits.jetbrains.services.codewhisperer.toolwindow.CodeWhispererCodeReferenceActionListenerNew"
13+
topic="software.aws.toolkits.jetbrains.services.codewhisperer.popup.CodeWhispererUserActionListener"/>
1014
</applicationListeners>
1115

1216
<projectListeners>

plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/actions/CodeWhispererAcceptAction.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,21 +10,21 @@ import com.intellij.openapi.actionSystem.CommonDataKeys
1010
import com.intellij.openapi.application.ApplicationManager
1111
import com.intellij.openapi.project.DumbAware
1212
import software.aws.toolkits.jetbrains.services.codewhisperer.popup.CodeWhispererPopupManager
13-
import software.aws.toolkits.jetbrains.services.codewhisperer.service.CodeWhispererInvocationStatus
14-
import software.aws.toolkits.jetbrains.services.codewhisperer.service.CodeWhispererService
13+
import software.aws.toolkits.jetbrains.services.codewhisperer.service.CodeWhispererInvocationStatusNew
14+
import software.aws.toolkits.jetbrains.services.codewhisperer.service.CodeWhispererServiceNew
1515
import software.aws.toolkits.resources.message
1616

1717
open class CodeWhispererAcceptAction(title: String = message("codewhisperer.inline.accept")) : AnAction(title), DumbAware {
1818
override fun getActionUpdateThread(): ActionUpdateThread = ActionUpdateThread.EDT
1919

2020
override fun update(e: AnActionEvent) {
2121
e.presentation.isEnabled = e.project != null && e.getData(CommonDataKeys.EDITOR) != null &&
22-
CodeWhispererInvocationStatus.getInstance().isDisplaySessionActive()
22+
CodeWhispererInvocationStatusNew.getInstance().isDisplaySessionActive()
2323
}
2424

2525
override fun actionPerformed(e: AnActionEvent) {
26-
val sessionContext = e.project?.getUserData(CodeWhispererService.KEY_SESSION_CONTEXT) ?: return
27-
if (!CodeWhispererInvocationStatus.getInstance().isDisplaySessionActive()) return
26+
val sessionContext = e.project?.getUserData(CodeWhispererServiceNew.KEY_SESSION_CONTEXT) ?: return
27+
if (!CodeWhispererInvocationStatusNew.getInstance().isDisplaySessionActive()) return
2828
ApplicationManager.getApplication().messageBus.syncPublisher(
2929
CodeWhispererPopupManager.CODEWHISPERER_USER_ACTION_PERFORMED
3030
).beforeAccept(sessionContext)

plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/actions/CodeWhispererActionPromoter.kt

Lines changed: 52 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -7,45 +7,77 @@ import com.intellij.codeInsight.lookup.impl.actions.ChooseItemAction
77
import com.intellij.openapi.actionSystem.ActionPromoter
88
import com.intellij.openapi.actionSystem.AnAction
99
import com.intellij.openapi.actionSystem.DataContext
10-
import software.aws.toolkits.jetbrains.services.codewhisperer.service.CodeWhispererInvocationStatus
10+
import com.intellij.openapi.editor.actionSystem.EditorAction
11+
import software.aws.toolkits.jetbrains.services.amazonq.CodeWhispererFeatureConfigService
12+
import software.aws.toolkits.jetbrains.services.codewhisperer.popup.handlers.CodeWhispererPopupLeftArrowHandler
13+
import software.aws.toolkits.jetbrains.services.codewhisperer.popup.handlers.CodeWhispererPopupRightArrowHandler
14+
import software.aws.toolkits.jetbrains.services.codewhisperer.popup.handlers.CodeWhispererPopupTabHandler
15+
import software.aws.toolkits.jetbrains.services.codewhisperer.service.CodeWhispererInvocationStatusNew
1116

1217
class CodeWhispererActionPromoter : ActionPromoter {
1318
override fun promote(actions: MutableList<out AnAction>, context: DataContext): MutableList<AnAction> {
14-
val results = actions.toMutableList()
15-
if (!CodeWhispererInvocationStatus.getInstance().isDisplaySessionActive()) return results
19+
if (CodeWhispererFeatureConfigService.getInstance().getNewAutoTriggerUX()) {
20+
val results = actions.toMutableList()
21+
if (!CodeWhispererInvocationStatusNew.getInstance().isDisplaySessionActive()) return results
1622

17-
results.sortWith { a, b ->
18-
if (isCodeWhispererForceAction(a)) {
19-
return@sortWith -1
20-
} else if (isCodeWhispererForceAction(b)) {
21-
return@sortWith 1
22-
}
23+
results.sortWith { a, b ->
24+
if (isCodeWhispererForceAction(a)) {
25+
return@sortWith -1
26+
} else if (isCodeWhispererForceAction(b)) {
27+
return@sortWith 1
28+
}
2329

24-
if (a is ChooseItemAction) {
25-
return@sortWith -1
26-
} else if (b is ChooseItemAction) {
27-
return@sortWith 1
28-
}
30+
if (a is ChooseItemAction) {
31+
return@sortWith -1
32+
} else if (b is ChooseItemAction) {
33+
return@sortWith 1
34+
}
35+
36+
if (isCodeWhispererAcceptAction(a)) {
37+
return@sortWith -1
38+
} else if (isCodeWhispererAcceptAction(b)) {
39+
return@sortWith 1
40+
}
2941

30-
if (isCodeWhispererAcceptAction(a)) {
42+
0
43+
}
44+
return results
45+
}
46+
val results = actions.toMutableList()
47+
results.sortWith { a, b ->
48+
if (isCodeWhispererPopupAction(a)) {
3149
return@sortWith -1
32-
} else if (isCodeWhispererAcceptAction(b)) {
50+
} else if (isCodeWhispererPopupAction(b)) {
3351
return@sortWith 1
52+
} else {
53+
0
3454
}
35-
36-
0
3755
}
3856
return results
3957
}
4058

4159
private fun isCodeWhispererAcceptAction(action: AnAction): Boolean =
42-
action is CodeWhispererAcceptAction
60+
if (CodeWhispererFeatureConfigService.getInstance().getNewAutoTriggerUX()) {
61+
action is CodeWhispererAcceptAction
62+
} else {
63+
action is EditorAction && action.handler is CodeWhispererPopupTabHandler
64+
}
4365

4466
private fun isCodeWhispererForceAcceptAction(action: AnAction): Boolean =
4567
action is CodeWhispererForceAcceptAction
4668

4769
private fun isCodeWhispererNavigateAction(action: AnAction): Boolean =
48-
action is CodeWhispererNavigateNextAction || action is CodeWhispererNavigatePrevAction
70+
if (CodeWhispererFeatureConfigService.getInstance().getNewAutoTriggerUX()) {
71+
action is CodeWhispererNavigateNextAction || action is CodeWhispererNavigatePrevAction
72+
} else {
73+
action is EditorAction && (
74+
action.handler is CodeWhispererPopupRightArrowHandler ||
75+
action.handler is CodeWhispererPopupLeftArrowHandler
76+
)
77+
}
78+
79+
private fun isCodeWhispererPopupAction(action: AnAction): Boolean =
80+
isCodeWhispererAcceptAction(action) || isCodeWhispererNavigateAction(action)
4981

5082
private fun isCodeWhispererForceAction(action: AnAction): Boolean =
5183
isCodeWhispererForceAcceptAction(action) || isCodeWhispererNavigateAction(action)

plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/actions/CodeWhispererNavigateNextAction.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ import com.intellij.openapi.actionSystem.CommonDataKeys
1010
import com.intellij.openapi.application.ApplicationManager
1111
import com.intellij.openapi.project.DumbAware
1212
import software.aws.toolkits.jetbrains.services.codewhisperer.popup.CodeWhispererPopupManager
13-
import software.aws.toolkits.jetbrains.services.codewhisperer.service.CodeWhispererInvocationStatus
14-
import software.aws.toolkits.jetbrains.services.codewhisperer.service.CodeWhispererService
13+
import software.aws.toolkits.jetbrains.services.codewhisperer.service.CodeWhispererInvocationStatusNew
14+
import software.aws.toolkits.jetbrains.services.codewhisperer.service.CodeWhispererServiceNew
1515
import software.aws.toolkits.resources.message
1616

1717
class CodeWhispererNavigateNextAction : AnAction(message("codewhisperer.inline.navigate.next")), DumbAware {
@@ -20,12 +20,12 @@ class CodeWhispererNavigateNextAction : AnAction(message("codewhisperer.inline.n
2020
override fun update(e: AnActionEvent) {
2121
e.presentation.isEnabled = e.project != null &&
2222
e.getData(CommonDataKeys.EDITOR) != null &&
23-
CodeWhispererInvocationStatus.getInstance().isDisplaySessionActive()
23+
CodeWhispererInvocationStatusNew.getInstance().isDisplaySessionActive()
2424
}
2525

2626
override fun actionPerformed(e: AnActionEvent) {
27-
val sessionContext = e.project?.getUserData(CodeWhispererService.KEY_SESSION_CONTEXT) ?: return
28-
if (!CodeWhispererInvocationStatus.getInstance().isDisplaySessionActive()) return
27+
val sessionContext = e.project?.getUserData(CodeWhispererServiceNew.KEY_SESSION_CONTEXT) ?: return
28+
if (!CodeWhispererInvocationStatusNew.getInstance().isDisplaySessionActive()) return
2929
ApplicationManager.getApplication().messageBus.syncPublisher(
3030
CodeWhispererPopupManager.CODEWHISPERER_USER_ACTION_PERFORMED
3131
).navigateNext(sessionContext)

plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/actions/CodeWhispererNavigatePrevAction.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ import com.intellij.openapi.actionSystem.CommonDataKeys
1010
import com.intellij.openapi.application.ApplicationManager
1111
import com.intellij.openapi.project.DumbAware
1212
import software.aws.toolkits.jetbrains.services.codewhisperer.popup.CodeWhispererPopupManager
13-
import software.aws.toolkits.jetbrains.services.codewhisperer.service.CodeWhispererInvocationStatus
14-
import software.aws.toolkits.jetbrains.services.codewhisperer.service.CodeWhispererService
13+
import software.aws.toolkits.jetbrains.services.codewhisperer.service.CodeWhispererInvocationStatusNew
14+
import software.aws.toolkits.jetbrains.services.codewhisperer.service.CodeWhispererServiceNew
1515
import software.aws.toolkits.resources.message
1616

1717
class CodeWhispererNavigatePrevAction : AnAction(message("codewhisperer.inline.navigate.previous")), DumbAware {
@@ -20,12 +20,12 @@ class CodeWhispererNavigatePrevAction : AnAction(message("codewhisperer.inline.n
2020
override fun update(e: AnActionEvent) {
2121
e.presentation.isEnabled = e.project != null &&
2222
e.getData(CommonDataKeys.EDITOR) != null &&
23-
CodeWhispererInvocationStatus.getInstance().isDisplaySessionActive()
23+
CodeWhispererInvocationStatusNew.getInstance().isDisplaySessionActive()
2424
}
2525

2626
override fun actionPerformed(e: AnActionEvent) {
27-
val sessionContext = e.project?.getUserData(CodeWhispererService.KEY_SESSION_CONTEXT) ?: return
28-
if (!CodeWhispererInvocationStatus.getInstance().isDisplaySessionActive()) return
27+
val sessionContext = e.project?.getUserData(CodeWhispererServiceNew.KEY_SESSION_CONTEXT) ?: return
28+
if (!CodeWhispererInvocationStatusNew.getInstance().isDisplaySessionActive()) return
2929
ApplicationManager.getApplication().messageBus.syncPublisher(
3030
CodeWhispererPopupManager.CODEWHISPERER_USER_ACTION_PERFORMED
3131
).navigatePrevious(sessionContext)

plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/actions/CodeWhispererRecommendationAction.kt

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,12 @@ import com.intellij.openapi.actionSystem.CommonDataKeys
1010
import com.intellij.openapi.project.DumbAware
1111
import com.intellij.openapi.util.Key
1212
import kotlinx.coroutines.Job
13+
import software.aws.toolkits.jetbrains.services.amazonq.CodeWhispererFeatureConfigService
1314
import software.aws.toolkits.jetbrains.services.codewhisperer.model.LatencyContext
1415
import software.aws.toolkits.jetbrains.services.codewhisperer.model.TriggerTypeInfo
1516
import software.aws.toolkits.jetbrains.services.codewhisperer.service.CodeWhispererAutomatedTriggerType
1617
import software.aws.toolkits.jetbrains.services.codewhisperer.service.CodeWhispererService
18+
import software.aws.toolkits.jetbrains.services.codewhisperer.service.CodeWhispererServiceNew
1719
import software.aws.toolkits.resources.message
1820
import software.aws.toolkits.telemetry.CodewhispererTriggerType
1921
import java.util.concurrent.atomic.AtomicReference
@@ -30,12 +32,23 @@ class CodeWhispererRecommendationAction : AnAction(message("codewhisperer.trigge
3032
latencyContext.codewhispererPreprocessingStart = System.nanoTime()
3133
latencyContext.codewhispererEndToEndStart = System.nanoTime()
3234
val editor = e.getRequiredData(CommonDataKeys.EDITOR)
33-
if (!CodeWhispererService.getInstance().canDoInvocation(editor, CodewhispererTriggerType.OnDemand)) {
35+
if (!(
36+
if (CodeWhispererFeatureConfigService.getInstance().getNewAutoTriggerUX()) {
37+
CodeWhispererServiceNew.getInstance().canDoInvocation(editor, CodewhispererTriggerType.OnDemand)
38+
} else {
39+
CodeWhispererService.getInstance().canDoInvocation(editor, CodewhispererTriggerType.OnDemand)
40+
}
41+
)
42+
) {
3443
return
3544
}
3645

3746
val triggerType = TriggerTypeInfo(CodewhispererTriggerType.OnDemand, CodeWhispererAutomatedTriggerType.Unknown())
38-
val job = CodeWhispererService.getInstance().showRecommendationsInPopup(editor, triggerType, latencyContext)
47+
val job = if (CodeWhispererFeatureConfigService.getInstance().getNewAutoTriggerUX()) {
48+
CodeWhispererServiceNew.getInstance().showRecommendationsInPopup(editor, triggerType, latencyContext)
49+
} else {
50+
CodeWhispererService.getInstance().showRecommendationsInPopup(editor, triggerType, latencyContext)
51+
}
3952

4053
e.getData(CommonDataKeys.EDITOR)?.getUserData(ACTION_JOB_KEY)?.set(job)
4154
}

0 commit comments

Comments
 (0)