mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[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:
committed by
intellij-monorepo-bot
parent
bfb497d10f
commit
30ad768b9e
+18
-14
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user