fix for textarea not working after reloading extension

This commit is contained in:
Rasmus Moorats 2024-06-30 19:08:51 +03:00
parent ebc81bd0d1
commit faa142ea3f
Signed by: xx
GPG key ID: FE14255A6AE7241C

View file

@ -9,80 +9,93 @@ import java.awt.event.InputEvent
import java.awt.event.KeyEvent
import javax.swing.AbstractAction
import javax.swing.KeyStroke.getKeyStroke
import javax.swing.UIManager
import javax.swing.event.DocumentEvent
import javax.swing.event.DocumentListener
import javax.swing.text.JTextComponent
import kotlin.math.max
class Editor(private val editorTyped: () -> Unit, private val transformerSave: () -> Unit) {
val textArea = RSyntaxTextArea().apply {
syntaxEditingStyle = SyntaxConstants.SYNTAX_STYLE_JAVASCRIPT
isCodeFoldingEnabled = true
tabSize = 4
isBracketMatchingEnabled = true
currentLineHighlightColor = Color.LIGHT_GRAY
caretColor = Color.BLACK
isAutoIndentEnabled = true
isEditable = true
isEnabled = true
val textArea: RSyntaxTextArea
document.addDocumentListener(object : DocumentListener {
override fun insertUpdate(e: DocumentEvent) {
editorTyped()
init {
JTextComponent.removeKeymap("RTextAreaKeymap")
textArea = RSyntaxTextArea().apply {
syntaxEditingStyle = SyntaxConstants.SYNTAX_STYLE_JAVASCRIPT
isCodeFoldingEnabled = true
tabSize = 4
isBracketMatchingEnabled = true
currentLineHighlightColor = Color.LIGHT_GRAY
caretColor = Color.BLACK
isAutoIndentEnabled = true
isEditable = true
isEnabled = true
document.addDocumentListener(object : DocumentListener {
override fun insertUpdate(e: DocumentEvent) {
editorTyped()
}
override fun removeUpdate(e: DocumentEvent) {
editorTyped()
}
override fun changedUpdate(e: DocumentEvent) {
editorTyped()
}
})
inputMap.apply {
put(getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_DOWN_MASK), "Save")
put(getKeyStroke(KeyEvent.VK_PLUS, InputEvent.CTRL_DOWN_MASK), "IncreaseFontSize")
put(getKeyStroke(KeyEvent.VK_EQUALS, InputEvent.CTRL_DOWN_MASK), "IncreaseFontSize")
put(getKeyStroke(KeyEvent.VK_ADD, InputEvent.CTRL_DOWN_MASK), "IncreaseFontSize")
put(getKeyStroke(KeyEvent.VK_MINUS, InputEvent.CTRL_DOWN_MASK), "DecreaseFontSize")
put(
getKeyStroke(
KeyEvent.VK_MINUS,
InputEvent.CTRL_DOWN_MASK or InputEvent.SHIFT_DOWN_MASK
), "DecreaseFontSize"
)
put(getKeyStroke(KeyEvent.VK_SUBTRACT, InputEvent.CTRL_DOWN_MASK), "DecreaseFontSize")
put(getKeyStroke(KeyEvent.VK_0, InputEvent.CTRL_DOWN_MASK), "ResetFontSize")
put(getKeyStroke(KeyEvent.VK_NUMPAD0, InputEvent.CTRL_DOWN_MASK), "ResetFontSize")
}
override fun removeUpdate(e: DocumentEvent) {
editorTyped()
actionMap.apply {
put("Save", object : AbstractAction() {
override fun actionPerformed(e: ActionEvent) {
transformerSave()
}
})
put("IncreaseFontSize", object : AbstractAction() {
override fun actionPerformed(e: ActionEvent) {
font = Font(font.name, font.style, font.size + 1)
}
})
put("DecreaseFontSize", object : AbstractAction() {
override fun actionPerformed(e: ActionEvent) {
font = Font(font.name, font.style, max(1, font.size - 1))
}
})
put("ResetFontSize", object : AbstractAction() {
override fun actionPerformed(e: ActionEvent) {
font = Font(font.name, font.style, 12)
}
})
}
override fun changedUpdate(e: DocumentEvent) {
editorTyped()
}
})
inputMap.apply {
put(getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_DOWN_MASK), "Save")
put(getKeyStroke(KeyEvent.VK_PLUS, InputEvent.CTRL_DOWN_MASK), "IncreaseFontSize")
put(getKeyStroke(KeyEvent.VK_EQUALS, InputEvent.CTRL_DOWN_MASK), "IncreaseFontSize")
put(getKeyStroke(KeyEvent.VK_ADD, InputEvent.CTRL_DOWN_MASK), "IncreaseFontSize")
put(getKeyStroke(KeyEvent.VK_MINUS, InputEvent.CTRL_DOWN_MASK), "DecreaseFontSize")
put(
getKeyStroke(
KeyEvent.VK_MINUS,
InputEvent.CTRL_DOWN_MASK or InputEvent.SHIFT_DOWN_MASK
), "DecreaseFontSize"
)
put(getKeyStroke(KeyEvent.VK_SUBTRACT, InputEvent.CTRL_DOWN_MASK), "DecreaseFontSize")
put(getKeyStroke(KeyEvent.VK_0, InputEvent.CTRL_DOWN_MASK), "ResetFontSize")
put(getKeyStroke(KeyEvent.VK_NUMPAD0, InputEvent.CTRL_DOWN_MASK), "ResetFontSize")
}
actionMap.apply {
put("Save", object : AbstractAction() {
override fun actionPerformed(e: ActionEvent) {
transformerSave()
addMouseWheelListener { e ->
if (e.isControlDown) {
font = Font(font.name, font.style, max(1, font.size - e.wheelRotation))
}
})
put("IncreaseFontSize", object : AbstractAction() {
override fun actionPerformed(e: ActionEvent) {
font = Font(font.name, font.style, font.size + 1)
}
})
put("DecreaseFontSize", object : AbstractAction() {
override fun actionPerformed(e: ActionEvent) {
font = Font(font.name, font.style, max(1, font.size - 1))
}
})
put("ResetFontSize", object : AbstractAction() {
override fun actionPerformed(e: ActionEvent) {
font = Font(font.name, font.style, 12)
}
})
}
addMouseWheelListener { e ->
if (e.isControlDown) {
font = Font(font.name, font.style, max(1, font.size - e.wheelRotation))
}
}
UIManager.put("RSyntaxTextAreaUI.actionMap", null)
UIManager.put("RSyntaxTextAreaUI.inputMap", null)
UIManager.put("RTextAreaUI.actionMap", null)
UIManager.put("RTextAreaUI.inputMap", null)
}
}