@@ -19,9 +19,12 @@ import com.coder.gateway.sdk.getOS
19
19
import com.coder.gateway.sdk.toURL
20
20
import com.coder.gateway.sdk.v2.models.Workspace
21
21
import com.coder.gateway.sdk.withPath
22
+ import com.intellij.CommonBundle
23
+ import com.intellij.icons.AllIcons
22
24
import com.intellij.ide.BrowserUtil
23
25
import com.intellij.ide.IdeBundle
24
26
import com.intellij.openapi.Disposable
27
+ import com.intellij.openapi.actionSystem.AnActionEvent
25
28
import com.intellij.openapi.application.ApplicationManager
26
29
import com.intellij.openapi.application.ModalityState
27
30
import com.intellij.openapi.application.invokeAndWaitIfNeeded
@@ -31,8 +34,10 @@ import com.intellij.openapi.progress.ProgressManager
31
34
import com.intellij.openapi.progress.Task
32
35
import com.intellij.openapi.ui.panel.ComponentPanelBuilder
33
36
import com.intellij.openapi.wm.impl.welcomeScreen.WelcomeScreenUIManager
37
+ import com.intellij.ui.AnActionButton
34
38
import com.intellij.ui.AppIcon
35
39
import com.intellij.ui.JBColor
40
+ import com.intellij.ui.ToolbarDecorator
36
41
import com.intellij.ui.components.JBTextField
37
42
import com.intellij.ui.components.dialog
38
43
import com.intellij.ui.dsl.builder.BottomGap
@@ -76,8 +81,8 @@ class CoderWorkspacesStepView(val enableNextButtonCallback: (Boolean) -> Unit) :
76
81
WorkspaceNameColumnInfo (" Name" ),
77
82
WorkspaceTemplateNameColumnInfo (" Template" ),
78
83
WorkspaceVersionColumnInfo (" Version" ),
79
- WorkspaceStatusColumnInfo (" Status" )
80
- )
84
+ WorkspaceStatusColumnInfo (" Status" ))
85
+
81
86
private var tableOfWorkspaces = TableView (listTableModelOfWorkspaces).apply {
82
87
rowSelectionAllowed = true
83
88
columnSelectionAllowed = false
@@ -93,7 +98,15 @@ class CoderWorkspacesStepView(val enableNextButtonCallback: (Boolean) -> Unit) :
93
98
selectionModel.addListSelectionListener {
94
99
enableNextButtonCallback(selectedObject != null && selectedObject?.agentStatus == RUNNING )
95
100
}
101
+
96
102
}
103
+
104
+ private val toolbar = ToolbarDecorator .createDecorator(tableOfWorkspaces)
105
+ .disableAddAction()
106
+ .disableRemoveAction()
107
+ .disableUpDownActions()
108
+ .addExtraAction(StartWorkspaceAction ())
109
+ .addExtraAction(StopWorkspaceAction ())
97
110
98
111
private var poller: Job ? = null
99
112
@@ -127,7 +140,7 @@ class CoderWorkspacesStepView(val enableNextButtonCallback: (Boolean) -> Unit) :
127
140
cell()
128
141
}
129
142
row {
130
- scrollCell(tableOfWorkspaces ).resizableColumn().horizontalAlign(HorizontalAlign .FILL ).verticalAlign(VerticalAlign .FILL )
143
+ scrollCell(toolbar.createPanel() ).resizableColumn().horizontalAlign(HorizontalAlign .FILL ).verticalAlign(VerticalAlign .FILL )
131
144
cell()
132
145
}.topGap(TopGap .NONE ).resizableRow()
133
146
@@ -137,6 +150,18 @@ class CoderWorkspacesStepView(val enableNextButtonCallback: (Boolean) -> Unit) :
137
150
override val previousActionText = IdeBundle .message(" button.back" )
138
151
override val nextActionText = CoderGatewayBundle .message(" gateway.connector.view.coder.workspaces.next.text" )
139
152
153
+ private inner class StartWorkspaceAction : AnActionButton (" Start Workspace" , " Start Workspace" , CoderIcons .RUN ) {
154
+ override fun actionPerformed (p0 : AnActionEvent ) {
155
+ TODO (" Not yet implemented" )
156
+ }
157
+ }
158
+
159
+ private inner class StopWorkspaceAction : AnActionButton (" Stop Workspace" , " Stop Workspace" , CoderIcons .STOP ) {
160
+ override fun actionPerformed (p0 : AnActionEvent ) {
161
+ TODO (" Not yet implemented" )
162
+ }
163
+ }
164
+
140
165
override fun onInit (wizardModel : CoderWorkspacesWizardModel ) {
141
166
enableNextButtonCallback(false )
142
167
}
0 commit comments