Skip to content

Commit 19b8801

Browse files
UI action is disabled for several selected classes or packages #882
1 parent 1025edb commit 19b8801

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/ui/actions/GenerateTestsAction.kt

+11-2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import org.utbot.intellij.plugin.ui.utils.PsiElementHandler
55
import com.intellij.openapi.actionSystem.AnAction
66
import com.intellij.openapi.actionSystem.AnActionEvent
77
import com.intellij.openapi.actionSystem.CommonDataKeys
8+
import com.intellij.openapi.actionSystem.PlatformDataKeys
89
import com.intellij.openapi.editor.Editor
910
import com.intellij.openapi.module.ModuleUtil
1011
import com.intellij.openapi.project.Project
@@ -19,6 +20,8 @@ import org.jetbrains.kotlin.idea.core.util.toPsiDirectory
1920
import org.jetbrains.kotlin.idea.core.util.toPsiFile
2021
import org.utbot.intellij.plugin.util.extractFirstLevelMembers
2122
import java.util.*
23+
import org.jetbrains.kotlin.j2k.getContainingClass
24+
import org.jetbrains.kotlin.utils.addIfNotNull
2225

2326
class GenerateTestsAction : AnAction() {
2427
override fun actionPerformed(e: AnActionEvent) {
@@ -63,12 +66,12 @@ class GenerateTestsAction : AnAction() {
6366
val srcClasses = mutableSetOf<PsiClass>()
6467
var selectedMethod: MemberInfo? = null
6568
var extractMembersFromSrcClasses = false
66-
val element = e.getData(CommonDataKeys.PSI_ELEMENT) ?: return null
69+
val element = e.getData(CommonDataKeys.PSI_ELEMENT)
6770
if (element is PsiFileSystemItem) {
6871
e.getData(CommonDataKeys.VIRTUAL_FILE_ARRAY)?.let {
6972
srcClasses += getAllClasses(project, it)
7073
}
71-
} else {
74+
} else if (element is PsiElement){
7275
val file = element.containingFile ?: return null
7376
val psiElementHandler = PsiElementHandler.makePsiElementHandler(file)
7477

@@ -84,6 +87,12 @@ class GenerateTestsAction : AnAction() {
8487
selectedMethod = MemberInfo(element)
8588
}
8689
}
90+
} else {
91+
val someSelection = e.getData(PlatformDataKeys.SELECTED_ITEMS)?: return null
92+
someSelection.forEach {
93+
if (it is PsiClass) srcClasses.add(it)
94+
else if (it is PsiElement) srcClasses.addIfNotNull(it.getContainingClass())
95+
}
8796
}
8897
srcClasses.removeIf { it.isInterface }
8998
var commonSourceRoot = null as VirtualFile?

0 commit comments

Comments
 (0)