diff --git a/src/main/kotlin/xyz/atnrch/wrench/WrenchApp.kt b/src/main/kotlin/xyz/atnrch/wrench/WrenchApp.kt index 939a75c..c528b2f 100644 --- a/src/main/kotlin/xyz/atnrch/wrench/WrenchApp.kt +++ b/src/main/kotlin/xyz/atnrch/wrench/WrenchApp.kt @@ -3,10 +3,13 @@ package xyz.atnrch.wrench import androidx.compose.desktop.ui.tooling.preview.Preview import androidx.compose.material.MaterialTheme import androidx.compose.runtime.Composable +import androidx.compose.runtime.remember import androidx.compose.ui.window.Window import androidx.compose.ui.window.application import xyz.atnrch.wrench.logger.Logger import xyz.atnrch.wrench.scaffold.WrenchScaffold +import xyz.atnrch.wrench.watcher.Watcher +import javax.swing.UIManager class WrenchApp { companion object { @@ -30,16 +33,14 @@ class WrenchApp { @Preview @JvmStatic fun App() { + UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()) MaterialTheme { - WrenchScaffold() - /* val watcher = remember { Watcher() } - WrenchDisplay( + WrenchScaffold( onStartButtonClick = watcher::start, onStopButtonClick = watcher::stop, onAddButtonClick = {} ) - */ } } } diff --git a/src/main/kotlin/xyz/atnrch/wrench/colors/WrenchColors.kt b/src/main/kotlin/xyz/atnrch/wrench/colors/WrenchColors.kt new file mode 100644 index 0000000..08d89ac --- /dev/null +++ b/src/main/kotlin/xyz/atnrch/wrench/colors/WrenchColors.kt @@ -0,0 +1,10 @@ +package xyz.atnrch.wrench.colors + +import androidx.compose.ui.graphics.Color + +class WrenchColors { + companion object { + val PRIMARY = Color(0xFF424242) + val LIGHT = Color(0xFF6D6D6D) + } +} \ No newline at end of file diff --git a/src/main/kotlin/xyz/atnrch/wrench/display/file/WrenchFileManagerInput.kt b/src/main/kotlin/xyz/atnrch/wrench/components/WrenchFileManagerInput.kt similarity index 94% rename from src/main/kotlin/xyz/atnrch/wrench/display/file/WrenchFileManagerInput.kt rename to src/main/kotlin/xyz/atnrch/wrench/components/WrenchFileManagerInput.kt index dd0acc2..5e92c07 100644 --- a/src/main/kotlin/xyz/atnrch/wrench/display/file/WrenchFileManagerInput.kt +++ b/src/main/kotlin/xyz/atnrch/wrench/components/WrenchFileManagerInput.kt @@ -1,4 +1,4 @@ -package xyz.atnrch.wrench.display.file +package xyz.atnrch.wrench.components import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column diff --git a/src/main/kotlin/xyz/atnrch/wrench/display/file/WrenchFileManagerOutput.kt b/src/main/kotlin/xyz/atnrch/wrench/components/WrenchFileManagerOutput.kt similarity index 94% rename from src/main/kotlin/xyz/atnrch/wrench/display/file/WrenchFileManagerOutput.kt rename to src/main/kotlin/xyz/atnrch/wrench/components/WrenchFileManagerOutput.kt index e315ccf..375016a 100644 --- a/src/main/kotlin/xyz/atnrch/wrench/display/file/WrenchFileManagerOutput.kt +++ b/src/main/kotlin/xyz/atnrch/wrench/components/WrenchFileManagerOutput.kt @@ -1,4 +1,4 @@ -package xyz.atnrch.wrench.display.file +package xyz.atnrch.wrench.components import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column diff --git a/src/main/kotlin/xyz/atnrch/wrench/components/WrenchScaffold.kt b/src/main/kotlin/xyz/atnrch/wrench/components/WrenchScaffold.kt new file mode 100644 index 0000000..fb95950 --- /dev/null +++ b/src/main/kotlin/xyz/atnrch/wrench/components/WrenchScaffold.kt @@ -0,0 +1,108 @@ +package xyz.atnrch.wrench.scaffold + +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.shape.CornerSize +import androidx.compose.material.* +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Add +import androidx.compose.material.icons.filled.Close +import androidx.compose.material.icons.filled.PlayArrow +import androidx.compose.runtime.* +import androidx.compose.ui.Modifier +import androidx.compose.ui.awt.ComposeWindow +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.unit.dp +import xyz.atnrch.wrench.colors.WrenchColors +import xyz.atnrch.wrench.components.WrenchFileManagerInput +import xyz.atnrch.wrench.components.WrenchFileManagerOutput +import javax.swing.JFileChooser + +@Composable +fun WrenchScaffold( + onStartButtonClick: () -> Unit, + onStopButtonClick: () -> Unit, + onAddButtonClick: () -> Unit +) { + var status by remember { mutableStateOf(false) } + + Scaffold( + topBar = { + TopAppBar( + backgroundColor = WrenchColors.PRIMARY, + contentColor = Color.White, + elevation = 16.dp, + title = { Text("Wrench") }, + actions = { + Button( + onClick = { + val fileChooser = JFileChooser(System.getProperty("user.home")).apply { + fileSelectionMode = JFileChooser.FILES_ONLY + dialogTitle = "Select a file" + approveButtonText = "Select" + approveButtonToolTipText = "Select current directory as save destination" + } + fileChooser.showOpenDialog(ComposeWindow()) + val result = fileChooser.selectedFile + println(result) + } + ) { + Text("DEBUG") + } + }) + }, + floatingActionButton = { + FloatingActionButton( + onClick = { /* ... */ }, + backgroundColor = WrenchColors.LIGHT + ) { + Icon( + Icons.Filled.Add, + tint = Color.White, + contentDescription = "Start", + modifier = Modifier.size(28.dp) + ) + } + }, + isFloatingActionButtonDocked = true, + bottomBar = { + BottomAppBar( + cutoutShape = MaterialTheme.shapes.small.copy( + CornerSize(percent = 50) + ), + backgroundColor = WrenchColors.PRIMARY + ) { + Spacer(Modifier.width(5.dp)) + Button( + { + status = if (status) { + onStopButtonClick.invoke() + false + } else { + onStartButtonClick.invoke() + true + } + }, + colors = ButtonDefaults.buttonColors(WrenchColors.LIGHT, Color.White), + contentPadding = ButtonDefaults.ContentPadding + ) { + if (status) Icon( + Icons.Filled.Close, + contentDescription = "Stop", + modifier = Modifier.size(28.dp) + ) else Icon( + Icons.Filled.PlayArrow, + tint = Color.White, + contentDescription = "Start", + modifier = Modifier.size(28.dp) + ) + } + } + } + ) { + WrenchFileManagerInput() + WrenchFileManagerOutput() + } + +} \ No newline at end of file diff --git a/src/main/kotlin/xyz/atnrch/wrench/display/WrenchDisplay.kt b/src/main/kotlin/xyz/atnrch/wrench/display/WrenchDisplay.kt deleted file mode 100644 index 8acfbf6..0000000 --- a/src/main/kotlin/xyz/atnrch/wrench/display/WrenchDisplay.kt +++ /dev/null @@ -1,28 +0,0 @@ -package xyz.atnrch.wrench.display - -import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.runtime.Composable -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import xyz.atnrch.wrench.display.file.WrenchFileManagerInput -import xyz.atnrch.wrench.display.file.WrenchFileManagerOutput -import xyz.atnrch.wrench.display.status.WrenchStatus - -@Composable -fun WrenchDisplay( - onStartButtonClick: () -> Unit, - onStopButtonClick: () -> Unit, - onAddButtonClick: () -> Unit -) { - Box { - WrenchFileManagerInput() - WrenchFileManagerOutput() - } - Box( - contentAlignment = Alignment.BottomEnd, - modifier = Modifier.fillMaxSize() - ) { - WrenchStatus(onStartButtonClick, onStopButtonClick, onAddButtonClick) - } -} \ No newline at end of file diff --git a/src/main/kotlin/xyz/atnrch/wrench/display/status/WrenchStatus.kt b/src/main/kotlin/xyz/atnrch/wrench/display/status/WrenchStatus.kt deleted file mode 100644 index 1df7c86..0000000 --- a/src/main/kotlin/xyz/atnrch/wrench/display/status/WrenchStatus.kt +++ /dev/null @@ -1,73 +0,0 @@ -package xyz.atnrch.wrench.display.status - -import androidx.compose.foundation.layout.* -import androidx.compose.material.Button -import androidx.compose.material.ButtonDefaults -import androidx.compose.material.Icon -import androidx.compose.material.Text -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Add -import androidx.compose.material.icons.filled.Close -import androidx.compose.material.icons.filled.PlayArrow -import androidx.compose.runtime.* -import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.unit.dp - -@Composable -fun WrenchStatus( - onStartButtonClick: () -> Unit, - onStopButtonClick: () -> Unit, - onAddButtonClick: () -> Unit -) { - val padding = PaddingValues( - start = 13.dp, - top = 10.dp, - end = 13.dp, - bottom = 10.dp - ) - var status by remember { mutableStateOf(false) } - var startStopButtonText by remember { mutableStateOf("Start") } - - Row { - Button( - { - status = if (status) { - onStopButtonClick.invoke() - false - } else { - onStartButtonClick.invoke() - true - } - startStopButtonText = if (status) "Stop" else "Start" - }, contentPadding = padding - ) { - if (status) Icon( - Icons.Filled.Close, - contentDescription = "Start", - modifier = Modifier.size(ButtonDefaults.IconSize) - ) else Icon( - Icons.Filled.PlayArrow, - tint = Color.White, - contentDescription = "Start", - modifier = Modifier.size(24.dp) - ) - Spacer(Modifier.size(ButtonDefaults.IconSpacing)) - Text(startStopButtonText) - } - Spacer(Modifier.width(10.dp)) - Button( - onAddButtonClick, - contentPadding = padding - ) { - Icon( - Icons.Filled.Add, - contentDescription = "Add", - modifier = Modifier.size(ButtonDefaults.IconSize) - ) - Spacer(Modifier.size(ButtonDefaults.IconSpacing)) - Text("Add...") - } - Spacer(Modifier.width(10.dp)) - } -} \ No newline at end of file diff --git a/src/main/kotlin/xyz/atnrch/wrench/scaffold/WrenchScaffold.kt b/src/main/kotlin/xyz/atnrch/wrench/scaffold/WrenchScaffold.kt deleted file mode 100644 index 7ea2e09..0000000 --- a/src/main/kotlin/xyz/atnrch/wrench/scaffold/WrenchScaffold.kt +++ /dev/null @@ -1,49 +0,0 @@ -package xyz.atnrch.wrench.scaffold - -import androidx.compose.foundation.layout.size -import androidx.compose.foundation.shape.CornerSize -import androidx.compose.material.* -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.PlayArrow -import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.unit.dp - -@Composable -fun WrenchScaffold() { - Scaffold( - topBar = { - TopAppBar { - Text("Wrench") - } - }, - floatingActionButton = { - FloatingActionButton( - onClick = { /* ... */ }, - backgroundColor = Color.Black - ) { - Icon( - Icons.Filled.PlayArrow, - tint = Color.White, - contentDescription = "Start", - modifier = Modifier.size(24.dp) - ) - } - }, - isFloatingActionButtonDocked = true, - bottomBar = { - BottomAppBar( - cutoutShape = MaterialTheme.shapes.small.copy( - CornerSize(percent = 50) - ), - backgroundColor = Color.Black - ) { - - } - } - ) { - // Screen content - } - -} \ No newline at end of file