From 166c1aa7bbd31726520b2118733e56ef67b21998 Mon Sep 17 00:00:00 2001 From: Federico Fissore Date: Tue, 12 May 2015 17:41:16 +0200 Subject: [PATCH] New editor: restored CTRL+K (open sketch folder). Fixes #3103 --- app/src/processing/app/Base.java | 7 +++++++ .../processing/app/syntax/SketchTextArea.java | 19 ++++++++++++------- .../syntax/SketchTextAreaDefaultInputMap.java | 15 +++++++++++++++ 3 files changed, 34 insertions(+), 7 deletions(-) create mode 100644 app/src/processing/app/syntax/SketchTextAreaDefaultInputMap.java diff --git a/app/src/processing/app/Base.java b/app/src/processing/app/Base.java index 653855de2..ea5c67466 100644 --- a/app/src/processing/app/Base.java +++ b/app/src/processing/app/Base.java @@ -54,6 +54,7 @@ import processing.app.macosx.ThinkDifferent; import processing.app.packages.LibraryList; import processing.app.packages.UserLibrary; import processing.app.syntax.PdeKeywords; +import processing.app.syntax.SketchTextAreaDefaultInputMap; import processing.app.tools.MenuScroller; import processing.app.tools.ZipDeflater; @@ -476,6 +477,8 @@ public class Base { } else if (parser.isGuiMode()) { splashScreenHelper.splashText(_("Starting...")); + installKeyboardInputMap(); + // Check if there were previously opened sketches to be restored restoreSketches(); @@ -505,6 +508,10 @@ public class Base { } } + private void installKeyboardInputMap() { + UIManager.put("RSyntaxTextAreaUI.inputMap", new SketchTextAreaDefaultInputMap()); + } + /** * Post-constructor setup for the editor area. Loads the last * sketch that was used (if any), and restores other Editor settings. diff --git a/app/src/processing/app/syntax/SketchTextArea.java b/app/src/processing/app/syntax/SketchTextArea.java index 155bfc25e..78873de55 100644 --- a/app/src/processing/app/syntax/SketchTextArea.java +++ b/app/src/processing/app/syntax/SketchTextArea.java @@ -150,17 +150,22 @@ public class SketchTextArea extends RSyntaxTextArea { // Removing the default focus traversal keys // This is because the DefaultKeyboardFocusManager handles the keypress and consumes the event protected void fixControlTab() { - KeyStroke ctrlTab = KeyStroke.getKeyStroke("ctrl TAB"); - KeyStroke ctrlShiftTab = KeyStroke.getKeyStroke("ctrl shift TAB"); + removeCTRLTabFromFocusTraversal(); - // Remove ctrl-tab from normal focus traversal + removeCTRLSHIFTTabFromFocusTraversal(); + } + + private void removeCTRLSHIFTTabFromFocusTraversal() { + KeyStroke ctrlShiftTab = KeyStroke.getKeyStroke("ctrl shift TAB"); + Set backwardKeys = new HashSet(this.getFocusTraversalKeys(KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS)); + backwardKeys.remove(ctrlShiftTab); + } + + private void removeCTRLTabFromFocusTraversal() { + KeyStroke ctrlTab = KeyStroke.getKeyStroke("ctrl TAB"); Set forwardKeys = new HashSet(this.getFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS)); forwardKeys.remove(ctrlTab); this.setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, forwardKeys); - - // Remove ctrl-shift-tab from normal focus traversal - Set backwardKeys = new HashSet(this.getFocusTraversalKeys(KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS)); - backwardKeys.remove(ctrlShiftTab); } diff --git a/app/src/processing/app/syntax/SketchTextAreaDefaultInputMap.java b/app/src/processing/app/syntax/SketchTextAreaDefaultInputMap.java new file mode 100644 index 000000000..86d3d86a2 --- /dev/null +++ b/app/src/processing/app/syntax/SketchTextAreaDefaultInputMap.java @@ -0,0 +1,15 @@ +package processing.app.syntax; + +import org.fife.ui.rsyntaxtextarea.RSyntaxTextAreaDefaultInputMap; + +import javax.swing.*; +import java.awt.event.KeyEvent; + +public class SketchTextAreaDefaultInputMap extends RSyntaxTextAreaDefaultInputMap { + + public SketchTextAreaDefaultInputMap() { + int defaultMod = getDefaultModifier(); + + remove(KeyStroke.getKeyStroke(KeyEvent.VK_K, defaultMod)); + } +}