From b77de56091b1d675005fef39c74c932434affb1f Mon Sep 17 00:00:00 2001 From: aro Date: Sun, 27 Nov 2022 17:25:46 +0100 Subject: [PATCH] feat: show directory picker --- .../wrench/components/center/FilePicker.kt | 16 +++++++++++++- .../components/center/FloatingAddButton.kt | 2 +- .../components/center/output/OutputEntries.kt | 22 ++++++++++++++----- 3 files changed, 33 insertions(+), 7 deletions(-) diff --git a/src/main/kotlin/xyz/atnrch/wrench/components/center/FilePicker.kt b/src/main/kotlin/xyz/atnrch/wrench/components/center/FilePicker.kt index 6fa5b91..dc0486a 100644 --- a/src/main/kotlin/xyz/atnrch/wrench/components/center/FilePicker.kt +++ b/src/main/kotlin/xyz/atnrch/wrench/components/center/FilePicker.kt @@ -4,7 +4,7 @@ import androidx.compose.ui.awt.ComposeWindow import java.io.File import javax.swing.JFileChooser -fun createFileChooser( +fun showFilePicker( onResult: (file: File) -> Unit, onNoResult: () -> Unit ) { @@ -16,4 +16,18 @@ fun createFileChooser( } filePicker.showOpenDialog(ComposeWindow()) if (filePicker.selectedFile != null) onResult.invoke(filePicker.selectedFile) else onNoResult.invoke() +} + +fun showDirectoryPicker( + onResult: (file: File) -> Unit, + onNoResult: () -> Unit +) { + val filePicker = JFileChooser(System.getProperty("user.home")).apply { + fileSelectionMode = JFileChooser.DIRECTORIES_ONLY + dialogTitle = "Select a directory" + approveButtonText = "Confirm" + approveButtonToolTipText = "Select source file" + } + filePicker.showOpenDialog(ComposeWindow()) + if (filePicker.selectedFile != null) onResult.invoke(filePicker.selectedFile) else onNoResult.invoke() } \ No newline at end of file diff --git a/src/main/kotlin/xyz/atnrch/wrench/components/center/FloatingAddButton.kt b/src/main/kotlin/xyz/atnrch/wrench/components/center/FloatingAddButton.kt index e7c4c32..1335797 100644 --- a/src/main/kotlin/xyz/atnrch/wrench/components/center/FloatingAddButton.kt +++ b/src/main/kotlin/xyz/atnrch/wrench/components/center/FloatingAddButton.kt @@ -19,7 +19,7 @@ fun AddButton( ) { FloatingActionButton( { - createFileChooser({ + showFilePicker({ Logger.info("Path: ${it.absolutePath}") watcherManager.addFile(it) }, { diff --git a/src/main/kotlin/xyz/atnrch/wrench/components/center/output/OutputEntries.kt b/src/main/kotlin/xyz/atnrch/wrench/components/center/output/OutputEntries.kt index 483c982..5a2676b 100644 --- a/src/main/kotlin/xyz/atnrch/wrench/components/center/output/OutputEntries.kt +++ b/src/main/kotlin/xyz/atnrch/wrench/components/center/output/OutputEntries.kt @@ -14,9 +14,12 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.RectangleShape import androidx.compose.ui.unit.dp +import xyz.atnrch.wrench.components.center.showDirectoryPicker +import xyz.atnrch.wrench.logger.Logger import xyz.atnrch.wrench.ui.UIColors import xyz.atnrch.wrench.watcher.WatcherEntry import xyz.atnrch.wrench.watcher.WatcherManager +import kotlin.io.path.pathString @Composable fun OutputEntries( @@ -41,17 +44,26 @@ fun OutputEntries( Box( contentAlignment = Alignment.Center ) { - Column ( + Column( verticalArrangement = Arrangement.SpaceEvenly, horizontalAlignment = Alignment.CenterHorizontally ) { - Text("No output") - Spacer(Modifier.height(28.dp)) - Text("CURRENT SELECTED FILE IS: ${entry.file.absolutePath}") + if (entry.map.isEmpty()) { + Text("No output") + } else { + entry.map.forEach { + Text(it.pathString) + } + } Spacer(Modifier.height(28.dp)) Button( onClick = { - println("test") + showDirectoryPicker({ + Logger.info("Path: ${it.absolutePath}") + entry.map.add(it.toPath()) + }, { + Logger.info("No file selected.") + }) } ) { Icon(