From 30aff8f86451be3db79158d95cf549cc4f61bcec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Przemys=C5=82aw=20Pluta?= Date: Thu, 25 Mar 2021 11:20:43 +0100 Subject: [PATCH] [Editor] Add Ctrl+Enter shortcut to executing executable scripts --- .../base/editor/code/component/CodeEditor.kt | 3 ++- .../base/editor/code/view/editor/CodeEditorFragment.kt | 6 ++++++ .../bartlomiejpluta/base/editor/main/component/EditorTab.kt | 1 + 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/code/component/CodeEditor.kt b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/code/component/CodeEditor.kt index 2c893337..34b09e3e 100644 --- a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/code/component/CodeEditor.kt +++ b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/code/component/CodeEditor.kt @@ -14,6 +14,7 @@ import org.fxmisc.richtext.model.StyleSpans import java.time.Duration import java.util.* import java.util.concurrent.Executors +import kotlin.math.max class CodeEditor( @@ -71,7 +72,7 @@ class CodeEditor( private fun initAutoIndents() { editor.addEventHandler(KeyEvent.KEY_PRESSED) { event -> if (event.code === KeyCode.ENTER) { - WHITESPACE.find(editor.getParagraph(editor.currentParagraph - 1).segments[0])?.apply { + WHITESPACE.find(editor.getParagraph(max(editor.currentParagraph - 1, 0)).segments[0])?.apply { editor.insertText(editor.caretPosition, value) } } diff --git a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/code/view/editor/CodeEditorFragment.kt b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/code/view/editor/CodeEditorFragment.kt index d45a24bf..8abb8cf3 100644 --- a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/code/view/editor/CodeEditorFragment.kt +++ b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/code/view/editor/CodeEditorFragment.kt @@ -1,6 +1,7 @@ package com.bartlomiejpluta.base.editor.code.view.editor import com.bartlomiejpluta.base.editor.main.component.EditorFragment +import com.bartlomiejpluta.base.editor.main.component.EditorTab.Companion.EXECUTE_SHORTCUT import com.bartlomiejpluta.base.editor.main.component.EditorTab.Companion.REDO_SHORTCUT import com.bartlomiejpluta.base.editor.main.component.EditorTab.Companion.SAVE_SHORTCUT import com.bartlomiejpluta.base.editor.main.component.EditorTab.Companion.UNDO_SHORTCUT @@ -17,6 +18,11 @@ class CodeEditorFragment : EditorFragment() { override fun handleShortcut(event: KeyEvent) { when { + EXECUTE_SHORTCUT.match(event) -> { + editorView.execute() + event.consume() + } + SAVE_SHORTCUT.match(event) -> { editorView.save() event.consume() diff --git a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/main/component/EditorTab.kt b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/main/component/EditorTab.kt index b21d7cc9..32a38d00 100644 --- a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/main/component/EditorTab.kt +++ b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/main/component/EditorTab.kt @@ -15,6 +15,7 @@ class EditorTab(val fragment: T, graphic: Node) : Tab() { fun handleShortcut(event: KeyEvent) = fragment.handleShortcut(event) companion object { + val EXECUTE_SHORTCUT = keyCombination("Ctrl+Enter")!! val SAVE_SHORTCUT = keyCombination("Ctrl+S")!! val UNDO_SHORTCUT = keyCombination("Ctrl+Z")!! val REDO_SHORTCUT = keyCombination("Ctrl+Y")!!