Skip to content

Commit cb3f576

Browse files
committed
Refactor: centralize icons
- load icons only once - group icons in a single place
1 parent 05dac38 commit cb3f576

7 files changed

+42
-29
lines changed

src/main/kotlin/com/coder/gateway/CoderGatewayMainView.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.coder.gateway
22

3+
import com.coder.gateway.icons.CoderIcons
34
import com.coder.gateway.views.CoderGatewayConnectorWizardWrapperView
4-
import com.intellij.ui.IconManager
55
import com.intellij.ui.components.ActionLink
66
import com.intellij.ui.components.BrowserLink
77
import com.jetbrains.gateway.api.GatewayConnector
@@ -12,7 +12,7 @@ import javax.swing.JComponent
1212

1313
class CoderGatewayMainView : GatewayConnector {
1414
override val icon: Icon
15-
get() = IconManager.getInstance().getIcon("coder_logo.svg", this::class.java)
15+
get() = CoderIcons.LOGO
1616

1717
override fun createView(lifetime: Lifetime): GatewayConnectorView {
1818
return CoderGatewayConnectorWizardWrapperView()
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.coder.gateway.icons
2+
3+
import com.intellij.openapi.util.IconLoader
4+
5+
object CoderIcons {
6+
val LOGO = IconLoader.getIcon("coder_logo.svg", javaClass)
7+
val LOGO_16 = IconLoader.getIcon("coder_logo_16.svg", javaClass)
8+
val LOGO_52 = IconLoader.getIcon("coder_logo_52.svg", javaClass)
9+
10+
val OPEN_TERMINAL = IconLoader.getIcon("open_terminal.svg", javaClass)
11+
12+
val UBUNTU = IconLoader.getIcon("ubuntu.svg", javaClass)
13+
val CENTOS = IconLoader.getIcon("centos.svg", javaClass)
14+
val LINUX = IconLoader.getIcon("linux.svg", javaClass)
15+
16+
val GREEN_CIRCLE = IconLoader.getIcon("green_circle.svg", javaClass)
17+
val GRAY_CIRCLE = IconLoader.getIcon("gray_circle.svg", javaClass)
18+
val RED_CIRCLE = IconLoader.getIcon("red_circle.svg", javaClass)
19+
}

src/main/kotlin/com/coder/gateway/views/CoderGatewayConnectionComponent.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.coder.gateway.views
22

3+
import com.coder.gateway.icons.CoderIcons
34
import com.intellij.openapi.util.Disposer
4-
import com.intellij.ui.IconManager
55
import com.intellij.ui.components.JBLabel
66
import com.intellij.util.ui.components.BorderLayoutPanel
77
import com.jetbrains.rd.util.lifetime.Lifetime
@@ -10,7 +10,7 @@ import com.jetbrains.rd.util.lifetime.onTermination
1010
class CoderGatewayConnectionComponent(val lifetime: Lifetime, val url: String) : BorderLayoutPanel() {
1111
private val disposable = Disposer.newDisposable()
1212
private val mainPanel = BorderLayoutPanel().apply {
13-
add(JBLabel(IconManager.getInstance().getIcon("coder_logo_52.svg", CoderGatewayConnectionComponent::class.java)), "Center")
13+
add(JBLabel(CoderIcons.LOGO_52), "Center")
1414
}
1515

1616
init {

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

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.coder.gateway.views.steps
22

33
import com.coder.gateway.CoderGatewayBundle
4+
import com.coder.gateway.icons.CoderIcons
45
import com.coder.gateway.models.CoderWorkspacesWizardModel
56
import com.coder.gateway.sdk.CoderCLIManager
67
import com.coder.gateway.sdk.CoderRestClientService
@@ -20,7 +21,6 @@ import com.intellij.openapi.progress.Task
2021
import com.intellij.openapi.ui.panel.ComponentPanelBuilder
2122
import com.intellij.openapi.wm.impl.welcomeScreen.WelcomeScreenUIManager
2223
import com.intellij.ui.AppIcon
23-
import com.intellij.ui.IconManager
2424
import com.intellij.ui.components.JBTextField
2525
import com.intellij.ui.components.dialog
2626
import com.intellij.ui.dsl.builder.BottomGap
@@ -47,7 +47,7 @@ class CoderAuthStepView : CoderWorkspacesWizardStep, Disposable {
4747
row {
4848
label(CoderGatewayBundle.message("gateway.connector.view.login.header.text")).applyToComponent {
4949
font = JBFont.h3().asBold()
50-
icon = IconManager.getInstance().getIcon("coder_logo_16.svg", this@CoderAuthStepView::class.java)
50+
icon = CoderIcons.LOGO_16
5151
}
5252
}.topGap(TopGap.SMALL).bottomGap(BottomGap.MEDIUM)
5353
row {

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

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.coder.gateway.views.steps
22

33
import com.coder.gateway.CoderGatewayBundle
4+
import com.coder.gateway.icons.CoderIcons
45
import com.coder.gateway.models.CoderWorkspacesWizardModel
56
import com.coder.gateway.sdk.CoderRestClientService
67
import com.coder.gateway.views.LazyBrowserLink
@@ -12,7 +13,6 @@ import com.intellij.openapi.wm.impl.welcomeScreen.WelcomeScreenUIManager
1213
import com.intellij.remote.AuthType
1314
import com.intellij.remote.RemoteCredentialsHolder
1415
import com.intellij.ui.AnimatedIcon
15-
import com.intellij.ui.IconManager
1616
import com.intellij.ui.components.JBTextField
1717
import com.intellij.ui.dsl.builder.BottomGap
1818
import com.intellij.ui.dsl.builder.RowLayout
@@ -61,7 +61,7 @@ class CoderLocateRemoteProjectStepView : CoderWorkspacesWizardStep, Disposable {
6161
row {
6262
titleLabel = label("").applyToComponent {
6363
font = JBFont.h3().asBold()
64-
icon = IconManager.getInstance().getIcon("coder_logo_16.svg", this@CoderLocateRemoteProjectStepView::class.java)
64+
icon = CoderIcons.LOGO_16
6565
}.component
6666
}.bottomGap(BottomGap.MEDIUM)
6767

@@ -87,7 +87,7 @@ class CoderLocateRemoteProjectStepView : CoderWorkspacesWizardStep, Disposable {
8787
cell()
8888
terminalLink = cell(
8989
LazyBrowserLink(
90-
IconManager.getInstance().getIcon("open_terminal.svg", this::class.java),
90+
CoderIcons.OPEN_TERMINAL,
9191
"Open Terminal"
9292
)
9393
).component

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

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.coder.gateway.views.steps
22

33
import com.coder.gateway.CoderGatewayBundle
4+
import com.coder.gateway.icons.CoderIcons
45
import com.coder.gateway.models.CoderWorkspacesWizardModel
56
import com.coder.gateway.sdk.CoderRestClientService
67
import com.coder.gateway.sdk.v2.models.Workspace
@@ -9,7 +10,6 @@ import com.intellij.openapi.Disposable
910
import com.intellij.openapi.application.ApplicationManager
1011
import com.intellij.openapi.wm.impl.welcomeScreen.WelcomeScreenUIManager
1112
import com.intellij.ui.CollectionListModel
12-
import com.intellij.ui.IconManager
1313
import com.intellij.ui.components.JBList
1414
import com.intellij.ui.dsl.builder.BottomGap
1515
import com.intellij.ui.dsl.builder.TopGap
@@ -37,7 +37,7 @@ class CoderWorkspacesStepView : CoderWorkspacesWizardStep, Disposable {
3737
row {
3838
label(CoderGatewayBundle.message("gateway.connector.view.coder.workspaces.choose.text")).applyToComponent {
3939
font = JBFont.h3().asBold()
40-
icon = IconManager.getInstance().getIcon("coder_logo_16.svg", this@CoderWorkspacesStepView::class.java)
40+
icon = CoderIcons.LOGO_16
4141
}
4242
}.bottomGap(BottomGap.MEDIUM)
4343
row {

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

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

3+
import com.coder.gateway.icons.CoderIcons.CENTOS
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.LINUX
7+
import com.coder.gateway.icons.CoderIcons.RED_CIRCLE
8+
import com.coder.gateway.icons.CoderIcons.UBUNTU
39
import com.coder.gateway.sdk.v2.models.ProvisionerJobStatus
410
import com.coder.gateway.sdk.v2.models.Workspace
511
import com.coder.gateway.sdk.v2.models.WorkspaceBuildTransition
6-
import com.intellij.ui.IconManager
712
import com.intellij.ui.dsl.builder.panel
813
import com.intellij.util.ui.JBFont
914
import java.awt.Component
@@ -40,17 +45,17 @@ class WorkspaceCellRenderer : ListCellRenderer<Workspace> {
4045
}
4146

4247
private fun iconForImageTag(workspace: Workspace) = when (workspace.templateName) {
43-
"ubuntu" -> UBUNTU_ICON
44-
"centos" -> CENTOS_ICON
45-
else -> LINUX_ICON
48+
"ubuntu" -> UBUNTU
49+
"centos" -> CENTOS
50+
else -> LINUX
4651
}
4752

4853
private fun iconForStatus(workspace: Workspace) = when (workspace.latestBuild.job.status) {
49-
ProvisionerJobStatus.succeeded -> if (workspace.latestBuild.workspaceTransition == WorkspaceBuildTransition.start) GREEN_CIRCLE_ICON else RED_CIRCLE_ICON
54+
ProvisionerJobStatus.succeeded -> if (workspace.latestBuild.workspaceTransition == WorkspaceBuildTransition.start) GREEN_CIRCLE else RED_CIRCLE
5055
ProvisionerJobStatus.running -> when (workspace.latestBuild.workspaceTransition) {
51-
WorkspaceBuildTransition.start, WorkspaceBuildTransition.stop, WorkspaceBuildTransition.delete -> GRAY_CIRCLE_ICON
56+
WorkspaceBuildTransition.start, WorkspaceBuildTransition.stop, WorkspaceBuildTransition.delete -> GRAY_CIRCLE
5257
}
53-
else -> RED_CIRCLE_ICON
58+
else -> RED_CIRCLE
5459
}
5560

5661
private fun labelForStatus(workspace: Workspace) = when (workspace.latestBuild.job.status) {
@@ -69,15 +74,4 @@ class WorkspaceCellRenderer : ListCellRenderer<Workspace> {
6974
ProvisionerJobStatus.canceled -> "◍ Canceled action"
7075
ProvisionerJobStatus.failed -> "ⓧ Failed"
7176
}
72-
73-
companion object {
74-
val UBUNTU_ICON = IconManager.getInstance().getIcon("ubuntu.svg", this::class.java)
75-
val CENTOS_ICON = IconManager.getInstance().getIcon("centos.svg", this::class.java)
76-
val LINUX_ICON = IconManager.getInstance().getIcon("linux.svg", this::class.java)
77-
78-
79-
val GREEN_CIRCLE_ICON = IconManager.getInstance().getIcon("green_circle.svg", this::class.java)
80-
val GRAY_CIRCLE_ICON = IconManager.getInstance().getIcon("gray_circle.svg", this::class.java)
81-
val RED_CIRCLE_ICON = IconManager.getInstance().getIcon("red_circle.svg", this::class.java)
82-
}
8377
}

0 commit comments

Comments
 (0)