diff --git a/CHANGELOG.md b/CHANGELOG.md index eac4f6c1..adf978a2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ ### Added - warning system when plugin might not be compatible with Coder REST API - a `Create workspace` button which links to Coder's templates page +- workspace icons ### Changed - redesigned the information&warning banner. Messages can now include hyperlinks @@ -14,6 +15,7 @@ ### Fixed - outdated Coder CLI binaries are cleaned up - workspace status color style: running workspaces are green, failed ones should be red, everything else is gray +- typos in plugin description ## 2.1.2 - 2022-11-23 diff --git a/README.md b/README.md index 0b56aab2..c7392e04 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ Follow](https://img.shields.io/twitter/follow/CoderHQ?label=%40CoderHQ&style=soc [![Coder Gateway Plugin Build](https://github.com/coder/coder-jetbrains/actions/workflows/build.yml/badge.svg)](https://github.com/coder/coder-jetbrains/actions/workflows/build.yml) -**Coder Gateway** connects your Jetbrains IDE to your [Coder Workspaces](https://coder.com/docs/coder-oss/latest/workspaces) so that you can develop from anywhere. +**Coder Gateway** connects your JetBrains IDE to your [Coder Workspaces](https://coder.com/docs/coder-oss/latest/workspaces) so that you can develop from anywhere. **Manage less** diff --git a/src/main/kotlin/com/coder/gateway/icons/CoderIcons.kt b/src/main/kotlin/com/coder/gateway/icons/CoderIcons.kt index 16322770..dbf2b4d8 100644 --- a/src/main/kotlin/com/coder/gateway/icons/CoderIcons.kt +++ b/src/main/kotlin/com/coder/gateway/icons/CoderIcons.kt @@ -5,7 +5,6 @@ import com.intellij.openapi.util.IconLoader object CoderIcons { val LOGO = IconLoader.getIcon("coder_logo.svg", javaClass) val LOGO_16 = IconLoader.getIcon("coder_logo_16.svg", javaClass) - val LOGO_52 = IconLoader.getIcon("coder_logo_52.svg", javaClass) val OPEN_TERMINAL = IconLoader.getIcon("open_terminal.svg", javaClass) @@ -13,15 +12,46 @@ object CoderIcons { val RUN = IconLoader.getIcon("run.svg", javaClass) val STOP = IconLoader.getIcon("stop.svg", javaClass) val UPDATE = IconLoader.getIcon("update.svg", javaClass) + val DELETE = IconLoader.getIcon("delete.svg", javaClass) - val WINDOWS = IconLoader.getIcon("windows.svg", javaClass) - val MACOS = IconLoader.getIcon("macOS.svg", javaClass) - val LINUX = IconLoader.getIcon("linux.svg", javaClass) val UNKNOWN = IconLoader.getIcon("unknown.svg", javaClass) - val GREEN_CIRCLE = IconLoader.getIcon("green_circle.svg", javaClass) - val GRAY_CIRCLE = IconLoader.getIcon("gray_circle.svg", javaClass) - val RED_CIRCLE = IconLoader.getIcon("red_circle.svg", javaClass) + val ZERO = IconLoader.getIcon("0.svg", javaClass) + val ONE = IconLoader.getIcon("1.svg", javaClass) + val TWO = IconLoader.getIcon("2.svg", javaClass) + val THREE = IconLoader.getIcon("3.svg", javaClass) + val FOUR = IconLoader.getIcon("4.svg", javaClass) + val FIVE = IconLoader.getIcon("5.svg", javaClass) + val SIX = IconLoader.getIcon("6.svg", javaClass) + val SEVEN = IconLoader.getIcon("7.svg", javaClass) + val EIGHT = IconLoader.getIcon("8.svg", javaClass) + val NINE = IconLoader.getIcon("9.svg", javaClass) + + val A = IconLoader.getIcon("a.svg", javaClass) + val B = IconLoader.getIcon("b.svg", javaClass) + val C = IconLoader.getIcon("c.svg", javaClass) + val D = IconLoader.getIcon("d.svg", javaClass) + val E = IconLoader.getIcon("e.svg", javaClass) + val F = IconLoader.getIcon("f.svg", javaClass) + val G = IconLoader.getIcon("g.svg", javaClass) + val H = IconLoader.getIcon("h.svg", javaClass) + val I = IconLoader.getIcon("i.svg", javaClass) + val J = IconLoader.getIcon("j.svg", javaClass) + val K = IconLoader.getIcon("k.svg", javaClass) + val L = IconLoader.getIcon("l.svg", javaClass) + val M = IconLoader.getIcon("m.svg", javaClass) + val N = IconLoader.getIcon("n.svg", javaClass) + val O = IconLoader.getIcon("o.svg", javaClass) + val P = IconLoader.getIcon("p.svg", javaClass) + val Q = IconLoader.getIcon("q.svg", javaClass) + val R = IconLoader.getIcon("r.svg", javaClass) + val S = IconLoader.getIcon("s.svg", javaClass) + val T = IconLoader.getIcon("t.svg", javaClass) + val U = IconLoader.getIcon("u.svg", javaClass) + val V = IconLoader.getIcon("v.svg", javaClass) + val W = IconLoader.getIcon("w.svg", javaClass) + val X = IconLoader.getIcon("x.svg", javaClass) + val Y = IconLoader.getIcon("y.svg", javaClass) + val Z = IconLoader.getIcon("z.svg", javaClass) - val DELETE = IconLoader.getIcon("delete.svg", javaClass) } \ No newline at end of file diff --git a/src/main/kotlin/com/coder/gateway/models/WorkspaceAgentModel.kt b/src/main/kotlin/com/coder/gateway/models/WorkspaceAgentModel.kt index 049501c0..91367a6c 100644 --- a/src/main/kotlin/com/coder/gateway/models/WorkspaceAgentModel.kt +++ b/src/main/kotlin/com/coder/gateway/models/WorkspaceAgentModel.kt @@ -4,6 +4,7 @@ import com.coder.gateway.sdk.Arch import com.coder.gateway.sdk.OS import com.coder.gateway.sdk.v2.models.WorkspaceTransition import java.util.UUID +import javax.swing.Icon data class WorkspaceAgentModel( val workspaceID: UUID, @@ -11,6 +12,7 @@ data class WorkspaceAgentModel( val name: String, val templateID: UUID, val templateName: String, + val templateIcon: Icon, val status: WorkspaceVersionStatus, val agentStatus: WorkspaceAgentStatus, val lastBuildTransition: WorkspaceTransition, diff --git a/src/main/kotlin/com/coder/gateway/sdk/CoderRestClientService.kt b/src/main/kotlin/com/coder/gateway/sdk/CoderRestClientService.kt index 2cc56438..c8b2102d 100644 --- a/src/main/kotlin/com/coder/gateway/sdk/CoderRestClientService.kt +++ b/src/main/kotlin/com/coder/gateway/sdk/CoderRestClientService.kt @@ -28,6 +28,7 @@ import java.util.UUID @Service(Service.Level.APP) class CoderRestClientService { + private lateinit var httpClient: OkHttpClient private lateinit var retroRestClient: CoderV2RestFacade private lateinit var sessionToken: String lateinit var coderURL: URL @@ -43,15 +44,14 @@ class CoderRestClientService { .registerTypeAdapter(Instant::class.java, InstantConverter()) .setPrettyPrinting() .create() + httpClient = OkHttpClient.Builder() + .addInterceptor { it.proceed(it.request().newBuilder().addHeader("Coder-Session-Token", token).build()) } + .addInterceptor(HttpLoggingInterceptor().apply { setLevel(HttpLoggingInterceptor.Level.BASIC) }) + .build() retroRestClient = Retrofit.Builder() .baseUrl(url.toString()) - .client( - OkHttpClient.Builder() - .addInterceptor { it.proceed(it.request().newBuilder().addHeader("Coder-Session-Token", token).build()) } - .addInterceptor(HttpLoggingInterceptor().apply { setLevel(HttpLoggingInterceptor.Level.BASIC) }) - .build() - ) + .client(httpClient) .addConverterFactory(GsonConverterFactory.create(gson)) .build() .create(CoderV2RestFacade::class.java) diff --git a/src/main/kotlin/com/coder/gateway/sdk/TemplateIconDownloader.kt b/src/main/kotlin/com/coder/gateway/sdk/TemplateIconDownloader.kt new file mode 100644 index 00000000..89e6a3b9 --- /dev/null +++ b/src/main/kotlin/com/coder/gateway/sdk/TemplateIconDownloader.kt @@ -0,0 +1,80 @@ +package com.coder.gateway.sdk + +import com.coder.gateway.icons.CoderIcons +import com.intellij.openapi.components.Service +import com.intellij.openapi.components.service +import com.intellij.ui.scale.ScaleContext +import com.intellij.util.ImageLoader +import com.intellij.util.ui.ImageUtil +import java.net.URL +import javax.swing.Icon +import javax.swing.ImageIcon + +@Service(Service.Level.APP) +class TemplateIconDownloader { + private val coderClient: CoderRestClientService = service() + + fun load(path: String, templateName: String): Icon { + var url: URL? = null + if (path.startsWith("http")) { + url = path.toURL() + } else if (path.contains(coderClient.coderURL.host)) { + url = coderClient.coderURL.withPath(path) + } + + if (url != null) { + var img = ImageLoader.loadFromUrl(url) + if (img != null) { + if (ImageUtil.getRealHeight(img) > 32 && ImageUtil.getRealWidth(img) > 32) { + img = ImageUtil.resize(img, 32, ScaleContext.create()) + } + return ImageIcon(img) + } + } + + return iconForChar(templateName.lowercase().first()) + } + + private fun iconForChar(c: Char) = when (c) { + '0' -> CoderIcons.ZERO + '1' -> CoderIcons.ONE + '2' -> CoderIcons.TWO + '3' -> CoderIcons.THREE + '4' -> CoderIcons.FOUR + '5' -> CoderIcons.FIVE + '6' -> CoderIcons.SIX + '7' -> CoderIcons.SEVEN + '8' -> CoderIcons.EIGHT + '9' -> CoderIcons.NINE + + 'a' -> CoderIcons.A + 'b' -> CoderIcons.B + 'c' -> CoderIcons.C + 'd' -> CoderIcons.D + 'e' -> CoderIcons.E + 'f' -> CoderIcons.F + 'g' -> CoderIcons.G + 'h' -> CoderIcons.H + 'i' -> CoderIcons.I + 'j' -> CoderIcons.J + 'k' -> CoderIcons.K + 'l' -> CoderIcons.L + 'm' -> CoderIcons.M + 'n' -> CoderIcons.N + 'o' -> CoderIcons.O + 'p' -> CoderIcons.P + 'q' -> CoderIcons.Q + 'r' -> CoderIcons.R + 's' -> CoderIcons.S + 't' -> CoderIcons.T + 'u' -> CoderIcons.U + 'v' -> CoderIcons.V + 'w' -> CoderIcons.W + 'x' -> CoderIcons.X + 'y' -> CoderIcons.Y + 'z' -> CoderIcons.Z + + else -> CoderIcons.UNKNOWN + } + +} \ No newline at end of file diff --git a/src/main/kotlin/com/coder/gateway/views/steps/CoderWorkspacesStepView.kt b/src/main/kotlin/com/coder/gateway/views/steps/CoderWorkspacesStepView.kt index 9b19a9b3..fdb7dc8e 100644 --- a/src/main/kotlin/com/coder/gateway/views/steps/CoderWorkspacesStepView.kt +++ b/src/main/kotlin/com/coder/gateway/views/steps/CoderWorkspacesStepView.kt @@ -15,6 +15,7 @@ import com.coder.gateway.sdk.CoderCLIManager import com.coder.gateway.sdk.CoderRestClientService import com.coder.gateway.sdk.CoderSemVer import com.coder.gateway.sdk.OS +import com.coder.gateway.sdk.TemplateIconDownloader import com.coder.gateway.sdk.ex.AuthenticationResponseException import com.coder.gateway.sdk.ex.TemplateResponseException import com.coder.gateway.sdk.ex.WorkspaceResponseException @@ -83,6 +84,8 @@ class CoderWorkspacesStepView(val enableNextButtonCallback: (Boolean) -> Unit) : private val cs = CoroutineScope(Dispatchers.Main) private var localWizardModel = CoderWorkspacesWizardModel() private val coderClient: CoderRestClientService = service() + private val iconDownloader: TemplateIconDownloader = service() + private val appPropertiesService: PropertiesComponent = service() private var tfUrl: JTextField? = null @@ -448,6 +451,7 @@ class CoderWorkspacesStepView(val enableNextButtonCallback: (Boolean) -> Unit) : this.name, this.templateID, this.templateName, + iconDownloader.load(this@agentModels.templateIcon, this.name), WorkspaceVersionStatus.from(this), WorkspaceAgentStatus.from(this), this.latestBuild.transition, @@ -466,6 +470,7 @@ class CoderWorkspacesStepView(val enableNextButtonCallback: (Boolean) -> Unit) : workspaceWithAgentName, this.templateID, this.templateName, + iconDownloader.load(this@agentModels.templateIcon, workspaceWithAgentName), WorkspaceVersionStatus.from(this), WorkspaceAgentStatus.from(this), this.latestBuild.transition, @@ -484,6 +489,7 @@ class CoderWorkspacesStepView(val enableNextButtonCallback: (Boolean) -> Unit) : this.name, this.templateID, this.templateName, + iconDownloader.load(this@agentModels.templateIcon, this.name), WorkspaceVersionStatus.from(this), WorkspaceAgentStatus.from(this), this.latestBuild.transition, @@ -550,15 +556,16 @@ class CoderWorkspacesStepView(val enableNextButtonCallback: (Boolean) -> Unit) : } override fun getIcon(value: String, table: JTable?, row: Int): Icon { - return when (OS.from(value)) { - OS.LINUX -> CoderIcons.LINUX - OS.WINDOWS -> CoderIcons.WINDOWS - OS.MAC -> CoderIcons.MACOS - else -> CoderIcons.UNKNOWN - } + return item?.templateIcon ?: CoderIcons.UNKNOWN } override fun isCenterAlignment() = true + + override fun getTableCellRendererComponent(table: JTable?, value: Any?, selected: Boolean, focus: Boolean, row: Int, column: Int): Component { + return super.getTableCellRendererComponent(table, value, selected, focus, row, column).apply { + border = JBUI.Borders.empty(10, 10) + } + } } } } diff --git a/src/main/resources/0.svg b/src/main/resources/0.svg new file mode 100644 index 00000000..b029dbe8 --- /dev/null +++ b/src/main/resources/0.svg @@ -0,0 +1,4 @@ + + + 0 + \ No newline at end of file diff --git a/src/main/resources/1.svg b/src/main/resources/1.svg new file mode 100644 index 00000000..c4dd6526 --- /dev/null +++ b/src/main/resources/1.svg @@ -0,0 +1,4 @@ + + + 1 + \ No newline at end of file diff --git a/src/main/resources/2.svg b/src/main/resources/2.svg new file mode 100644 index 00000000..7bbc4ca9 --- /dev/null +++ b/src/main/resources/2.svg @@ -0,0 +1,4 @@ + + + 2 + \ No newline at end of file diff --git a/src/main/resources/3.svg b/src/main/resources/3.svg new file mode 100644 index 00000000..550fb776 --- /dev/null +++ b/src/main/resources/3.svg @@ -0,0 +1,4 @@ + + + 3 + \ No newline at end of file diff --git a/src/main/resources/4.svg b/src/main/resources/4.svg new file mode 100644 index 00000000..148ee7c2 --- /dev/null +++ b/src/main/resources/4.svg @@ -0,0 +1,4 @@ + + + 4 + \ No newline at end of file diff --git a/src/main/resources/5.svg b/src/main/resources/5.svg new file mode 100644 index 00000000..6a40682e --- /dev/null +++ b/src/main/resources/5.svg @@ -0,0 +1,4 @@ + + + 5 + \ No newline at end of file diff --git a/src/main/resources/6.svg b/src/main/resources/6.svg new file mode 100644 index 00000000..6cf682f6 --- /dev/null +++ b/src/main/resources/6.svg @@ -0,0 +1,4 @@ + + + 6 + \ No newline at end of file diff --git a/src/main/resources/7.svg b/src/main/resources/7.svg new file mode 100644 index 00000000..b1ed89e3 --- /dev/null +++ b/src/main/resources/7.svg @@ -0,0 +1,4 @@ + + + 7 + \ No newline at end of file diff --git a/src/main/resources/8.svg b/src/main/resources/8.svg new file mode 100644 index 00000000..26726836 --- /dev/null +++ b/src/main/resources/8.svg @@ -0,0 +1,4 @@ + + + 8 + \ No newline at end of file diff --git a/src/main/resources/9.svg b/src/main/resources/9.svg new file mode 100644 index 00000000..986e77ed --- /dev/null +++ b/src/main/resources/9.svg @@ -0,0 +1,4 @@ + + + 9 + \ No newline at end of file diff --git a/src/main/resources/META-INF/plugin.xml b/src/main/resources/META-INF/plugin.xml index b7a7aade..a020df3b 100644 --- a/src/main/resources/META-INF/plugin.xml +++ b/src/main/resources/META-INF/plugin.xml @@ -13,6 +13,7 @@ + diff --git a/src/main/resources/a.svg b/src/main/resources/a.svg new file mode 100644 index 00000000..849916d9 --- /dev/null +++ b/src/main/resources/a.svg @@ -0,0 +1,4 @@ + + + A + \ No newline at end of file diff --git a/src/main/resources/b.svg b/src/main/resources/b.svg new file mode 100644 index 00000000..ee63cd69 --- /dev/null +++ b/src/main/resources/b.svg @@ -0,0 +1,4 @@ + + + B + \ No newline at end of file diff --git a/src/main/resources/c.svg b/src/main/resources/c.svg new file mode 100644 index 00000000..75965495 --- /dev/null +++ b/src/main/resources/c.svg @@ -0,0 +1,4 @@ + + + C + \ No newline at end of file diff --git a/src/main/resources/coder_logo_52.svg b/src/main/resources/coder_logo_52.svg deleted file mode 100644 index 82550043..00000000 --- a/src/main/resources/coder_logo_52.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/src/main/resources/coder_logo_52_dark.svg b/src/main/resources/coder_logo_52_dark.svg deleted file mode 100644 index 64d036ad..00000000 --- a/src/main/resources/coder_logo_52_dark.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/src/main/resources/d.svg b/src/main/resources/d.svg new file mode 100644 index 00000000..f7ec9256 --- /dev/null +++ b/src/main/resources/d.svg @@ -0,0 +1,4 @@ + + + D + \ No newline at end of file diff --git a/src/main/resources/e.svg b/src/main/resources/e.svg new file mode 100644 index 00000000..745679fe --- /dev/null +++ b/src/main/resources/e.svg @@ -0,0 +1,4 @@ + + + E + \ No newline at end of file diff --git a/src/main/resources/f.svg b/src/main/resources/f.svg new file mode 100644 index 00000000..bc3dfdd7 --- /dev/null +++ b/src/main/resources/f.svg @@ -0,0 +1,4 @@ + + + F + \ No newline at end of file diff --git a/src/main/resources/g.svg b/src/main/resources/g.svg new file mode 100644 index 00000000..8748b224 --- /dev/null +++ b/src/main/resources/g.svg @@ -0,0 +1,4 @@ + + + G + \ No newline at end of file diff --git a/src/main/resources/gray_circle.svg b/src/main/resources/gray_circle.svg deleted file mode 100644 index 4773ff5f..00000000 --- a/src/main/resources/gray_circle.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/main/resources/green_circle.svg b/src/main/resources/green_circle.svg deleted file mode 100644 index e57699ac..00000000 --- a/src/main/resources/green_circle.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/src/main/resources/h.svg b/src/main/resources/h.svg new file mode 100644 index 00000000..171b5d3c --- /dev/null +++ b/src/main/resources/h.svg @@ -0,0 +1,4 @@ + + + H + \ No newline at end of file diff --git a/src/main/resources/i.svg b/src/main/resources/i.svg new file mode 100644 index 00000000..558d299b --- /dev/null +++ b/src/main/resources/i.svg @@ -0,0 +1,4 @@ + + + I + \ No newline at end of file diff --git a/src/main/resources/j.svg b/src/main/resources/j.svg new file mode 100644 index 00000000..16cf7645 --- /dev/null +++ b/src/main/resources/j.svg @@ -0,0 +1,4 @@ + + + J + \ No newline at end of file diff --git a/src/main/resources/k.svg b/src/main/resources/k.svg new file mode 100644 index 00000000..5edd63f6 --- /dev/null +++ b/src/main/resources/k.svg @@ -0,0 +1,4 @@ + + + K + \ No newline at end of file diff --git a/src/main/resources/l.svg b/src/main/resources/l.svg new file mode 100644 index 00000000..700bc56a --- /dev/null +++ b/src/main/resources/l.svg @@ -0,0 +1,4 @@ + + + L + \ No newline at end of file diff --git a/src/main/resources/linux.svg b/src/main/resources/linux.svg deleted file mode 100644 index bb4ba0c2..00000000 --- a/src/main/resources/linux.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/src/main/resources/m.svg b/src/main/resources/m.svg new file mode 100644 index 00000000..b61931c2 --- /dev/null +++ b/src/main/resources/m.svg @@ -0,0 +1,4 @@ + + + M + \ No newline at end of file diff --git a/src/main/resources/macOS.svg b/src/main/resources/macOS.svg deleted file mode 100644 index b61e0cfa..00000000 --- a/src/main/resources/macOS.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - diff --git a/src/main/resources/messages/CoderGatewayBundle.properties b/src/main/resources/messages/CoderGatewayBundle.properties index 13ad7cda..8611e344 100644 --- a/src/main/resources/messages/CoderGatewayBundle.properties +++ b/src/main/resources/messages/CoderGatewayBundle.properties @@ -6,7 +6,7 @@ gateway.connector.view.login.url.label=URL: gateway.connector.view.login.token.dialog=Paste your token here: gateway.connector.view.login.token.label=Session Token: gateway.connector.view.coder.workspaces.header.text=Coder Workspaces -gateway.connector.view.coder.workspaces.comment=Self-hosted developer workspaces in the cloud or on premise. Coder empower developers with secure, consistent, and fast developer workspaces. +gateway.connector.view.coder.workspaces.comment=Self-hosted developer workspaces in the cloud or on-premises. Coder empowers developers with secure, consistent, and fast developer workspaces. gateway.connector.view.coder.workspaces.connect.text=Connect gateway.connector.view.coder.workspaces.cli.downloader.dialog.title=Authenticate and setup Coder gateway.connector.view.coder.workspaces.cli.configssh.dialog.title=Coder Config SSH diff --git a/src/main/resources/n.svg b/src/main/resources/n.svg new file mode 100644 index 00000000..fb104f66 --- /dev/null +++ b/src/main/resources/n.svg @@ -0,0 +1,4 @@ + + + N + \ No newline at end of file diff --git a/src/main/resources/o.svg b/src/main/resources/o.svg new file mode 100644 index 00000000..a7d79677 --- /dev/null +++ b/src/main/resources/o.svg @@ -0,0 +1,4 @@ + + + O + \ No newline at end of file diff --git a/src/main/resources/p.svg b/src/main/resources/p.svg new file mode 100644 index 00000000..9c659bc2 --- /dev/null +++ b/src/main/resources/p.svg @@ -0,0 +1,4 @@ + + + P + \ No newline at end of file diff --git a/src/main/resources/q.svg b/src/main/resources/q.svg new file mode 100644 index 00000000..71269a1f --- /dev/null +++ b/src/main/resources/q.svg @@ -0,0 +1,4 @@ + + + Q + \ No newline at end of file diff --git a/src/main/resources/r.svg b/src/main/resources/r.svg new file mode 100644 index 00000000..c01b88bf --- /dev/null +++ b/src/main/resources/r.svg @@ -0,0 +1,4 @@ + + + R + \ No newline at end of file diff --git a/src/main/resources/red_circle.svg b/src/main/resources/red_circle.svg deleted file mode 100644 index 001b82d1..00000000 --- a/src/main/resources/red_circle.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/main/resources/s.svg b/src/main/resources/s.svg new file mode 100644 index 00000000..81c42951 --- /dev/null +++ b/src/main/resources/s.svg @@ -0,0 +1,4 @@ + + + S + \ No newline at end of file diff --git a/src/main/resources/t.svg b/src/main/resources/t.svg new file mode 100644 index 00000000..f50bfd78 --- /dev/null +++ b/src/main/resources/t.svg @@ -0,0 +1,4 @@ + + + T + \ No newline at end of file diff --git a/src/main/resources/u.svg b/src/main/resources/u.svg new file mode 100644 index 00000000..743acab9 --- /dev/null +++ b/src/main/resources/u.svg @@ -0,0 +1,4 @@ + + + U + \ No newline at end of file diff --git a/src/main/resources/v.svg b/src/main/resources/v.svg new file mode 100644 index 00000000..bfe4c922 --- /dev/null +++ b/src/main/resources/v.svg @@ -0,0 +1,4 @@ + + + V + \ No newline at end of file diff --git a/src/main/resources/w.svg b/src/main/resources/w.svg new file mode 100644 index 00000000..4ada3db1 --- /dev/null +++ b/src/main/resources/w.svg @@ -0,0 +1,4 @@ + + + W + \ No newline at end of file diff --git a/src/main/resources/windows.svg b/src/main/resources/windows.svg deleted file mode 100644 index 34bcd78b..00000000 --- a/src/main/resources/windows.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/src/main/resources/x.svg b/src/main/resources/x.svg new file mode 100644 index 00000000..83a30626 --- /dev/null +++ b/src/main/resources/x.svg @@ -0,0 +1,4 @@ + + + X + \ No newline at end of file diff --git a/src/main/resources/y.svg b/src/main/resources/y.svg new file mode 100644 index 00000000..01335cbc --- /dev/null +++ b/src/main/resources/y.svg @@ -0,0 +1,4 @@ + + + Y + \ No newline at end of file diff --git a/src/main/resources/z.svg b/src/main/resources/z.svg new file mode 100644 index 00000000..3511cf77 --- /dev/null +++ b/src/main/resources/z.svg @@ -0,0 +1,4 @@ + + + Z + \ No newline at end of file