Coverage Summary for Class: FileChooser_jvmKt (ui.file)
Class |
Method, %
|
Branch, %
|
Line, %
|
Instruction, %
|
FileChooser_jvmKt |
0%
(0/3)
|
0%
(0/4)
|
0%
(0/21)
|
0%
(0/234)
|
FileChooser_jvmKt$FileDialog$1$1$1 |
0%
(0/3)
|
0%
(0/2)
|
0%
(0/5)
|
0%
(0/17)
|
Total |
0%
(0/6)
|
0%
(0/6)
|
0%
(0/26)
|
0%
(0/251)
|
package ui.file
import androidx.compose.runtime.Composable
import androidx.compose.ui.window.AwtWindow
import java.awt.FileDialog
import java.awt.Frame
import java.io.File
import javax.swing.JFileChooser
import javax.swing.UIManager
import javax.swing.filechooser.FileNameExtensionFilter
import javax.swing.filechooser.FileSystemView
@Composable
fun FileDialog(parent: Frame? = null, onClose: (result: List<File>) -> Unit) =
AwtWindow(
visible = true,
create = {
object : FileDialog(parent, "Choose a file", LOAD) {
override fun isMultipleMode() = true
override fun setVisible(visible: Boolean) {
super.setVisible(visible)
if (visible) {
onClose(files.toList())
}
}
}
},
dispose = FileDialog::dispose)
fun fileChooser(parent: Frame? = null, onClose: (result: List<File>) -> Unit) {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName())
val chooser =
JFileChooser(FileSystemView.getFileSystemView()).apply {
currentDirectory = File(System.getProperty("user.dir"))
fileSelectionMode = JFileChooser.FILES_AND_DIRECTORIES
isMultiSelectionEnabled = true
dialogTitle = "Select a folder"
approveButtonText = "Select"
approveButtonToolTipText = "Select current directory as save destination"
fileFilter = FileNameExtensionFilter("JPG & GIF Images", "jpg", "gif")
}
val files = chooser.selectedFiles.toList()
chooser.isVisible = false
onClose(files)
}