@@ -16,7 +16,6 @@ import com.intellij.openapi.actionSystem.LangDataKeys
16
16
import com.intellij.openapi.application.ModalityState
17
17
import com.intellij.openapi.application.runInEdt
18
18
import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory
19
- import com.intellij.openapi.project.DumbAwareAction
20
19
import com.intellij.openapi.project.Project
21
20
import com.intellij.openapi.project.guessProjectDir
22
21
import com.intellij.openapi.ui.DialogWrapper
@@ -45,7 +44,7 @@ import software.amazon.awssdk.services.ecr.EcrClient
45
44
import software.aws.toolkits.core.utils.error
46
45
import software.aws.toolkits.core.utils.getLogger
47
46
import software.aws.toolkits.jetbrains.core.awsClient
48
- import software.aws.toolkits.jetbrains.core.explorer.ExplorerDataKeys
47
+ import software.aws.toolkits.jetbrains.core.explorer.actions.SingleExplorerNodeAction
49
48
import software.aws.toolkits.jetbrains.services.ecr.DockerRunConfiguration
50
49
import software.aws.toolkits.jetbrains.services.ecr.DockerfileEcrPushRequest
51
50
import software.aws.toolkits.jetbrains.services.ecr.EcrPushRequest
@@ -70,22 +69,16 @@ import javax.swing.JTextField
70
69
import javax.swing.plaf.basic.BasicComboBoxEditor
71
70
72
71
class PushToRepositoryAction :
73
- DumbAwareAction ( ),
72
+ SingleExplorerNodeAction < EcrRepositoryNode >(message( " action.ecr.repository.push.text " ) ),
74
73
CoroutineScope by ApplicationThreadPoolScope (" PushRepositoryAction" ) {
75
74
private val dockerServerRuntime: Deferred <DockerServerRuntimeInstance > =
76
75
async(start = CoroutineStart .LAZY ) { EcrUtils .getDockerServerRuntimeInstance().runtimeInstance }
77
76
78
- override fun actionPerformed (e : AnActionEvent ) {
77
+ override fun actionPerformed (selected : EcrRepositoryNode , e : AnActionEvent ) {
79
78
val project = e.getRequiredData(LangDataKeys .PROJECT )
80
79
val client: EcrClient = project.awsClient()
81
80
82
- val selectedRepository = e.getData(ExplorerDataKeys .SELECTED_NODES )
83
- ?.takeIf { it.size == 1 }
84
- ?.mapNotNull { it as ? EcrRepositoryNode }
85
- ?.first()
86
- ?.repository
87
-
88
- val dialog = PushToEcrDialog (project, selectedRepository, dockerServerRuntime)
81
+ val dialog = PushToEcrDialog (project, selected.repository, dockerServerRuntime)
89
82
val result = dialog.showAndGet()
90
83
91
84
if (! result) {
0 commit comments