Refactor: Introduce JTextComponent.onTextChange() function

This commit is contained in:
Alexey Sedunov
2018-04-10 14:53:51 +03:00
parent 62f654b3d2
commit e51b6927b6
6 changed files with 44 additions and 41 deletions
@@ -19,7 +19,6 @@ package org.jetbrains.kotlin.idea.facet
import com.intellij.facet.ui.*
import com.intellij.ide.actions.ShowSettingsUtilImpl
import com.intellij.openapi.project.Project
import com.intellij.ui.DocumentAdapter
import com.intellij.ui.HoverHyperlinkLabel
import com.intellij.util.ui.FormBuilder
import com.intellij.util.ui.ThreeStateCheckBox
@@ -29,10 +28,10 @@ import org.jetbrains.kotlin.config.TargetPlatformKind
import org.jetbrains.kotlin.config.createCompilerArguments
import org.jetbrains.kotlin.config.splitArgumentString
import org.jetbrains.kotlin.idea.compiler.configuration.*
import org.jetbrains.kotlin.idea.util.onTextChange
import java.awt.BorderLayout
import javax.swing.*
import javax.swing.border.EmptyBorder
import javax.swing.event.DocumentEvent
import kotlin.reflect.full.findAnnotation
class KotlinFacetEditorGeneralTab(
@@ -241,13 +240,7 @@ class KotlinFacetEditorGeneralTab(
}
private fun JTextField.validateOnChange() {
document.addDocumentListener(
object : DocumentAdapter() {
override fun textChanged(e: DocumentEvent) {
doValidate()
}
}
)
onTextChange { doValidate() }
}
private fun AbstractButton.validateOnChange() {
@@ -24,7 +24,6 @@ import com.intellij.refactoring.classMembers.MemberInfoChange
import com.intellij.refactoring.extractSuperclass.JavaExtractSuperBaseDialog
import com.intellij.refactoring.util.DocCommentPolicy
import com.intellij.refactoring.util.RefactoringMessageUtil
import com.intellij.ui.DocumentAdapter
import com.intellij.ui.components.JBLabel
import com.intellij.util.ui.FormBuilder
import org.jetbrains.kotlin.asJava.toLightClass
@@ -35,6 +34,7 @@ import org.jetbrains.kotlin.idea.refactoring.introduce.extractClass.ExtractSuper
import org.jetbrains.kotlin.idea.refactoring.memberInfo.KotlinMemberInfo
import org.jetbrains.kotlin.idea.refactoring.memberInfo.KotlinMemberSelectionPanel
import org.jetbrains.kotlin.idea.refactoring.memberInfo.KotlinUsesAndInterfacesDependencyMemberInfoModel
import org.jetbrains.kotlin.idea.util.onTextChange
import org.jetbrains.kotlin.lexer.KtTokens
import org.jetbrains.kotlin.psi.KtClassOrObject
import org.jetbrains.kotlin.psi.KtNamedDeclaration
@@ -42,7 +42,6 @@ import org.jetbrains.kotlin.psi.psiUtil.isIdentifier
import org.jetbrains.kotlin.psi.psiUtil.quoteIfNeeded
import java.awt.BorderLayout
import javax.swing.*
import javax.swing.event.DocumentEvent
abstract class KotlinExtractSuperDialogBase(
protected val originalClass: KtClassOrObject,
@@ -102,13 +101,7 @@ abstract class KotlinExtractSuperDialogBase(
override fun createExtractedSuperNameField(): JTextField {
return super.createExtractedSuperNameField().apply {
document.addDocumentListener(
object : DocumentAdapter() {
override fun textChanged(e: DocumentEvent?) {
resetFileNameField()
}
}
)
onTextChange { resetFileNameField() }
}
}
@@ -24,7 +24,6 @@ import com.intellij.psi.*
import com.intellij.refactoring.RefactoringBundle
import com.intellij.refactoring.copy.CopyFilesOrDirectoriesDialog
import com.intellij.refactoring.util.CommonRefactoringUtil
import com.intellij.ui.DocumentAdapter
import com.intellij.ui.NonFocusableCheckBox
import com.intellij.ui.RecentsManager
import com.intellij.ui.TextFieldWithHistoryWithBrowseButton
@@ -36,10 +35,10 @@ import org.jetbrains.kotlin.idea.core.packageMatchesDirectory
import org.jetbrains.kotlin.idea.refactoring.isInJavaSourceRoot
import org.jetbrains.kotlin.idea.util.application.executeCommand
import org.jetbrains.kotlin.idea.util.application.runWriteAction
import org.jetbrains.kotlin.idea.util.onTextChange
import org.jetbrains.kotlin.psi.KtFile
import java.io.File
import javax.swing.JComponent
import javax.swing.event.DocumentEvent
class KotlinAwareMoveFilesOrDirectoriesDialog(
private val project: Project,
@@ -88,13 +87,7 @@ class KotlinAwareMoveFilesOrDirectoriesDialog(
TextComponentAccessor.TEXT_FIELD_WITH_HISTORY_WHOLE_TEXT)
val textField = targetDirectoryField.childComponent.textEditor
FileChooserFactory.getInstance().installFileCompletion(textField, descriptor, true, disposable)
textField.document.addDocumentListener(
object : DocumentAdapter() {
override fun textChanged(e: DocumentEvent) {
validateOKButton()
}
}
)
textField.onTextChange { validateOKButton() }
targetDirectoryField.setTextFieldPreferredWidth(CopyFilesOrDirectoriesDialog.MAX_PATH_LENGTH)
Disposer.register(disposable, targetDirectoryField)
@@ -0,0 +1,20 @@
/*
* Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
* that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.idea.util
import com.intellij.ui.DocumentAdapter
import javax.swing.event.DocumentEvent
import javax.swing.text.JTextComponent
fun JTextComponent.onTextChange(action: (DocumentEvent) -> Unit) {
document.addDocumentListener(
object : DocumentAdapter() {
override fun textChanged(e: DocumentEvent) {
action(e)
}
}
)
}