Skip to content

Commit 4ae7f4e

Browse files
Refactor actions and their neighborhood (#346)
1 parent fe5070f commit 4ae7f4e

Some content is hidden

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

45 files changed

+427
-420
lines changed

clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/AskServerToGenerateBuildDir.kt

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,13 @@
11
package org.utbot.cpp.clion.plugin.actions
22

3-
import com.intellij.notification.Notification
4-
import com.intellij.notification.NotificationAction
3+
import com.intellij.openapi.actionSystem.AnAction
54
import com.intellij.openapi.actionSystem.AnActionEvent
65
import org.utbot.cpp.clion.plugin.UTBot
76
import org.utbot.cpp.clion.plugin.client.requests.CreateBuildDirRequest
87

9-
class AskServerToGenerateBuildDir : NotificationAction(UTBot.message("projectConfigure.generate.buildDir")) {
10-
override fun actionPerformed(e: AnActionEvent, n: Notification) {
11-
actionPerformed(e)
12-
}
8+
class AskServerToGenerateBuildDir : AnAction(UTBot.message("projectConfigure.generate.buildDir")) {
139

14-
// todo: add constructor that takes AnActionEvent to Request classes
15-
override fun actionPerformed(e: AnActionEvent) {
16-
CreateBuildDirRequest(e).execute()
17-
}
10+
override fun actionPerformed(e: AnActionEvent) = CreateBuildDirRequest(e).execute()
1811

1912
override fun update(e: AnActionEvent) {
2013
e.presentation.isEnabledAndVisible = e.project != null

clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/AskServerToGenerateJsonForProjectConfiguration.kt

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,13 @@
11
package org.utbot.cpp.clion.plugin.actions
22

3-
import com.intellij.notification.Notification
4-
import com.intellij.notification.NotificationAction
3+
import com.intellij.openapi.actionSystem.AnAction
54
import com.intellij.openapi.actionSystem.AnActionEvent
65
import org.utbot.cpp.clion.plugin.UTBot
76
import org.utbot.cpp.clion.plugin.client.requests.GenerateJsonFilesRequest
87

9-
class AskServerToGenerateJsonForProjectConfiguration :
10-
NotificationAction(UTBot.message("projectConfigure.generate.json")) {
11-
override fun actionPerformed(e: AnActionEvent, n: Notification) {
12-
actionPerformed(e)
13-
}
8+
class AskServerToGenerateJsonForProjectConfiguration : AnAction(UTBot.message("projectConfigure.generate.json")) {
149

15-
override fun actionPerformed(e: AnActionEvent) {
16-
GenerateJsonFilesRequest(e).execute()
17-
}
10+
override fun actionPerformed(e: AnActionEvent) = GenerateJsonFilesRequest(e).execute()
1811

1912
override fun update(e: AnActionEvent) {
2013
e.presentation.isEnabledAndVisible = e.project != null

clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/ConfigureProjectAction.kt

Lines changed: 0 additions & 21 deletions
This file was deleted.
Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,30 @@
11
package org.utbot.cpp.clion.plugin.actions
22

3-
import com.intellij.notification.Notification
4-
import com.intellij.notification.NotificationAction
3+
import com.intellij.openapi.actionSystem.AnAction
54
import com.intellij.openapi.actionSystem.AnActionEvent
65
import com.intellij.openapi.vfs.LocalFileSystem
76
import com.intellij.psi.PsiManager
7+
import org.utbot.cpp.clion.plugin.utils.activeProject
88
import java.nio.file.Path
99

10-
class FocusAction(val path: Path) : NotificationAction("Show") {
10+
class FocusAction(val path: Path) : AnAction("Show") {
11+
1112
override fun actionPerformed(e: AnActionEvent) {
12-
val virtualFile = LocalFileSystem.getInstance().findFileByNioFile(path) ?: return
13+
val virtualFile = LocalFileSystem.getInstance().findFileByNioFile(path)
14+
?: error("Focus action should be disabled for path $path")
15+
16+
val project = e.activeProject()
17+
val projectInstance = PsiManager.getInstance(project)
18+
19+
1320
if (virtualFile.isDirectory) {
14-
PsiManager.getInstance(e.project!!).findDirectory(virtualFile)?.navigate(true)
21+
projectInstance.findDirectory(virtualFile)?.navigate(true)
1522
} else {
16-
PsiManager.getInstance(e.project!!).findFile(virtualFile)?.navigate(true)
23+
projectInstance.findFile(virtualFile)?.navigate(true)
1724
}
1825
}
1926

20-
override fun actionPerformed(e: AnActionEvent, notification: Notification) {
21-
actionPerformed(e)
27+
override fun update(e: AnActionEvent) {
28+
e.presentation.isEnabledAndVisible = LocalFileSystem.getInstance().findFileByNioFile(path) != null
2229
}
2330
}

clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/GenerateForClassAction.kt

Lines changed: 0 additions & 23 deletions
This file was deleted.

clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/GenerateForFolderAction.kt

Lines changed: 0 additions & 23 deletions
This file was deleted.

clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/GenerateForFunctionAction.kt

Lines changed: 0 additions & 20 deletions
This file was deleted.

clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/GenerateTestsBaseAction.kt

Lines changed: 0 additions & 17 deletions
This file was deleted.

clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/ShowWizardAction.kt

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,15 @@
11
package org.utbot.cpp.clion.plugin.actions
22

3-
import com.intellij.notification.Notification
4-
import com.intellij.notification.NotificationAction
3+
import com.intellij.openapi.actionSystem.AnAction
54
import com.intellij.openapi.actionSystem.AnActionEvent
65
import org.utbot.cpp.clion.plugin.UTBot
76
import org.utbot.cpp.clion.plugin.ui.wizard.UTBotWizard
7+
import org.utbot.cpp.clion.plugin.utils.activeProject
88

9-
class ShowWizardAction: NotificationAction(UTBot.message("wizard.show")) {
10-
override fun actionPerformed(e: AnActionEvent, notification: Notification) {
11-
actionPerformed(e)
12-
}
9+
class ShowWizardAction: AnAction(UTBot.message("wizard.show")) {
1310

1411
override fun actionPerformed(e: AnActionEvent) {
15-
UTBotWizard(e.project ?: return).showAndGet()
12+
UTBotWizard(e.activeProject()).showAndGet()
1613
}
1714

1815
override fun update(e: AnActionEvent) {

clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/UnmarkSourceFolderAction.kt

Lines changed: 0 additions & 16 deletions
This file was deleted.
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package org.utbot.cpp.clion.plugin.actions.configure
2+
3+
import com.intellij.openapi.actionSystem.AnAction
4+
import com.intellij.openapi.actionSystem.AnActionEvent
5+
import org.utbot.cpp.clion.plugin.UTBot
6+
import org.utbot.cpp.clion.plugin.client.requests.CheckProjectConfigurationRequest
7+
import org.utbot.cpp.clion.plugin.utils.activeProject
8+
9+
class ConfigureProjectAction : AnAction(UTBot.message("projectConfigure.configure")) {
10+
11+
override fun actionPerformed(e: AnActionEvent) = CheckProjectConfigurationRequest(e.activeProject()).execute()
12+
13+
override fun update(e: AnActionEvent) {
14+
e.presentation.isEnabledAndVisible = e.project != null
15+
}
16+
}

clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/ReconfigureProjectAction.kt renamed to clion-plugin/src/main/kotlin/org/utbot/cpp/clion/plugin/actions/configure/ReconfigureProjectAction.kt

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,20 @@
1-
package org.utbot.cpp.clion.plugin.actions
1+
package org.utbot.cpp.clion.plugin.actions.configure
22

3-
import com.intellij.notification.Notification
4-
import com.intellij.notification.NotificationAction
3+
import com.intellij.openapi.actionSystem.AnAction
54
import com.intellij.openapi.actionSystem.AnActionEvent
65
import org.utbot.cpp.clion.plugin.UTBot
76
import org.utbot.cpp.clion.plugin.grpc.getProjectConfigGrpcRequest
87
import org.utbot.cpp.clion.plugin.client.requests.CheckProjectConfigurationRequest
8+
import org.utbot.cpp.clion.plugin.utils.activeProject
99
import testsgen.Testgen
1010

11-
class ReconfigureProjectAction: NotificationAction(UTBot.message("projectConfigure.reconfigure")) {
12-
override fun actionPerformed(e: AnActionEvent, notification: Notification) {
13-
actionPerformed(e)
14-
}
11+
class ReconfigureProjectAction: AnAction(UTBot.message("projectConfigure.reconfigure")) {
1512

1613
override fun actionPerformed(e: AnActionEvent) {
14+
val project = e.activeProject()
1715
CheckProjectConfigurationRequest(
18-
e.project!!,
19-
getProjectConfigGrpcRequest(e.project!!, Testgen.ConfigMode.ALL),
16+
getProjectConfigGrpcRequest(project, Testgen.ConfigMode.ALL),
17+
project,
2018
).execute()
2119
}
2220

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package org.utbot.cpp.clion.plugin.actions.generate
2+
3+
import com.intellij.openapi.actionSystem.AnAction
4+
import com.intellij.openapi.actionSystem.AnActionEvent
5+
import org.utbot.cpp.clion.plugin.utils.client
6+
7+
abstract class BaseGenerateTestsAction : AnAction() {
8+
9+
override fun update(e: AnActionEvent) {
10+
val isDefined: Boolean = isDefined(e)
11+
12+
e.presentation.isVisible = isDefined
13+
e.presentation.isEnabled = isDefined && e.client.isServerAvailable()
14+
}
15+
16+
/**
17+
* Checks if an action can really be called for event [e].
18+
* For example, editor must be initialized for all actions, related to
19+
* specific lines, and must not for related to whole project.
20+
*/
21+
abstract fun isDefined(e: AnActionEvent): Boolean
22+
}
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,23 @@
1-
package org.utbot.cpp.clion.plugin.actions
1+
package org.utbot.cpp.clion.plugin.actions.generate
22

33
import com.intellij.openapi.actionSystem.AnActionEvent
44
import com.intellij.openapi.actionSystem.CommonDataKeys
5-
import org.utbot.cpp.clion.plugin.grpc.getAssertionGrpcRequest
65
import org.utbot.cpp.clion.plugin.client.requests.AssertionRequest
6+
import org.utbot.cpp.clion.plugin.grpc.getAssertionGrpcRequest
7+
import org.utbot.cpp.clion.plugin.utils.activeProject
78

8-
class GenerateForAssertionAction : GenerateTestsBaseAction() {
9-
override fun actionPerformed(e: AnActionEvent) {
9+
class GenerateForAssertionAction : BaseGenerateTestsAction() {
10+
override fun actionPerformed(e: AnActionEvent) =
1011
AssertionRequest(
1112
getAssertionGrpcRequest(e),
12-
e.project!!,
13+
e.activeProject(),
1314
).execute()
14-
}
1515

16-
override fun updateIfServerAvailable(e: AnActionEvent) {
16+
override fun isDefined(e: AnActionEvent): Boolean {
1717
val project = e.project
1818
val editor = e.getData(CommonDataKeys.EDITOR)
1919
val file = e.getData(CommonDataKeys.VIRTUAL_FILE)
20-
e.presentation.isEnabledAndVisible = (project != null) && (editor != null) && (file != null)
20+
21+
return project != null && editor != null && file != null
2122
}
2223
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package org.utbot.cpp.clion.plugin.actions.generate
2+
3+
import com.intellij.openapi.actionSystem.AnActionEvent
4+
import com.intellij.openapi.actionSystem.CommonDataKeys
5+
import org.utbot.cpp.clion.plugin.client.requests.ClassRequest
6+
import org.utbot.cpp.clion.plugin.grpc.getClassGrpcRequest
7+
import org.utbot.cpp.clion.plugin.utils.activeProject
8+
import org.utbot.cpp.clion.plugin.utils.isCPPFileName
9+
10+
class GenerateForClassAction : BaseGenerateTestsAction() {
11+
override fun actionPerformed(e: AnActionEvent) =
12+
ClassRequest(
13+
getClassGrpcRequest(e),
14+
e.activeProject(),
15+
).execute()
16+
17+
override fun isDefined(e: AnActionEvent): Boolean {
18+
val project = e.project
19+
val editor = e.getData(CommonDataKeys.EDITOR)
20+
val file = e.getData(CommonDataKeys.VIRTUAL_FILE)
21+
22+
return project != null && editor != null && file != null && isCPPFileName(file.name)
23+
}
24+
}
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,22 @@
1-
package org.utbot.cpp.clion.plugin.actions
1+
package org.utbot.cpp.clion.plugin.actions.generate
22

33
import com.intellij.openapi.actionSystem.AnActionEvent
44
import com.intellij.openapi.actionSystem.CommonDataKeys
5-
import org.utbot.cpp.clion.plugin.grpc.getFileGrpcRequest
65
import org.utbot.cpp.clion.plugin.client.requests.FileRequest
6+
import org.utbot.cpp.clion.plugin.grpc.getFileGrpcRequest
7+
import org.utbot.cpp.clion.plugin.utils.activeProject
78
import org.utbot.cpp.clion.plugin.utils.isCPPorCFileName
89

9-
class GenerateForFileAction : GenerateTestsBaseAction() {
10-
override fun actionPerformed(e: AnActionEvent) {
11-
FileRequest(getFileGrpcRequest(e), e.project!!).execute()
12-
}
10+
class GenerateForFileAction : BaseGenerateTestsAction() {
11+
override fun actionPerformed(e: AnActionEvent) =
12+
FileRequest(
13+
getFileGrpcRequest(e),
14+
e.activeProject(),
15+
).execute()
1316

1417
// action is available only if the selected file ends in .cpp, .hpp, .c or .h
15-
override fun updateIfServerAvailable(e: AnActionEvent) {
18+
override fun isDefined(e: AnActionEvent): Boolean {
1619
val file = e.getData(CommonDataKeys.PSI_FILE)
17-
e.presentation.isEnabledAndVisible = isCPPorCFileName(file?.name ?: "")
20+
return isCPPorCFileName(file?.name ?: "")
1821
}
1922
}

0 commit comments

Comments
 (0)