@@ -3,7 +3,6 @@ package cc.unitmesh.container
3
3
import cc.unitmesh.devti.AutoDevNotifications
4
4
import cc.unitmesh.devti.provider.RunService
5
5
import com.intellij.clouds.docker.gateway.DockerDevcontainerDeployContext
6
- import com.intellij.clouds.docker.gateway.ui.DockerDeployView
7
6
import com.intellij.docker.DockerCloudConfiguration
8
7
import com.intellij.docker.agent.devcontainers.DevcontainerPaths
9
8
import com.intellij.docker.agent.devcontainers.buildStrategy.DevcontainerBuildStrategy.LocalBuildData
@@ -45,11 +44,10 @@ class RunDevContainerService : RunService {
45
44
val containerFile = File (projectDir, " devcontainer.json" )
46
45
containerFile.writeText(virtualFile.contentsToByteArray().toString(Charsets .UTF_8 ))
47
46
48
- val content = try {
47
+ val context = try {
49
48
createContext(containerFile, projectDir, server)
50
49
} catch (e: Exception ) {
51
- AutoDevNotifications .error(project, " Cannot create DockerDevcontainerDeployContext" )
52
- return null
50
+ DockerDevcontainerDeployContext ()
53
51
}
54
52
55
53
val wrapper = object : DialogWrapper (project) {
@@ -58,20 +56,47 @@ class RunDevContainerService : RunService {
58
56
val panel = contentPanel
59
57
val lifetime = Lifetime .Companion .Eternal
60
58
61
- val dockerDeployView = DockerDeployView (project, lifetime, content)
62
- val component = dockerDeployView.component
63
- component.setBorder(JBUI .Borders .empty())
59
+ try {
60
+ val component = createDeployViewComponent(project, lifetime, context)
61
+ component.setBorder(JBUI .Borders .empty())
64
62
65
- panel.add(component)
66
- panel.revalidate()
67
- panel.repaint()
63
+ panel.add(component)
64
+ panel.revalidate()
65
+ panel.repaint()
66
+ } catch (e: Exception ) {
67
+ AutoDevNotifications .error(project, " Cannot create DockerDeployView: ${e.message} " )
68
+ e.printStackTrace()
69
+ }
68
70
}
69
71
}
70
72
71
73
wrapper.show()
72
74
return " Running devcontainer.json"
73
75
}
74
76
77
+ private fun createDeployViewComponent (
78
+ project : Project ,
79
+ lifetime : Lifetime ,
80
+ context : DockerDevcontainerDeployContext
81
+ ): JComponent {
82
+ val dockerDeployViewClass = Class .forName(" com.intellij.clouds.docker.gateway.ui.DockerDeployView" )
83
+ val constructor = dockerDeployViewClass.getDeclaredConstructor(
84
+ Project ::class .java,
85
+ Lifetime ::class .java,
86
+ DockerDevcontainerDeployContext ::class .java,
87
+ Function0 ::class .java,
88
+ Function0 ::class .java
89
+ )
90
+ constructor .isAccessible = true
91
+
92
+ val emptyAction = { }
93
+ val dockerDeployViewInstance = constructor .newInstance(project, lifetime, context, emptyAction, emptyAction)
94
+
95
+ val componentMethod = dockerDeployViewClass.getMethod(" getComponent" )
96
+ val component = componentMethod.invoke(dockerDeployViewInstance) as JComponent
97
+ return component
98
+ }
99
+
75
100
private fun dockerServers (): List <RemoteServer <DockerCloudConfiguration >> {
76
101
val filteredServers =
77
102
getDockerServers().filter {
0 commit comments