Skip to content

Commit

Permalink
fix: fix action group position issues
Browse files Browse the repository at this point in the history
  • Loading branch information
phodal committed Jul 19, 2023
1 parent e9d05d0 commit c505638
Show file tree
Hide file tree
Showing 4 changed files with 59 additions and 18 deletions.
Expand Up @@ -37,7 +37,7 @@ class AIAssistantIntention : IntentionAction, Iconable {
}

override fun invoke(project: Project, editor: Editor, file: PsiFile) {
val intentions = getAiAssistantIntentions(project, editor, file)
val intentions = Companion.getAiAssistantIntentions(project, editor, file)

val title = AutoDevBundle.message("intentions.assistant.popup.title")
val popupStep = CustomPopupStep(intentions, project, editor, file, title)
Expand All @@ -47,24 +47,24 @@ class AIAssistantIntention : IntentionAction, Iconable {
popup.showInBestPositionFor(editor)
}

private fun getAiAssistantIntentions(project: Project, editor: Editor, file: PsiFile): List<IntentionAction> {
val intentions: MutableList<IntentionAction> = ArrayList()
val extensionList = EP_NAME.extensionList

for (bean in extensionList) {
val intentionActionBean = bean as IntentionActionBean
val intention = intentionActionBean.instance
if (intention.isAvailable(project, editor, file)) {
intentions.add(intention)
}
}

return intentions
}

companion object {
val EP_NAME: ExtensionPointName<IntentionActionBean> =
ExtensionPointName<IntentionActionBean>("cc.unitmesh.aiAssistantIntention")

fun getAiAssistantIntentions(project: Project, editor: Editor, file: PsiFile): List<IntentionAction> {
val intentions: MutableList<IntentionAction> = ArrayList()
val extensionList = EP_NAME.extensionList

for (bean in extensionList) {
val intentionActionBean = bean as IntentionActionBean
val intention = intentionActionBean.instance
if (intention.isAvailable(project, editor, file)) {
intentions.add(intention)
}
}

return intentions
}
}
}

Expand Down
@@ -0,0 +1,36 @@
package cc.unitmesh.devti.intentions.editor

import cc.unitmesh.devti.AutoDevBundle
import cc.unitmesh.devti.intentions.AIAssistantIntention
import com.intellij.codeInsight.intention.IntentionAction
import com.intellij.openapi.actionSystem.ActionGroup
import com.intellij.openapi.actionSystem.AnAction
import com.intellij.openapi.actionSystem.AnActionEvent
import com.intellij.openapi.actionSystem.CommonDataKeys
import com.intellij.openapi.editor.Editor
import com.intellij.openapi.project.DumbAware
import com.intellij.openapi.project.DumbAwareAction
import com.intellij.openapi.project.Project
import com.intellij.psi.PsiFile

class IntentionsActionGroup : ActionGroup(), DumbAware {
init {
templatePresentation.text =
AutoDevBundle.message("intentions.assistant.name")
}

override fun getChildren(e: AnActionEvent?): Array<AnAction> {
val project: Project = e?.project ?: return emptyArray()
val editor: Editor = e.getData(CommonDataKeys.EDITOR) ?: return emptyArray()
val file: PsiFile = e.getData(CommonDataKeys.PSI_FILE) ?: return emptyArray()

val intentions: List<IntentionAction> =
AIAssistantIntention.getAiAssistantIntentions(project, editor, file)

return intentions.map { intentionAction ->
DumbAwareAction.create(intentionAction.text) {
intentionAction.invoke(project, editor, file)
}
}.toTypedArray()
}
}
Expand Up @@ -15,9 +15,9 @@ class RefactorThisIntention : AbstractChatIntention() {
return (editor != null) && (file != null)
}

override fun getText(): String = AutoDevBundle.message("intentions.chat.code.complete.name")
override fun getText(): String = AutoDevBundle.message("intentions.chat.code.refactor.name")

override fun getFamilyName(): String = AutoDevBundle.message("intentions.chat.code.complete.family.name")
override fun getFamilyName(): String = AutoDevBundle.message("intentions.chat.code.refactor.family.name")

/**
* Retrieves the prompt for performing a code refactoring.
Expand Down
5 changes: 5 additions & 0 deletions src/main/resources/META-INF/autodev-core.xml
Expand Up @@ -91,6 +91,11 @@
</extensions>

<actions>
<group id="IntentionsActionGroup" class="cc.unitmesh.devti.intentions.editor.IntentionsActionGroup"
icon="cc.unitmesh.devti.AutoDevIcons.AI_COPILOT">
<add-to-group group-id="ShowIntentionsGroup" relative-to-action="ShowIntentionActions" anchor="after"/>
</group>

<group id="org.intellij.sdk.action.GroupedActions" popup="true" text="AutoDev" description="AutoDev">
<action id="cc.unitmesh.devti.actions.chat.ChatBotExplainAction"
class="cc.unitmesh.devti.actions.chat.ChatBotExplainAction" text="Explain This"
Expand Down

0 comments on commit c505638

Please sign in to comment.