Skip to content

Commit 3d30997

Browse files
committed
GUI: list all tools
1 parent 12a7f85 commit 3d30997

File tree

5 files changed

+58
-20
lines changed

5 files changed

+58
-20
lines changed

desktop-gui/compose/src/main/kotlin/Main.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,19 @@
11
import androidx.compose.desktop.ui.tooling.preview.Preview
22
import androidx.compose.foundation.layout.Row
33
import androidx.compose.material.MaterialTheme
4-
import androidx.compose.runtime.*
4+
import androidx.compose.runtime.Composable
55
import androidx.compose.ui.window.Window
66
import androidx.compose.ui.window.application
7+
import request.Request
78
import view.ContentView
89
import view.ToolsView
910

11+
12+
val G_REQUEST = Request()
13+
1014
@Composable
1115
@Preview
1216
fun App() {
13-
var tool by remember { mutableStateOf("tool") }
1417

1518
MaterialTheme {
1619
Row {

desktop-gui/compose/src/main/kotlin/request/network.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import io.ktor.client.plugins.*
66
import io.ktor.client.plugins.contentnegotiation.*
77
import io.ktor.client.request.*
88
import io.ktor.client.statement.*
9-
import io.ktor.http.*
109
import io.ktor.serialization.kotlinx.json.*
1110
import kotlinx.serialization.json.Json
1211
import org.slf4j.LoggerFactory
@@ -55,9 +54,9 @@ class Request {
5554
}
5655
}
5756

58-
suspend fun getAllTools(): Set<String> {
57+
suspend fun getAllTools(): List<String> {
5958
val r = client.get("/")
60-
return r.body<Set<String>>()
59+
return r.body<List<String>>()
6160
}
6261

6362
suspend fun invokeTool(tools: Tools, input: Params): String {

desktop-gui/compose/src/main/kotlin/view/ContentView.kt

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
package view
22

33
import androidx.compose.desktop.ui.tooling.preview.Preview
4-
import androidx.compose.foundation.layout.*
5-
import androidx.compose.material.Divider
4+
import androidx.compose.foundation.layout.Column
5+
import androidx.compose.foundation.layout.Row
6+
import androidx.compose.foundation.layout.fillMaxSize
7+
import androidx.compose.foundation.layout.height
68
import androidx.compose.material.Text
79
import androidx.compose.runtime.Composable
810
import androidx.compose.ui.Alignment
911
import androidx.compose.ui.Modifier
10-
import androidx.compose.ui.graphics.Color
1112
import androidx.compose.ui.unit.Dp
12-
import androidx.compose.ui.unit.dp
1313

1414
@Preview
1515
@Composable
@@ -24,12 +24,7 @@ fun ContentView() {
2424
) {
2525
Text("Contents")
2626
}
27-
Row(modifier = Modifier.padding(2.dp)) {
28-
Divider(
29-
color = Color.LightGray,
30-
modifier = Modifier.fillMaxWidth().height(1.dp)
31-
)
32-
}
27+
grayDivider()
3328
Row {
3429
Text("Content")
3530
}

desktop-gui/compose/src/main/kotlin/view/ToolsView.kt

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,61 @@
11
package view
22

3+
import G_REQUEST
34
import androidx.compose.desktop.ui.tooling.preview.Preview
45
import androidx.compose.foundation.layout.*
56
import androidx.compose.foundation.lazy.LazyColumn
67
import androidx.compose.material.Button
78
import androidx.compose.material.Divider
89
import androidx.compose.material.Text
9-
import androidx.compose.runtime.Composable
10+
import androidx.compose.runtime.*
1011
import androidx.compose.ui.Modifier
1112
import androidx.compose.ui.graphics.Color
1213
import androidx.compose.ui.text.style.TextAlign
14+
import androidx.compose.ui.unit.Dp
1315
import androidx.compose.ui.unit.dp
16+
import kotlinx.coroutines.launch
17+
import org.slf4j.LoggerFactory
18+
19+
val logger = LoggerFactory.getLogger("tools")
1420

1521
@Composable
1622
@Preview
1723
fun ToolsView() {
24+
var tools by remember { mutableStateOf(listOf<String>()) }
25+
val scope = rememberCoroutineScope()
26+
LaunchedEffect(true) {
27+
scope.launch {
28+
tools = try {
29+
G_REQUEST.getAllTools()
30+
} catch (e: Exception) {
31+
logger.error("tools error",e)
32+
listOf()
33+
}
34+
}
35+
}
1836
Column {
1937
Row {
2038
Row {
21-
Column(modifier = Modifier.width(120.dp)) {
39+
Column(modifier = Modifier.width(150.dp)) {
2240
Row {
2341
Text(
2442
"Tools",
2543
textAlign = TextAlign.Center,
26-
modifier = Modifier.fillMaxWidth()
44+
modifier = Modifier.height(Dp(30F)).fillMaxWidth()
2745
)
2846

2947
}
48+
grayDivider()
3049
Row {
3150
LazyColumn {
32-
items(5) {
51+
items(tools.size) {
52+
val d = tools[it % tools.size]
3353
Row(
3454
Modifier.fillMaxWidth(),
3555
horizontalArrangement = Arrangement.SpaceEvenly
3656
) {
3757
Button(onClick = { println("$it") }) {
38-
Text("Hello, $it")
58+
Text(d)
3959
}
4060
}
4161
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package view
2+
3+
import androidx.compose.foundation.layout.Row
4+
import androidx.compose.foundation.layout.fillMaxWidth
5+
import androidx.compose.foundation.layout.height
6+
import androidx.compose.foundation.layout.padding
7+
import androidx.compose.material.Divider
8+
import androidx.compose.runtime.Composable
9+
import androidx.compose.ui.Modifier
10+
import androidx.compose.ui.graphics.Color
11+
import androidx.compose.ui.unit.dp
12+
13+
@Composable
14+
fun grayDivider() {
15+
Row(modifier = Modifier.padding(2.dp)) {
16+
Divider(
17+
color = Color.LightGray,
18+
modifier = Modifier.fillMaxWidth().height(1.dp)
19+
)
20+
}
21+
}

0 commit comments

Comments
 (0)