Pablo
12/07/2022, 5:03 PMKirill Grouchnikov
12/07/2022, 5:05 PMPablo
12/07/2022, 5:06 PMKirill Grouchnikov
12/07/2022, 5:07 PMPablo
12/07/2022, 5:07 PMKirill Grouchnikov
12/07/2022, 5:08 PMKirill Grouchnikov
12/07/2022, 5:14 PMimport androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.DpSize
import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.WindowPlacement
import androidx.compose.ui.window.WindowPosition
import androidx.compose.ui.window.rememberWindowState
import org.pushingpixels.aurora.component.model.Command
import org.pushingpixels.aurora.component.projection.CommandButtonProjection
import org.pushingpixels.aurora.theming.auroraBackground
import org.pushingpixels.aurora.theming.marinerSkin
import org.pushingpixels.aurora.window.AuroraWindow
import org.pushingpixels.aurora.window.AuroraWindowTitlePaneConfigurations
import org.pushingpixels.aurora.window.auroraApplication
import java.io.File
import javax.swing.JFileChooser
fun main() = auroraApplication {
val state = rememberWindowState(
placement = WindowPlacement.Floating,
position = WindowPosition.Aligned(Alignment.Center),
size = DpSize(220.dp, 150.dp)
)
AuroraWindow(
skin = marinerSkin(),
title = "Aurora Demo",
state = state,
windowTitlePaneConfiguration = AuroraWindowTitlePaneConfigurations.AuroraPlain(),
onCloseRequest = ::exitApplication
) {
var text by remember { mutableStateOf("Hello, World!") }
Row(
horizontalArrangement = Arrangement.Center,
verticalAlignment = Alignment.CenterVertically,
modifier = Modifier.fillMaxSize().auroraBackground()
) {
CommandButtonProjection(
contentModel = Command(
text = text,
action = {
text = "Hello, Desktop!"
val fileChooser = JFileChooser()
fileChooser.fileSelectionMode = JFileChooser.DIRECTORIES_ONLY
val option = fileChooser.showOpenDialog(window)
if (option == JFileChooser.APPROVE_OPTION) {
val file: File = fileChooser.selectedFile
println("Folder Selected: ${file.name}")
for (child in file.listFiles()) {
println("\t${child.name}")
}
}
}
)
).project()
}
}
}
Kirill Grouchnikov
12/07/2022, 5:14 PMKirill Grouchnikov
12/07/2022, 5:17 PMPablo
12/07/2022, 5:34 PMPablo
12/07/2022, 5:35 PMimplementation(compose.desktop.currentOs)
implementation(org.pushing-pixels)
Pablo
12/07/2022, 5:35 PMPablo
12/07/2022, 5:35 PMKirill Grouchnikov
12/07/2022, 5:38 PMPablo
12/07/2022, 6:14 PMPablo
12/07/2022, 6:14 PMfun main() = auroraApplication {
val state = rememberWindowState(
placement = WindowPlacement.Floating,
position = WindowPosition.Aligned(Alignment.Center),
size = DpSize(220.dp, 150.dp)
)
AuroraWindow(
skin = marinerSkin(),
title = "Aurora Demo",
state = state,
windowTitlePaneConfiguration = AuroraWindowTitlePaneConfigurations.AuroraPlain(),
onCloseRequest = ::exitApplication
) {
var text by remember { mutableStateOf("Hello, World!") }
var folderChosenPath = remember { mutableStateOf( "") }
Row(
horizontalArrangement = Arrangement.Center,
verticalAlignment = Alignment.CenterVertically,
modifier = Modifier.fillMaxSize().auroraBackground()
) {
CommandButtonProjection(
contentModel = Command(
text = text,
action = {
text = "Hello, Desktop!"
val fileChooser = JFileChooser()
fileChooser.fileSelectionMode = JFileChooser.DIRECTORIES_ONLY
val option = fileChooser.showOpenDialog(window)
if (option == JFileChooser.APPROVE_OPTION) {
val file: File = fileChooser.selectedFile
println("Folder Selected: ${file.name}")
for (child in file.listFiles()) {
println("\t${child.name}")
}
folderChosenPath.value = file.path
}
}
)
).project()
}
Print(folderChosenPath)
}
}
@Composable
fun Print(folderPath: MutableState<String>) {
var folder = File(folderPath.value)
System.out.println("XXXXXXXX Print called")
}
Pablo
12/07/2022, 6:15 PMPablo
12/07/2022, 6:15 PMPablo
12/07/2022, 6:15 PMKirill Grouchnikov
12/07/2022, 6:16 PMPrint
need to be @Composable
?Pablo
12/07/2022, 6:18 PMPablo
12/07/2022, 6:18 PMPablo
12/07/2022, 6:18 PMPablo
12/07/2022, 6:20 PMKirill Grouchnikov
12/07/2022, 6:21 PMPrint
doesn’t change, Compose skips that recomposition. These are not imperative functions that are executed every time.Kirill Grouchnikov
12/07/2022, 6:22 PM@Composable
Pablo
12/07/2022, 6:22 PMKirill Grouchnikov
12/07/2022, 6:24 PMPablo
12/07/2022, 6:34 PM