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
+ }
+ }
}