[JEWEL-1009] Replacing native file picker with JFileChooser for Markdown Standalone Sample

- The native file picker does not fileter the files on Linux nor Windows
- Updating to use the JFileChooser always

closes https://github.com/JetBrains/intellij-community/pull/3259

(cherry picked from commit 602f8be305d08a34a1f55cf6ce37efdb54d9aef7)


(cherry picked from commit a1c0096d4616c5d54d3b42c32f3de36d9951284a)

IJ-MR-179919

GitOrigin-RevId: 713776e5d79e63b1b69857aae764955e1c8282c2
This commit is contained in:
Gustavo Fao Valvassori
2025-10-31 12:48:53 +00:00
committed by intellij-monorepo-bot
parent bfb497d10f
commit 30ad768b9e
@@ -19,11 +19,11 @@ import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import com.jetbrains.JBRFileDialog
import java.awt.Component
import java.awt.FileDialog
import java.awt.Frame
import java.io.File
import javax.swing.JFileChooser
import javax.swing.filechooser.FileNameExtensionFilter
import org.jetbrains.jewel.foundation.LocalComponent
import org.jetbrains.jewel.foundation.theme.JewelTheme
import org.jetbrains.jewel.ui.Orientation
@@ -52,7 +52,9 @@ private fun ControlsRow(onLoadMarkdown: (String) -> Unit, modifier: Modifier = M
OutlinedButton(
onClick = {
val file = pickMarkdownFile(component)
if (file != null) onLoadMarkdown(file.readText())
if (file != null) {
onLoadMarkdown(file.readText())
}
},
modifier = Modifier.padding(start = 2.dp),
) {
@@ -94,19 +96,21 @@ private fun Editor(state: TextFieldState, modifier: Modifier = Modifier) {
}
private fun pickMarkdownFile(component: Component): File? {
val dialog =
FileDialog(component.frame, "Select a Markdown file", FileDialog.LOAD).apply {
isMultipleMode = false
JBRFileDialog.get(this).apply {
hints = hints or JBRFileDialog.SELECT_FILES_HINT
setFileFilterExtensions("Markdown Files", arrayOf("md"))
}
val fileChooser =
JFileChooser().apply {
@Suppress("HardCodedStringLiteral")
dialogTitle = "Select a Markdown file"
fileSelectionMode = JFileChooser.FILES_ONLY
isMultiSelectionEnabled = false
fileFilter = FileNameExtensionFilter("Markdown Files", "md")
isAcceptAllFileFilterUsed = false
}
dialog.isVisible = true
return dialog.file?.let(::File)
return if (fileChooser.showOpenDialog(component) == JFileChooser.APPROVE_OPTION) {
fileChooser.selectedFile.takeIf { it.extension == "md" }
} else {
null
}
}
private val Component.frame: Frame