Skip to content

Commit aa60ea8

Browse files
committed
impl: update class usages (1)
- to reflect the new toolbox api
1 parent cc0bdea commit aa60ea8

File tree

6 files changed

+65
-58
lines changed

6 files changed

+65
-58
lines changed

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

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

3-
import com.jetbrains.toolbox.gateway.GatewayExtension
4-
import com.jetbrains.toolbox.gateway.PluginSecretStore
5-
import com.jetbrains.toolbox.gateway.PluginSettingsStore
6-
import com.jetbrains.toolbox.gateway.RemoteEnvironmentConsumer
7-
import com.jetbrains.toolbox.gateway.RemoteProvider
8-
import com.jetbrains.toolbox.gateway.ToolboxServiceLocator
9-
import com.jetbrains.toolbox.gateway.ui.ObservablePropertiesFactory
10-
import com.jetbrains.toolbox.gateway.ui.ToolboxUi
3+
import com.jetbrains.toolbox.api.core.PluginSecretStore
4+
import com.jetbrains.toolbox.api.core.PluginSettingsStore
5+
import com.jetbrains.toolbox.api.core.ServiceLocator
6+
import com.jetbrains.toolbox.api.remoteDev.RemoteDevExtension
7+
import com.jetbrains.toolbox.api.remoteDev.RemoteEnvironmentConsumer
8+
import com.jetbrains.toolbox.api.remoteDev.RemoteProvider
9+
import com.jetbrains.toolbox.api.ui.ToolboxUi
10+
import com.jetbrains.toolbox.api.ui.observables.ObservablePropertiesFactory
1111
import kotlinx.coroutines.CoroutineScope
1212
import okhttp3.OkHttpClient
1313

