1515import processing .app .*;
1616import processing .app .Toolkit ;
1717import processing .app .contrib .ToolContribution ;
18+ import processing .app .syntax .JEditTextArea ;
19+ import processing .app .syntax .PdeTextAreaDefaults ;
1820import processing .mode .java .runner .Runner ;
1921
2022
2123public class JavaEditor extends Editor {
2224 JavaMode jmode ;
2325
2426 // TODO this needs prefs to be applied when necessary
25- PdeKeyListener listener ;
27+ // PdeKeyListener listener;
2628
2729 // Runner associated with this editor window
2830 private Runner runtime ;
@@ -31,12 +33,46 @@ public class JavaEditor extends Editor {
3133 protected JavaEditor (Base base , String path , EditorState state , Mode mode ) {
3234 super (base , path , state , mode );
3335
34- // hopefully these are no longer needed w/ swing
35- // (har har har.. that was wishful thinking)
36- listener = new PdeKeyListener (this , textarea );
36+ // // hopefully these are no longer needed w/ swing
37+ // // (har har har.. that was wishful thinking)
38+ // listener = new PdeKeyListener(this, textarea);
3739
3840 jmode = (JavaMode ) mode ;
3941 }
42+
43+
44+ protected JEditTextArea createTextArea () {
45+ return new JEditTextArea (new PdeTextAreaDefaults (mode )) {
46+ // Forwards key events directly to the input handler. This is slightly
47+ // faster than using a KeyListener because some Swing overhead is avoided.
48+ PdeKeyListener editorListener = new PdeKeyListener (JavaEditor .this , this );
49+
50+ // Moved out of JEditTextArea for 3.0a6 to remove dependency on Java Mode
51+ public void processKeyEvent (KeyEvent evt ) {
52+ // this had to be added in Processing 007X, because the menu key
53+ // events weren't making it up to the frame.
54+ super .processKeyEvent (evt );
55+
56+ if (inputHandler != null ) {
57+ switch (evt .getID ()) {
58+ case KeyEvent .KEY_TYPED :
59+ if ((editorListener == null ) || !editorListener .keyTyped (evt )) {
60+ inputHandler .keyTyped (evt );
61+ }
62+ break ;
63+ case KeyEvent .KEY_PRESSED :
64+ if ((editorListener == null ) || !editorListener .keyPressed (evt )) {
65+ inputHandler .keyPressed (evt );
66+ }
67+ break ;
68+ case KeyEvent .KEY_RELEASED :
69+ inputHandler .keyReleased (evt );
70+ break ;
71+ }
72+ }
73+ }
74+ };
75+ }
4076
4177
4278 public EditorToolbar createToolbar () {
0 commit comments