Skip to content

Commit d35e085

Browse files
authored
Merge pull request #95 from arkivanov/use-idea-file-dialogs-in-plugin
Use IDEA file dialogs in plugin
2 parents 299ac71 + bef71a9 commit d35e085

File tree

4 files changed

+26
-20
lines changed

4 files changed

+26
-20
lines changed

mvikotlin-timetravel-client/plugin-idea/src/main/java/com/arkivanov/mvikotlin/plugin/idea/timetravel/AdbPathProvider.kt

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package com.arkivanov.mvikotlin.plugin.idea.timetravel
22

33
import com.intellij.ide.util.PropertiesComponent
4-
import org.apache.commons.io.filefilter.NameFileFilter
5-
import java.awt.FileDialog
4+
import com.intellij.openapi.fileChooser.FileChooser.chooseFile
5+
import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory.createSingleFileDescriptor
66
import java.io.File
77

88
internal object AdbPathProvider {
@@ -12,7 +12,15 @@ internal object AdbPathProvider {
1212
fun get(): String? {
1313
var path: String? = props.getValue(KEY_ADB_PATH)
1414
if ((path == null) || !File(path).exists()) {
15-
path = fileDialog(title = "Select ADB executable", mode = FileDialog.LOAD, filenameFilter = NameFileFilter("adb"))
15+
path =
16+
chooseFile(
17+
createSingleFileDescriptor()
18+
.withFileFilter { it.name == "adb" }
19+
.withTitle("Select ADB executable"),
20+
null,
21+
null
22+
)?.path
23+
1624
if (path != null) {
1725
props.setValue(KEY_ADB_PATH, path)
1826
}

mvikotlin-timetravel-client/plugin-idea/src/main/java/com/arkivanov/mvikotlin/plugin/idea/timetravel/Exporter.kt

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,23 @@
11
package com.arkivanov.mvikotlin.plugin.idea.timetravel
22

3-
import org.apache.commons.io.filefilter.WildcardFileFilter
4-
import java.awt.FileDialog
3+
import com.intellij.openapi.fileChooser.FileChooserFactory
4+
import com.intellij.openapi.fileChooser.FileSaverDescriptor
5+
import com.intellij.openapi.project.Project
56
import java.io.FileOutputStream
67
import java.io.IOException
78

89
internal object Exporter {
910

1011
fun export(data: ByteArray) {
11-
var path = fileDialog(title = "Save file", mode = FileDialog.SAVE, filenameFilter = WildcardFileFilter("*.tte")) ?: return
12+
var path =
13+
FileChooserFactory
14+
.getInstance()
15+
.createSaveFileDialog(FileSaverDescriptor("Save file", "MVIKotlin time travel export", "tte"), null as Project?)
16+
.save(null, null)
17+
?.file
18+
?.absolutePath
19+
?: return
20+
1221
if (!path.endsWith(".tte")) {
1322
path += ".tte"
1423
}

mvikotlin-timetravel-client/plugin-idea/src/main/java/com/arkivanov/mvikotlin/plugin/idea/timetravel/Importer.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
package com.arkivanov.mvikotlin.plugin.idea.timetravel
22

3-
import org.apache.commons.io.filefilter.WildcardFileFilter
4-
import java.awt.FileDialog
3+
import com.intellij.openapi.fileChooser.FileChooser
4+
import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory.createSingleFileDescriptor
55
import java.io.FileInputStream
66
import java.io.IOException
77

88
internal object Importer {
99

1010
fun import(): ByteArray? {
11-
val path = fileDialog(title = "Select file", mode = FileDialog.LOAD, filenameFilter = WildcardFileFilter("*.tte")) ?: return null
11+
var path = FileChooser.chooseFile(createSingleFileDescriptor("tte").withTitle("Select file"), null, null)?.path ?: return null
1212

1313
return try {
1414
FileInputStream(path).use(FileInputStream::readBytes)
Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package com.arkivanov.mvikotlin.plugin.idea.timetravel
22

3-
import java.awt.FileDialog
43
import java.io.BufferedReader
5-
import java.io.FilenameFilter
64
import java.io.IOException
75
import javax.swing.JFrame
86
import javax.swing.JOptionPane
@@ -19,12 +17,3 @@ internal fun log(text: String) {
1917
internal fun showErrorDialog(text: String) {
2018
JOptionPane.showMessageDialog(JFrame(), text, "MVIKotlin", JOptionPane.ERROR_MESSAGE)
2119
}
22-
23-
internal fun fileDialog(title: String, mode: Int, filenameFilter: FilenameFilter? = null): String? =
24-
FileDialog(JFrame(), title, mode)
25-
.apply {
26-
isAlwaysOnTop = true
27-
this.filenameFilter = filenameFilter
28-
isVisible = true
29-
}
30-
.file

0 commit comments

Comments
 (0)