1414
/**
1515
* Entry point into the extension.
1616
*/
17-
class CoderGatewayExtension : GatewayExtension {
17+
class CoderGatewayExtension : RemoteDevExtension {
1818
// All services must be passed in here and threaded as necessary.
19-
override fun createRemoteProviderPluginInstance(serviceLocator: ToolboxServiceLocator): RemoteProvider = CoderRemoteProvider(
19+
override fun createRemoteProviderPluginInstance(serviceLocator: ServiceLocator): RemoteProvider = CoderRemoteProvider(
2020
serviceLocator.getService(OkHttpClient::class.java),
2121
serviceLocator.getService(RemoteEnvironmentConsumer::class.java),
2222
serviceLocator.getService(CoroutineScope::class.java),

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

+16-10
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,14 @@ import com.coder.gateway.models.WorkspaceAndAgentStatus
44
import com.coder.gateway.sdk.CoderRestClient
55
import com.coder.gateway.sdk.v2.models.Workspace
66
import com.coder.gateway.sdk.v2.models.WorkspaceAgent
7-
import com.coder.gateway.util.withPath
87
import com.coder.gateway.views.Action
98
import com.coder.gateway.views.EnvironmentView
10-
import com.jetbrains.toolbox.gateway.AbstractRemoteProviderEnvironment
11-
import com.jetbrains.toolbox.gateway.EnvironmentVisibilityState
12-
import com.jetbrains.toolbox.gateway.environments.EnvironmentContentsView
13-
import com.jetbrains.toolbox.gateway.states.EnvironmentStateConsumer
14-
import com.jetbrains.toolbox.gateway.ui.ObservablePropertiesFactory
15-
import com.jetbrains.toolbox.gateway.ui.ToolboxUi
9+
import com.jetbrains.toolbox.api.remoteDev.AbstractRemoteProviderEnvironment
10+
import com.jetbrains.toolbox.api.remoteDev.EnvironmentVisibilityState
11+
import com.jetbrains.toolbox.api.remoteDev.environments.EnvironmentContentsView
12+
import com.jetbrains.toolbox.api.remoteDev.states.EnvironmentStateConsumer
13+
import com.jetbrains.toolbox.api.ui.ToolboxUi
14+
import com.jetbrains.toolbox.api.ui.observables.ObservablePropertiesFactory
1615
import java.util.concurrent.CompletableFuture
1716

1817
/**
@@ -34,17 +33,20 @@ class CoderRemoteEnvironment(
3433
init {
3534
actionsList.add(
3635
Action("Open web terminal") {
37-
ui.openUrl(client.url.withPath("/${workspace.ownerName}/$name/terminal").toString())
36+
// TODO - check this later
37+
// ui.openUrl(client.url.withPath("/${workspace.ownerName}/$name/terminal").toString())
3838
},
3939
)
4040
actionsList.add(
4141
Action("Open in dashboard") {
42-
ui.openUrl(client.url.withPath("/@${workspace.ownerName}/${workspace.name}").toString())
42+
// TODO - check this later
43+
// ui.openUrl(client.url.withPath("/@${workspace.ownerName}/${workspace.name}").toString())
4344
},
4445
)
4546
actionsList.add(
4647
Action("View template") {
47-
ui.openUrl(client.url.withPath("/templates/${workspace.templateName}").toString())
48+
// TODO - check this later
49+
// ui.openUrl(client.url.withPath("/templates/${workspace.templateName}").toString())
4850
},
4951
)
5052
actionsList.add(
@@ -112,6 +114,10 @@ class CoderRemoteEnvironment(
112114
return super.addStateListener(consumer)
113115
}
114116

117+
override fun onDelete() {
118+
throw NotImplementedError()
119+
}
120+
115121
/**
116122
* An environment is equal if it has the same ID.
117123
*/

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

+16-13
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,17 @@ import com.coder.gateway.views.ConnectPage
1616
import com.coder.gateway.views.NewEnvironmentPage
1717
import com.coder.gateway.views.SignInPage
1818
import com.coder.gateway.views.TokenPage
19-
import com.jetbrains.toolbox.gateway.PluginSecretStore
20-
import com.jetbrains.toolbox.gateway.PluginSettingsStore
21-
import com.jetbrains.toolbox.gateway.ProviderVisibilityState
22-
import com.jetbrains.toolbox.gateway.RemoteEnvironmentConsumer
23-
import com.jetbrains.toolbox.gateway.RemoteProvider
24-
import com.jetbrains.toolbox.gateway.ui.AccountDropdownField
25-
import com.jetbrains.toolbox.gateway.ui.ObservablePropertiesFactory
26-
import com.jetbrains.toolbox.gateway.ui.RunnableActionDescription
27-
import com.jetbrains.toolbox.gateway.ui.ToolboxUi
28-
import com.jetbrains.toolbox.gateway.ui.UiPage
19+
import com.jetbrains.toolbox.api.core.PluginSecretStore
20+
import com.jetbrains.toolbox.api.core.PluginSettingsStore
21+
import com.jetbrains.toolbox.api.core.ui.icons.SvgIcon
22+
import com.jetbrains.toolbox.api.remoteDev.ProviderVisibilityState
23+
import com.jetbrains.toolbox.api.remoteDev.RemoteEnvironmentConsumer
24+
import com.jetbrains.toolbox.api.remoteDev.RemoteProvider
25+
import com.jetbrains.toolbox.api.ui.ToolboxUi
26+
import com.jetbrains.toolbox.api.ui.actions.RunnableActionDescription
27+
import com.jetbrains.toolbox.api.ui.components.AccountDropdownField
28+
import com.jetbrains.toolbox.api.ui.components.UiPage
29+
import com.jetbrains.toolbox.api.ui.observables.ObservablePropertiesFactory
2930
import kotlinx.coroutines.CoroutineScope
3031
import kotlinx.coroutines.Job
3132
import kotlinx.coroutines.delay
@@ -186,8 +187,9 @@ class CoderRemoteProvider(
186187
}
187188

188189
override fun getName(): String = "Coder Gateway"
189-
override fun getSvgIcon(): ByteArray =
190-
this::class.java.getResourceAsStream("/icon.svg")?.readAllBytes() ?: byteArrayOf()
190+
override fun getSvgIcon(): SvgIcon =
191+
SvgIcon(this::class.java.getResourceAsStream("/icon.svg")?.readAllBytes() ?: byteArrayOf())
192+
191193
override fun getNoEnvironmentsSvgIcon(): ByteArray =
192194
this::class.java.getResourceAsStream("/icon.svg")?.readAllBytes() ?: byteArrayOf()
193195

@@ -254,7 +256,8 @@ class CoderRemoteProvider(
254256
* than using multiple root pages.
255257
*/
256258
private fun reset() {
257-
ui.showPluginEnvironmentsPage()
259+
// TODO - check this later
260+
// ui.showPluginEnvironmentsPage()
258261
}
259262

260263
/**

src/main/kotlin/com/coder/gateway/services/CoderSecretsService.kt

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

3-
import com.jetbrains.toolbox.gateway.PluginSecretStore
3+
import com.jetbrains.toolbox.api.core.PluginSecretStore
4+
45

56
/**
67
* Provides Coder secrets backed by the secrets store service.

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

+16-19
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
package com.coder.gateway.views
22

3-
import com.jetbrains.toolbox.gateway.ui.RunnableActionDescription
4-
import com.jetbrains.toolbox.gateway.ui.UiField
5-
import com.jetbrains.toolbox.gateway.ui.UiPage
6-
import com.jetbrains.toolbox.gateway.ui.ValidationErrorField
3+
import com.jetbrains.toolbox.api.core.ui.icons.SvgIcon
4+
import com.jetbrains.toolbox.api.ui.actions.RunnableActionDescription
5+
import com.jetbrains.toolbox.api.ui.components.UiField
6+
import com.jetbrains.toolbox.api.ui.components.UiPage
7+
import com.jetbrains.toolbox.api.ui.components.ValidationErrorField
78
import org.slf4j.LoggerFactory
8-
import java.util.function.BiConsumer
99
import java.util.function.Consumer
10-
import java.util.function.Function
1110

1211
/**
1312
* Base page that handles the icon, displaying error notifications, and
@@ -35,7 +34,7 @@ abstract class CoderPage(
3534
private var notifier: Consumer<Throwable>? = null
3635

3736
/** Used to get field values. */
38-
private var getter: Function<UiField, *>? = null
37+
private var stateAccessor: UiPage.UiFieldStateAccessor? = null
3938

4039
/** Let Toolbox know the fields should be updated. */
4140
protected var listener: Consumer<UiField?>? = null
@@ -48,12 +47,13 @@ abstract class CoderPage(
4847
*
4948
* This seems to only work on the first page.
5049
*/
51-
override fun getSvgIcon(): ByteArray =
52-
if (showIcon) {
53-
this::class.java.getResourceAsStream("/icon.svg")?.readAllBytes() ?: byteArrayOf()
50+
override fun getSvgIcon(): SvgIcon {
51+
return if (showIcon) {
52+
SvgIcon(this::class.java.getResourceAsStream("/icon.svg")?.readAllBytes() ?: byteArrayOf())
5453
} else {
55-
byteArrayOf()
54+
SvgIcon(byteArrayOf())
5655
}
56+
}
5757

5858
/**
5959
* Show an error as a popup on this page.
@@ -70,9 +70,8 @@ abstract class CoderPage(
7070
* TODO@JB: Is this really meant to be used with casting? I kind of expected
7171
* to be able to do `myField.value`.
7272
*/
73-
fun get(field: UiField): Any {
74-
val getter = getter ?: throw Exception("Page is not being displayed")
75-
return getter.apply(field)
73+
fun get(field: UiField): Any? {
74+
return stateAccessor?.get(field)
7675
}
7776

7877
/**
@@ -82,11 +81,9 @@ abstract class CoderPage(
8281
this.listener = listener
8382
}
8483

85-
/**
86-
* The setter is unused but the getter is used to get field values.
87-
*/
88-
override fun setStateAccessor(setter: BiConsumer<UiField, Any>?, getter: Function<UiField, *>?) {
89-
this.getter = getter
84+
85+
override fun setStateAccessor(stateAccessor: UiPage.UiFieldStateAccessor?) {
86+
this.stateAccessor = stateAccessor
9087
}
9188

9289
/**

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

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

33
import com.coder.gateway.services.CoderSettingsService
4-
import com.jetbrains.toolbox.gateway.ui.CheckboxField
5-
import com.jetbrains.toolbox.gateway.ui.RunnableActionDescription
6-
import com.jetbrains.toolbox.gateway.ui.TextField
7-
import com.jetbrains.toolbox.gateway.ui.TextType
8-
import com.jetbrains.toolbox.gateway.ui.UiField
4+
import com.jetbrains.toolbox.api.ui.actions.RunnableActionDescription
5+
import com.jetbrains.toolbox.api.ui.components.CheckboxField
6+
import com.jetbrains.toolbox.api.ui.components.TextField
7+
import com.jetbrains.toolbox.api.ui.components.TextType
8+
import com.jetbrains.toolbox.api.ui.components.UiField
99

1010
/**
1111
* A page for modifying Coder settings.

0 commit comments

Comments
 (0)