11
11
package com.redhat.devtools.intellij.kubernetes.actions
12
12
13
13
import com.intellij.openapi.actionSystem.AnActionEvent
14
- import com.intellij.openapi.application.runInEdt
15
14
import com.intellij.openapi.diagnostic.logger
16
15
import com.intellij.openapi.project.Project
17
16
import com.redhat.devtools.intellij.common.actions.StructureTreeAction
17
+ import com.redhat.devtools.intellij.kubernetes.CompletableFutureUtils.PLATFORM_EXECUTOR
18
+ import com.redhat.devtools.intellij.kubernetes.CompletableFutureUtils.UI_EXECUTOR
18
19
import com.redhat.devtools.intellij.kubernetes.dialogs.ResourceNameDialog
19
20
import com.redhat.devtools.intellij.kubernetes.model.IResourceModel
20
21
import com.redhat.devtools.intellij.kubernetes.model.Notification
@@ -24,9 +25,10 @@ import com.redhat.devtools.intellij.kubernetes.model.util.ResourceException
24
25
import com.redhat.devtools.intellij.kubernetes.model.util.toMessage
25
26
import com.redhat.devtools.intellij.kubernetes.telemetry.TelemetryService
26
27
import com.redhat.devtools.intellij.kubernetes.tree.KubernetesStructure.NamespacesFolder
28
+ import io.fabric8.kubernetes.api.model.Namespace
27
29
import java.awt.Point
28
30
import java.awt.event.MouseEvent
29
- import java.util.concurrent.CompletableFuture.runAsync
31
+ import java.util.concurrent.CompletableFuture
30
32
import javax.swing.tree.TreePath
31
33
32
34
class SetCurrentNamespaceAction : StructureTreeAction (false ) {
@@ -39,23 +41,28 @@ class SetCurrentNamespaceAction : StructureTreeAction(false) {
39
41
}
40
42
41
43
private fun openNameDialog (project : Project , model : IResourceModel , location : Point ? ) {
42
- runAsync {
43
- val projects = loadNamespaces(model)
44
- runInEdt {
44
+ CompletableFuture .supplyAsync(
45
+ { loadNamespaces(model) },
46
+ PLATFORM_EXECUTOR
47
+ ).thenApplyAsync (
48
+ { projects ->
45
49
val dialog = ResourceNameDialog (project, " Namespace" , projects, onOk(model), location)
46
- dialog.showAndGet()
47
- }
48
- }
50
+ dialog.show()
51
+ },
52
+ UI_EXECUTOR
53
+ )
49
54
}
50
55
51
- private fun loadNamespaces (model : IResourceModel ) = try {
52
- model.getCurrentContext()?.getAllResources(NamespacesOperator .KIND , ResourcesIn .NO_NAMESPACE )
53
- } catch (e: ResourceException ) {
54
- logger<SetCurrentNamespaceAction >().warn(
55
- " Could not get all namespaces." , e
56
- )
57
- null
58
- } ? : emptyList()
56
+ private fun loadNamespaces (model : IResourceModel ): Collection <Namespace > {
57
+ return try {
58
+ model.getCurrentContext()?.getAllResources(NamespacesOperator .KIND , ResourcesIn .NO_NAMESPACE )
59
+ } catch (e: ResourceException ) {
60
+ logger<SetCurrentNamespaceAction >().warn(
61
+ " Could not get all namespaces." , e
62
+ )
63
+ null
64
+ } ? : emptyList()
65
+ }
59
66
60
67
private fun onOk (model : IResourceModel ): (projectName: String ) -> Unit {
61
68
return { name ->
0 commit comments