Wizard: use built-in browse folder button for path component
This commit is contained in:
+5
-3
@@ -4,8 +4,10 @@ import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory
|
||||
import com.intellij.openapi.ui.TextBrowseFolderListener
|
||||
import com.intellij.openapi.ui.TextFieldWithBrowseButton
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.Context
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.asPath
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.SettingValidator
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.textField
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.withOnUpdatedListener
|
||||
import java.nio.file.Path
|
||||
import java.nio.file.Paths
|
||||
import javax.swing.JComponent
|
||||
@@ -22,9 +24,9 @@ class PathFieldComponent(
|
||||
validator,
|
||||
onValueUpdate
|
||||
) {
|
||||
override val uiComponent: TextFieldWithBrowseButton = TextFieldWithBrowseButton(
|
||||
textField(initialValue?.toString().orEmpty()) { path -> fireValueUpdated(Paths.get(path.trim())) }
|
||||
).apply {
|
||||
override val uiComponent: TextFieldWithBrowseButton = TextFieldWithBrowseButton().apply {
|
||||
textField.text = initialValue?.toString().orEmpty()
|
||||
textField.withOnUpdatedListener { path -> fireValueUpdated(path.trim().asPath()) }
|
||||
addBrowseFolderListener(
|
||||
TextBrowseFolderListener(
|
||||
FileChooserDescriptorFactory.createSingleFolderDescriptor(),
|
||||
|
||||
+6
-5
@@ -27,10 +27,7 @@ import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.UiConstants.GAP_BORDER
|
||||
import java.awt.*
|
||||
import java.awt.event.MouseAdapter
|
||||
import java.awt.event.MouseEvent
|
||||
import javax.swing.BorderFactory
|
||||
import javax.swing.Icon
|
||||
import javax.swing.JComponent
|
||||
import javax.swing.JPanel
|
||||
import javax.swing.*
|
||||
import javax.swing.border.Border
|
||||
import javax.swing.event.DocumentEvent
|
||||
import javax.swing.event.DocumentListener
|
||||
@@ -43,7 +40,11 @@ internal inline fun label(text: String, bold: Boolean = false, init: JBLabel.()
|
||||
|
||||
inline fun panel(layout: LayoutManager = BorderLayout(), init: JPanel.() -> Unit = {}) = JPanel(layout).apply(init)
|
||||
|
||||
fun textField(defaultValue: String?, onUpdated: (value: String) -> Unit) = JBTextField(defaultValue).apply {
|
||||
fun textField(defaultValue: String?, onUpdated: (value: String) -> Unit) =
|
||||
JBTextField(defaultValue)
|
||||
.withOnUpdatedListener(onUpdated)
|
||||
|
||||
fun <F : JTextField> F.withOnUpdatedListener(onUpdated: (value: String) -> Unit) = apply {
|
||||
document.addDocumentListener(object : DocumentListener {
|
||||
override fun insertUpdate(e: DocumentEvent?) = onUpdated(this@apply.text)
|
||||
override fun removeUpdate(e: DocumentEvent?) = onUpdated(this@apply.text)
|
||||
|
||||
Reference in New Issue
Block a user