Skip to content

Commit 45c17f4

Browse files
committed
Impl: add table action toolbar
- with two buttons for starting/stopping a workspace - icons for start&stop
1 parent fd3a4be commit 45c17f4

File tree

6 files changed

+47
-3
lines changed

6 files changed

+47
-3
lines changed

src/main/kotlin/com/coder/gateway/icons/CoderIcons.kt

+3
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ object CoderIcons {
99

1010
val OPEN_TERMINAL = IconLoader.getIcon("open_terminal.svg", javaClass)
1111

12+
val RUN = IconLoader.getIcon("run.svg", javaClass)
13+
val STOP = IconLoader.getIcon("stop.svg", javaClass)
14+
1215
val WINDOWS = IconLoader.getIcon("windows.svg", javaClass)
1316
val MACOS = IconLoader.getIcon("macOS.svg", javaClass)
1417
val LINUX = IconLoader.getIcon("linux.svg", javaClass)

src/main/kotlin/com/coder/gateway/views/steps/CoderWorkspacesStepView.kt

+28-3
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,12 @@ import com.coder.gateway.sdk.getOS
1919
import com.coder.gateway.sdk.toURL
2020
import com.coder.gateway.sdk.v2.models.Workspace
2121
import com.coder.gateway.sdk.withPath
22+
import com.intellij.CommonBundle
23+
import com.intellij.icons.AllIcons
2224
import com.intellij.ide.BrowserUtil
2325
import com.intellij.ide.IdeBundle
2426
import com.intellij.openapi.Disposable
27+
import com.intellij.openapi.actionSystem.AnActionEvent
2528
import com.intellij.openapi.application.ApplicationManager
2629
import com.intellij.openapi.application.ModalityState
2730
import com.intellij.openapi.application.invokeAndWaitIfNeeded
@@ -31,8 +34,10 @@ import com.intellij.openapi.progress.ProgressManager
3134
import com.intellij.openapi.progress.Task
3235
import com.intellij.openapi.ui.panel.ComponentPanelBuilder
3336
import com.intellij.openapi.wm.impl.welcomeScreen.WelcomeScreenUIManager
37+
import com.intellij.ui.AnActionButton
3438
import com.intellij.ui.AppIcon
3539
import com.intellij.ui.JBColor
40+
import com.intellij.ui.ToolbarDecorator
3641
import com.intellij.ui.components.JBTextField
3742
import com.intellij.ui.components.dialog
3843
import 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
}

src/main/resources/run.svg

+4
Loading

src/main/resources/run_dark.svg

+4
Loading

src/main/resources/stop.svg

+4
Loading

src/main/resources/stop_dark.svg

+4
Loading

0 commit comments

Comments
 (0)