11package com.coder.gateway.views.steps
22
33import com.coder.gateway.icons.CoderIcons
4- import com.coder.gateway.icons.CoderIcons.GRAY_CIRCLE
5- import com.coder.gateway.icons.CoderIcons.GREEN_CIRCLE
6- import com.coder.gateway.icons.CoderIcons.RED_CIRCLE
74import com.coder.gateway.models.WorkspaceAgentModel
85import com.coder.gateway.sdk.OS
96import com.coder.gateway.sdk.v2.models.ProvisionerJobStatus
107import com.coder.gateway.sdk.v2.models.WorkspaceBuildTransition
118import com.intellij.ui.dsl.builder.panel
9+ import com.intellij.ui.dsl.gridLayout.HorizontalAlign
1210import com.intellij.util.ui.JBFont
11+ import java.awt.Color
1312import java.awt.Component
1413import javax.swing.JList
1514import javax.swing.ListCellRenderer
@@ -20,14 +19,17 @@ class WorkspaceCellRenderer : ListCellRenderer<WorkspaceAgentModel> {
2019 return panel {
2120 indent {
2221 row {
23- icon(iconForImageTag( workspace))
22+ icon(workspace.icon( ))
2423 label(workspace.name).applyToComponent {
2524 font = JBFont .h3()
26- }
25+ }.resizableColumn().horizontalAlign( HorizontalAlign . FILL )
2726 panel {
2827 row {
29- icon(iconForStatus(workspace))
30- label(labelForStatus(workspace))
28+ label(workspace.statusLabel()).applyToComponent {
29+ font = JBFont .h3()
30+ foreground = workspace.statusColor()
31+ }
32+ cell()
3133 }
3234 }
3335 }
@@ -43,31 +45,31 @@ class WorkspaceCellRenderer : ListCellRenderer<WorkspaceAgentModel> {
4345 }
4446 }
4547
46- private fun iconForImageTag ( workspace : WorkspaceAgentModel ) = when (workspace? .agentOS) {
48+ private fun WorkspaceAgentModel. icon ( ) = when (this .agentOS) {
4749 OS .LINUX -> CoderIcons .LINUX
4850 OS .WINDOWS -> CoderIcons .WINDOWS
4951 OS .MAC -> CoderIcons .MACOS
5052 else -> CoderIcons .UNKNOWN
5153 }
5254
53- private fun iconForStatus ( workspace : WorkspaceAgentModel ) = when (workspace .jobStatus) {
54- ProvisionerJobStatus .SUCCEEDED -> if (workspace .buildTransition == WorkspaceBuildTransition .START ) GREEN_CIRCLE else RED_CIRCLE
55- ProvisionerJobStatus .RUNNING -> when (workspace .buildTransition) {
56- WorkspaceBuildTransition .START , WorkspaceBuildTransition .STOP , WorkspaceBuildTransition .DELETE -> GRAY_CIRCLE
55+ private fun WorkspaceAgentModel. statusColor ( ) = when (this .jobStatus) {
56+ ProvisionerJobStatus .SUCCEEDED -> if (this .buildTransition == WorkspaceBuildTransition .START ) Color . GREEN else Color . RED
57+ ProvisionerJobStatus .RUNNING -> when (this .buildTransition) {
58+ WorkspaceBuildTransition .START , WorkspaceBuildTransition .STOP , WorkspaceBuildTransition .DELETE -> Color . GRAY
5759 }
5860
59- else -> RED_CIRCLE
61+ else -> Color . RED
6062 }
6163
62- private fun labelForStatus ( workspace : WorkspaceAgentModel ) = when (workspace .jobStatus) {
64+ private fun WorkspaceAgentModel. statusLabel ( ) = when (this .jobStatus) {
6365 ProvisionerJobStatus .PENDING -> " ◍ Queued"
64- ProvisionerJobStatus .RUNNING -> when (workspace .buildTransition) {
66+ ProvisionerJobStatus .RUNNING -> when (this .buildTransition) {
6567 WorkspaceBuildTransition .START -> " ⦿ Starting"
6668 WorkspaceBuildTransition .STOP -> " ◍ Stopping"
6769 WorkspaceBuildTransition .DELETE -> " ⦸ Deleting"
6870 }
6971
70- ProvisionerJobStatus .SUCCEEDED -> when (workspace .buildTransition) {
72+ ProvisionerJobStatus .SUCCEEDED -> when (this .buildTransition) {
7173 WorkspaceBuildTransition .START -> " ⦿ Running"
7274 WorkspaceBuildTransition .STOP -> " ◍ Stopped"
7375 WorkspaceBuildTransition .DELETE -> " ⦸ Deleted"
0 commit comments