Skip to content

Commit 46d282f

Browse files
committed
Fix: leave only one status bubble
- and also color the status label with the same color as the bubble - resolves #41
1 parent e0ad549 commit 46d282f

File tree

1 file changed

+15
-15
lines changed

1 file changed

+15
-15
lines changed

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

+15-15
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,14 @@
11
package com.coder.gateway.views.steps
22

33
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
74
import com.coder.gateway.models.WorkspaceAgentModel
85
import com.coder.gateway.sdk.OS
96
import com.coder.gateway.sdk.v2.models.ProvisionerJobStatus
107
import com.coder.gateway.sdk.v2.models.WorkspaceBuildTransition
118
import com.intellij.ui.dsl.builder.panel
129
import com.intellij.ui.dsl.gridLayout.HorizontalAlign
1310
import com.intellij.util.ui.JBFont
11+
import java.awt.Color
1412
import java.awt.Component
1513
import javax.swing.JList
1614
import 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

Comments
 (0)