@@ -203,38 +203,35 @@ class CoderGatewayRecentWorkspaceConnectionsView(private val setContentCallback:
203
203
foreground = UIUtil .getContextHelpForeground()
204
204
font = ComponentPanelBuilder .getCommentFont(font)
205
205
}
206
- label(" " ).resizableColumn().align(AlignX .FILL ) }.topGap(gap)
206
+ label(" " ).resizableColumn().align(AlignX .FILL )
207
+ }.topGap(gap)
207
208
208
- row { label(" Select a project to launch." ) }
209
209
connections.forEach { workspaceProjectIDE ->
210
+ val enableLinks = listOf (WorkspaceStatus .STOPPED , WorkspaceStatus .CANCELED , WorkspaceStatus .FAILED , WorkspaceStatus .STARTING , WorkspaceStatus .RUNNING ).contains(workspaceWithAgent?.workspace?.latestBuild?.status)
211
+ val inLoadingState = listOf (WorkspaceStatus .STARTING , WorkspaceStatus .CANCELING , WorkspaceStatus .DELETING , WorkspaceStatus .STOPPING ).contains(workspaceWithAgent?.workspace?.latestBuild?.status)
210
212
211
213
val actionLink = ActionLink (workspaceProjectIDE.projectPathDisplay) {
212
- if (workspaceWithAgent?.workspace?.latestBuild?.status == WorkspaceStatus .RUNNING && workspaceWithAgent.status == WorkspaceAndAgentStatus .READY ) {
213
- CoderRemoteConnectionHandle ().connect { workspaceProjectIDE }
214
- GatewayUI .getInstance().reset()
215
- } else {
216
- // Start the workspace
217
- withoutNull(workspaceWithAgent?.workspace, deployment?.client) { workspace, client ->
218
- jobs[workspace.id]?.cancel()
219
- jobs[workspace.id] =
220
- cs.launch(ModalityState .current().asContextElement()) {
221
- withContext(Dispatchers .IO ) {
222
- try {
223
- client.startWorkspace(workspace)
224
- fetchWorkspaces()
225
- } catch (e: Exception ) {
226
- logger.error(" Could not start workspace ${workspace.name} " , e)
227
- }
228
- }
229
- }
230
- cs.launch {
231
- jobs[workspace.id]?.join()
232
- CoderRemoteConnectionHandle ().connect { workspaceProjectIDE }
233
- GatewayUI .getInstance().reset()
214
+ withoutNull(deployment?.client, workspaceWithAgent?.workspace) { client, workspace ->
215
+ CoderRemoteConnectionHandle ().connect {
216
+ if (listOf (WorkspaceStatus .STOPPED , WorkspaceStatus .CANCELED , WorkspaceStatus .FAILED ).contains(workspace.latestBuild.status)) {
217
+ client.startWorkspace(workspace)
234
218
}
219
+ workspaceProjectIDE
235
220
}
221
+ GatewayUI .getInstance().reset()
222
+ }
223
+ }
236
224
225
+ if (! enableLinks) {
226
+ actionLink.foreground = Color .GRAY
227
+ actionLink.actionListeners.forEach { actionLink.removeActionListener(it) }
228
+ }
229
+
230
+ row {
231
+ if (inLoadingState) {
232
+ icon(AnimatedIcon .Default ())
237
233
}
234
+ label(workspaceWithAgent?.status?.description.orEmpty())
238
235
}
239
236
240
237
row {
0 commit comments