@@ -19,9 +19,12 @@ import com.coder.gateway.sdk.getOS
1919import com.coder.gateway.sdk.toURL
2020import com.coder.gateway.sdk.v2.models.Workspace
2121import com.coder.gateway.sdk.withPath
22+ import com.intellij.CommonBundle
23+ import com.intellij.icons.AllIcons
2224import com.intellij.ide.BrowserUtil
2325import com.intellij.ide.IdeBundle
2426import com.intellij.openapi.Disposable
27+ import com.intellij.openapi.actionSystem.AnActionEvent
2528import com.intellij.openapi.application.ApplicationManager
2629import com.intellij.openapi.application.ModalityState
2730import com.intellij.openapi.application.invokeAndWaitIfNeeded
@@ -31,8 +34,10 @@ import com.intellij.openapi.progress.ProgressManager
3134import com.intellij.openapi.progress.Task
3235import com.intellij.openapi.ui.panel.ComponentPanelBuilder
3336import com.intellij.openapi.wm.impl.welcomeScreen.WelcomeScreenUIManager
37+ import com.intellij.ui.AnActionButton
3438import com.intellij.ui.AppIcon
3539import com.intellij.ui.JBColor
40+ import com.intellij.ui.ToolbarDecorator
3641import com.intellij.ui.components.JBTextField
3742import com.intellij.ui.components.dialog
3843import com.intellij.ui.dsl.builder.BottomGap
@@ -76,8 +81,8 @@ class CoderWorkspacesStepView(val enableNextButtonCallback: (Boolean) -> Unit) :
7681 WorkspaceNameColumnInfo (" Name" ),
7782 WorkspaceTemplateNameColumnInfo (" Template" ),
7883 WorkspaceVersionColumnInfo (" Version" ),
79- WorkspaceStatusColumnInfo (" Status" )
80- )
84+ WorkspaceStatusColumnInfo (" Status" ))
85+
8186 private var tableOfWorkspaces = TableView (listTableModelOfWorkspaces).apply {
8287 rowSelectionAllowed = true
8388 columnSelectionAllowed = false
@@ -93,7 +98,15 @@ class CoderWorkspacesStepView(val enableNextButtonCallback: (Boolean) -> Unit) :
9398 selectionModel.addListSelectionListener {
9499 enableNextButtonCallback(selectedObject != null && selectedObject?.agentStatus == RUNNING )
95100 }
101+
96102 }
103+
104+ private val toolbar = ToolbarDecorator .createDecorator(tableOfWorkspaces)
105+ .disableAddAction()
106+ .disableRemoveAction()
107+ .disableUpDownActions()
108+ .addExtraAction(StartWorkspaceAction ())
109+ .addExtraAction(StopWorkspaceAction ())
97110
98111 private var poller: Job ? = null
99112
@@ -127,7 +140,7 @@ class CoderWorkspacesStepView(val enableNextButtonCallback: (Boolean) -> Unit) :
127140 cell()
128141 }
129142 row {
130- scrollCell(tableOfWorkspaces ).resizableColumn().horizontalAlign(HorizontalAlign .FILL ).verticalAlign(VerticalAlign .FILL )
143+ scrollCell(toolbar.createPanel() ).resizableColumn().horizontalAlign(HorizontalAlign .FILL ).verticalAlign(VerticalAlign .FILL )
131144 cell()
132145 }.topGap(TopGap .NONE ).resizableRow()
133146
@@ -137,6 +150,18 @@ class CoderWorkspacesStepView(val enableNextButtonCallback: (Boolean) -> Unit) :
137150 override val previousActionText = IdeBundle .message(" button.back" )
138151 override val nextActionText = CoderGatewayBundle .message(" gateway.connector.view.coder.workspaces.next.text" )
139152
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+
140165 override fun onInit (wizardModel : CoderWorkspacesWizardModel ) {
141166 enableNextButtonCallback(false )
142167 }
0 commit comments