1
1
package com.coder.gateway.views.steps
2
2
3
3
import 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
7
4
import com.coder.gateway.models.WorkspaceAgentModel
8
5
import com.coder.gateway.sdk.OS
9
6
import com.coder.gateway.sdk.v2.models.ProvisionerJobStatus
10
7
import com.coder.gateway.sdk.v2.models.WorkspaceBuildTransition
11
8
import com.intellij.ui.dsl.builder.panel
12
9
import com.intellij.ui.dsl.gridLayout.HorizontalAlign
13
10
import com.intellij.util.ui.JBFont
11
+ import java.awt.Color
14
12
import java.awt.Component
15
13
import javax.swing.JList
16
14
import javax.swing.ListCellRenderer
@@ -21,14 +19,16 @@ class WorkspaceCellRenderer : ListCellRenderer<WorkspaceAgentModel> {
21
19
return panel {
22
20
indent {
23
21
row {
24
- icon(iconForImageTag( workspace))
22
+ icon(workspace.icon( ))
25
23
label(workspace.name).applyToComponent {
26
24
font = JBFont .h3()
27
25
}.resizableColumn().horizontalAlign(HorizontalAlign .FILL )
28
26
panel {
29
27
row {
30
- icon(iconForStatus(workspace))
31
- label(labelForStatus(workspace))
28
+ label(workspace.statusLabel()).applyToComponent {
29
+ font = JBFont .h3()
30
+ foreground = workspace.statusColor()
31
+ }
32
32
cell()
33
33
}
34
34
}
@@ -45,31 +45,31 @@ class WorkspaceCellRenderer : ListCellRenderer<WorkspaceAgentModel> {
45
45
}
46
46
}
47
47
48
- private fun iconForImageTag ( workspace : WorkspaceAgentModel ) = when (workspace .agentOS) {
48
+ private fun WorkspaceAgentModel. icon ( ) = when (this .agentOS) {
49
49
OS .LINUX -> CoderIcons .LINUX
50
50
OS .WINDOWS -> CoderIcons .WINDOWS
51
51
OS .MAC -> CoderIcons .MACOS
52
52
else -> CoderIcons .UNKNOWN
53
53
}
54
54
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
59
59
}
60
60
61
- else -> RED_CIRCLE
61
+ else -> Color . RED
62
62
}
63
63
64
- private fun labelForStatus ( workspace : WorkspaceAgentModel ) = when (workspace .jobStatus) {
64
+ private fun WorkspaceAgentModel. statusLabel ( ) = when (this .jobStatus) {
65
65
ProvisionerJobStatus .PENDING -> " ◍ Queued"
66
- ProvisionerJobStatus .RUNNING -> when (workspace .buildTransition) {
66
+ ProvisionerJobStatus .RUNNING -> when (this .buildTransition) {
67
67
WorkspaceBuildTransition .START -> " ⦿ Starting"
68
68
WorkspaceBuildTransition .STOP -> " ◍ Stopping"
69
69
WorkspaceBuildTransition .DELETE -> " ⦸ Deleting"
70
70
}
71
71
72
- ProvisionerJobStatus .SUCCEEDED -> when (workspace .buildTransition) {
72
+ ProvisionerJobStatus .SUCCEEDED -> when (this .buildTransition) {
73
73
WorkspaceBuildTransition .START -> " ⦿ Running"
74
74
WorkspaceBuildTransition .STOP -> " ◍ Stopped"
75
75
WorkspaceBuildTransition .DELETE -> " ⦸ Deleted"
0 commit comments