From 30ad768b9e76508e8610994a0b5d7fa88cd52042 Mon Sep 17 00:00:00 2001 From: Gustavo Fao Valvassori Date: Tue, 30 Sep 2025 06:59:33 -0300 Subject: [PATCH] [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 --- .../standalone/markdown/MarkdownEditor.kt | 32 +++++++++++-------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/platform/jewel/samples/standalone/src/main/kotlin/org/jetbrains/jewel/samples/standalone/markdown/MarkdownEditor.kt b/platform/jewel/samples/standalone/src/main/kotlin/org/jetbrains/jewel/samples/standalone/markdown/MarkdownEditor.kt index 6edfdf95058a..cdc3b0481f51 100644 --- a/platform/jewel/samples/standalone/src/main/kotlin/org/jetbrains/jewel/samples/standalone/markdown/MarkdownEditor.kt +++ b/platform/jewel/samples/standalone/src/main/kotlin/org/jetbrains/jewel/samples/standalone/markdown/MarkdownEditor.kt @@ -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