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
129import com.intellij.ui.dsl.gridLayout.HorizontalAlign
1310import com.intellij.util.ui.JBFont
11+ import java.awt.Color
1412import java.awt.Component
1513import javax.swing.JList
1614import javax.swing.ListCellRenderer
@@ -21,14 +19,16 @@ class WorkspaceCellRenderer : ListCellRenderer<WorkspaceAgentModel> {
2119 return panel {
2220 indent {
2321 row {
24- icon(iconForImageTag( workspace))
22+ icon(workspace.icon( ))
2523 label(workspace.name).applyToComponent {
2624 font = JBFont .h3()
2725 }.resizableColumn().horizontalAlign(HorizontalAlign .FILL )
2826 panel {
2927 row {
30- icon(iconForStatus(workspace))
31- label(labelForStatus(workspace))
28+ label(workspace.statusLabel()).applyToComponent {
29+ font = JBFont .h3()
30+ foreground = workspace.statusColor()
31+ }
3232 cell()
3333 }
3434 }
@@ -45,31 +45,31 @@ class WorkspaceCellRenderer : ListCellRenderer<WorkspaceAgentModel> {
4545 }
4646 }
4747
48- private fun iconForImageTag ( workspace : WorkspaceAgentModel ) = when (workspace .agentOS) {
48+ private fun WorkspaceAgentModel. icon ( ) = when (this .agentOS) {
4949 OS .LINUX -> CoderIcons .LINUX
5050 OS .WINDOWS -> CoderIcons .WINDOWS
5151 OS .MAC -> CoderIcons .MACOS
5252 else -> CoderIcons .UNKNOWN
5353 }
5454
55- private fun iconForStatus ( workspace : WorkspaceAgentModel ) = when (workspace .jobStatus) {
56- ProvisionerJobStatus .SUCCEEDED -> if (workspace .buildTransition == WorkspaceBuildTransition .START ) GREEN_CIRCLE else RED_CIRCLE
57- ProvisionerJobStatus .RUNNING -> when (workspace .buildTransition) {
58- 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
5959 }
6060
61- else -> RED_CIRCLE
61+ else -> Color . RED
6262 }
6363
64- private fun labelForStatus ( workspace : WorkspaceAgentModel ) = when (workspace .jobStatus) {
64+ private fun WorkspaceAgentModel. statusLabel ( ) = when (this .jobStatus) {
6565 ProvisionerJobStatus .PENDING -> " ◍ Queued"
66- ProvisionerJobStatus .RUNNING -> when (workspace .buildTransition) {
66+ ProvisionerJobStatus .RUNNING -> when (this .buildTransition) {
6767 WorkspaceBuildTransition .START -> " ⦿ Starting"
6868 WorkspaceBuildTransition .STOP -> " ◍ Stopping"
6969 WorkspaceBuildTransition .DELETE -> " ⦸ Deleting"
7070 }
7171
72- ProvisionerJobStatus .SUCCEEDED -> when (workspace .buildTransition) {
72+ ProvisionerJobStatus .SUCCEEDED -> when (this .buildTransition) {
7373 WorkspaceBuildTransition .START -> " ⦿ Running"
7474 WorkspaceBuildTransition .STOP -> " ◍ Stopped"
7575 WorkspaceBuildTransition .DELETE -> " ⦸ Deleted"
0 commit comments