You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by an...@apache.org on 2008/12/21 19:17:28 UTC

svn commit: r728466 - in /cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler: editor/SQLTemplateScriptsTab.java util/CayenneWidgetFactory.java

Author: andrey
Date: Sun Dec 21 10:17:28 2008
New Revision: 728466

URL: http://svn.apache.org/viewvc?rev=728466&view=rev
Log:
CAY-1149 JEdit isn't handling mac keyboard shortcuts within the raw sql script editor pane

Mac key handling

Modified:
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/SQLTemplateScriptsTab.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneWidgetFactory.java

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/SQLTemplateScriptsTab.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/SQLTemplateScriptsTab.java?rev=728466&r1=728465&r2=728466&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/SQLTemplateScriptsTab.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/SQLTemplateScriptsTab.java Sun Dec 21 10:17:28 2008
@@ -43,6 +43,7 @@
 
 import org.apache.cayenne.map.event.QueryEvent;
 import org.apache.cayenne.modeler.ProjectController;
+import org.apache.cayenne.modeler.util.CayenneWidgetFactory;
 import org.apache.cayenne.modeler.util.DbAdapterInfo;
 import org.apache.cayenne.query.Query;
 import org.apache.cayenne.query.SQLTemplate;
@@ -138,7 +139,7 @@
         keys.add(0, DEFAULT_LABEL);
         scripts.setModel(new DefaultComboBoxModel(keys.toArray()));
         
-        scriptArea = new JEditTextArea();
+        scriptArea = CayenneWidgetFactory.createJEditTextArea();
         scriptArea.setTokenMarker(SQL_TEMPLATE_MARKER);
         scriptArea.getDocument().addDocumentListener(this);
         

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneWidgetFactory.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneWidgetFactory.java?rev=728466&r1=728465&r2=728466&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneWidgetFactory.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneWidgetFactory.java Sun Dec 21 10:17:28 2008
@@ -40,6 +40,8 @@
 import org.apache.cayenne.modeler.ModelerPreferences;
 import org.apache.cayenne.modeler.util.combo.AutoCompletion;
 import org.apache.cayenne.modeler.util.combo.ComboBoxCellEditor;
+import org.syntax.jedit.DefaultInputHandler;
+import org.syntax.jedit.JEditTextArea;
 
 /**
  * Utility class to create standard Swing widgets following default look-and-feel of
@@ -175,4 +177,76 @@
     public static JButton createButton(String text) {
         return new JButton(text);
     }
+    
+    /**
+     * Creates and returns a JEdit text component with syntax highlighing
+     */
+    public static JEditTextArea createJEditTextArea() {
+        JEditTextArea area = new JEditTextArea();
+        if (OperatingSystem.getOS() == OperatingSystem.MAC_OS_X) {
+            area.setInputHandler(new MacInputHandler());
+        }
+        
+        return area;
+    }
+ 
+    /**
+     * Class for enabling Mac OS X keys
+     */
+    private static class MacInputHandler extends DefaultInputHandler {
+        MacInputHandler() {
+            addDefaultKeyBindings();
+        }
+        
+        /**
+         * Sets up the default key bindings.
+         */
+        public void addDefaultKeyBindings() {
+            addKeyBinding("BACK_SPACE", BACKSPACE);
+            addKeyBinding("M+BACK_SPACE", BACKSPACE_WORD);
+            addKeyBinding("DELETE", DELETE);
+            addKeyBinding("M+DELETE", DELETE_WORD);
+
+            addKeyBinding("ENTER", INSERT_BREAK);
+            addKeyBinding("TAB", INSERT_TAB);
+
+            addKeyBinding("INSERT", OVERWRITE);
+            addKeyBinding("M+\\", TOGGLE_RECT);
+
+            addKeyBinding("HOME", HOME);
+            addKeyBinding("END", END);
+            addKeyBinding("M+A", SELECT_ALL);
+            addKeyBinding("S+HOME", SELECT_HOME);
+            addKeyBinding("S+END", SELECT_END);
+            addKeyBinding("M+HOME", DOCUMENT_HOME);
+            addKeyBinding("M+END", DOCUMENT_END);
+            addKeyBinding("MS+HOME", SELECT_DOC_HOME);
+            addKeyBinding("MS+END", SELECT_DOC_END);
+
+            addKeyBinding("PAGE_UP", PREV_PAGE);
+            addKeyBinding("PAGE_DOWN", NEXT_PAGE);
+            addKeyBinding("S+PAGE_UP", SELECT_PREV_PAGE);
+            addKeyBinding("S+PAGE_DOWN", SELECT_NEXT_PAGE);
+
+            addKeyBinding("LEFT", PREV_CHAR);
+            addKeyBinding("S+LEFT", SELECT_PREV_CHAR);
+            addKeyBinding("A+LEFT", PREV_WORD); //option + left
+            addKeyBinding("AS+LEFT", SELECT_PREV_WORD); //option + shift + left
+            addKeyBinding("RIGHT", NEXT_CHAR);
+            addKeyBinding("S+RIGHT", SELECT_NEXT_CHAR);
+            addKeyBinding("A+RIGHT", NEXT_WORD); //option + right
+            addKeyBinding("AS+RIGHT", SELECT_NEXT_WORD); //option + shift + right
+            addKeyBinding("UP", PREV_LINE);
+            addKeyBinding("S+UP", SELECT_PREV_LINE);
+            addKeyBinding("DOWN", NEXT_LINE);
+            addKeyBinding("S+DOWN", SELECT_NEXT_LINE);
+
+            addKeyBinding("M+ENTER", REPEAT);
+            
+            // Clipboard
+            addKeyBinding("M+C", CLIP_COPY); //command + c
+            addKeyBinding("M+V", CLIP_PASTE); //command + v
+            addKeyBinding("M+X", CLIP_CUT); //command + x
+        }
+    }
 }