@@ -163,22 +163,21 @@ public void setECSandThemeforTextArea(ErrorCheckerService ecs,
163163
164164
165165 /**
166- * Handles KeyEvents for TextArea
167- * Code completion begins from here.
166+ * Handles KeyEvents for TextArea (code completion begins from here).
168167 */
169168 public void processKeyEvent (KeyEvent evt ) {
170- //if(Base.isMacOS() && evt.isControlDown()) System.out.println("Ctrl down: " + evt);
171- if (evt .getKeyCode () == KeyEvent .VK_ESCAPE ){
172- if (suggestion != null ){
173- if (suggestion .isVisible ()){
169+ if (evt .getKeyCode () == KeyEvent .VK_ESCAPE ) {
170+ if (suggestion != null ){
171+ if (suggestion .isVisible ()){
174172 Base .log ("esc key" );
175173 hideSuggestion ();
176174 evt .consume ();
177175 return ;
178176 }
179177 }
180- }
181- else if (evt .getKeyCode () == KeyEvent .VK_ENTER && evt .getID () == KeyEvent .KEY_PRESSED ){
178+
179+ } else if (evt .getKeyCode () == KeyEvent .VK_ENTER &&
180+ evt .getID () == KeyEvent .KEY_PRESSED ) {
182181 if (suggestion != null ) {
183182 if (suggestion .isVisible ()) {
184183 if (suggestion .insertSelection (CompletionPanel .KEYBOARD_COMPLETION )) {
@@ -228,62 +227,27 @@ else if(evt.getKeyCode() == KeyEvent.VK_ENTER && evt.getID() == KeyEvent.KEY_PRE
228227 }
229228 super .processKeyEvent (evt );
230229
231- if (editor .hasJavaTabs ) return ; // code completion disabled if java tabs
232-
233- if (evt .getID () == KeyEvent .KEY_TYPED ) {
234- char keyChar = evt .getKeyChar ();
235- if (keyChar == KeyEvent .VK_ENTER ||
236- keyChar == KeyEvent .VK_ESCAPE ||
237- keyChar == KeyEvent .VK_TAB ||
238- keyChar == KeyEvent .CHAR_UNDEFINED ) {
239- return ;
240- }
241- else if (keyChar == ')' ) {
242- hideSuggestion (); // See #2741
243- return ;
244- }
245-
246- final KeyEvent evt2 = evt ;
230+ // code completion disabled if java tabs
231+ if (!editor .hasJavaTabs ()) {
232+ if (evt .getID () == KeyEvent .KEY_TYPED ) {
233+ processCompletionKeys (evt );
247234
248- if (keyChar == '.' ) {
249- if (JavaMode .codeCompletionsEnabled ) {
250- Base .log ("[KeyEvent]" + KeyEvent .getKeyText (evt2 .getKeyCode ()) + " |Prediction started" );
251- Base .log ("Typing: " + fetchPhrase (evt2 ));
252- }
253- } else if (keyChar == ' ' ) { // Trigger on Ctrl-Space
254- if (!Base .isMacOS () && JavaMode .codeCompletionsEnabled &&
255- (evt .isControlDown () || evt .isMetaDown ())) {
256- SwingWorker <Object , Object > worker = new SwingWorker <Object , Object >() {
257- protected Object doInBackground () throws Exception {
258- // Provide completions only if it's enabled
259- if (JavaMode .codeCompletionsEnabled ) {
260- getDocument ().remove (getCaretPosition () - 1 , 1 ); // Remove the typed space
261- Base .log ("[KeyEvent]" + evt2 .getKeyChar () + " |Prediction started" );
262- Base .log ("Typing: " + fetchPhrase (evt2 ));
263- }
264- return null ;
265- }
266- };
267- worker .execute ();
268- } else {
269- hideSuggestion (); // hide on spacebar
270- }
271- } else {
272- if (JavaMode .codeCompletionsEnabled ) {
273- prepareSuggestions (evt2 );
274- }
235+ } else if (Base .isMacOS () && evt .getID () == KeyEvent .KEY_RELEASED ) {
236+ processControlSpace (evt );
275237 }
276238 }
277- // #2699 - Special case for OS X, where Ctrl-Space is not detected as Key_Typed -_-
278- else if (Base .isMacOS () && evt .getID () == KeyEvent .KEY_RELEASED
279- && evt .getKeyCode () == KeyEvent .VK_SPACE && evt .isControlDown ()) {
280- final KeyEvent evt2 = evt ;
239+ }
240+
241+
242+ // #2699 - Special case for OS X, where Ctrl-Space is not detected as Key_Typed -_-
243+ private void processControlSpace (final KeyEvent event ) {
244+ if (event .getKeyCode () == KeyEvent .VK_SPACE && event .isControlDown ()) {
281245 SwingWorker <Object , Object > worker = new SwingWorker <Object , Object >() {
282246 protected Object doInBackground () throws Exception {
283247 // Provide completions only if it's enabled
284248 if (JavaMode .codeCompletionsEnabled ) {
285- Base .log ("[KeyEvent]" + KeyEvent .getKeyText (evt2 .getKeyCode ()) + " |Prediction started" );
286- Base .log ("Typing: " + fetchPhrase (evt2 ));
249+ Base .log ("[KeyEvent]" + KeyEvent .getKeyText (event .getKeyCode ()) + " |Prediction started" );
250+ Base .log ("Typing: " + fetchPhrase (event ));
287251 }
288252 return null ;
289253 }
@@ -292,10 +256,52 @@ protected Object doInBackground() throws Exception {
292256 }
293257 }
294258
259+
260+ private void processCompletionKeys (final KeyEvent event ) {
261+ char keyChar = event .getKeyChar ();
262+ if (keyChar == KeyEvent .VK_ENTER ||
263+ keyChar == KeyEvent .VK_ESCAPE ||
264+ keyChar == KeyEvent .VK_TAB ||
265+ keyChar == KeyEvent .CHAR_UNDEFINED ) {
266+ return ;
267+
268+ } else if (keyChar == ')' ) {
269+ hideSuggestion (); // See #2741
270+ return ;
271+ }
272+
273+ if (keyChar == '.' ) {
274+ if (JavaMode .codeCompletionsEnabled ) {
275+ Base .log ("[KeyEvent]" + KeyEvent .getKeyText (event .getKeyCode ()) + " |Prediction started" );
276+ Base .log ("Typing: " + fetchPhrase (event ));
277+ }
278+ } else if (keyChar == ' ' ) { // Trigger on Ctrl-Space
279+ if (!Base .isMacOS () && JavaMode .codeCompletionsEnabled &&
280+ (event .isControlDown () || event .isMetaDown ())) {
281+ SwingWorker <Object , Object > worker = new SwingWorker <Object , Object >() {
282+ protected Object doInBackground () throws Exception {
283+ // Provide completions only if it's enabled
284+ if (JavaMode .codeCompletionsEnabled ) {
285+ getDocument ().remove (getCaretPosition () - 1 , 1 ); // Remove the typed space
286+ Base .log ("[KeyEvent]" + event .getKeyChar () + " |Prediction started" );
287+ Base .log ("Typing: " + fetchPhrase (event ));
288+ }
289+ return null ;
290+ }
291+ };
292+ worker .execute ();
293+ } else {
294+ hideSuggestion (); // hide on spacebar
295+ }
296+ } else {
297+ if (JavaMode .codeCompletionsEnabled ) {
298+ prepareSuggestions (event );
299+ }
300+ }
301+ }
302+
295303
296- /**
297- * Kickstart auto-complete suggestions
298- */
304+ /** Kickstart auto-complete suggestions */
299305 private void prepareSuggestions (final KeyEvent evt ){
300306 SwingWorker <Object , Object > worker = new SwingWorker <Object , Object >() {
301307 protected Object doInBackground () throws Exception {
@@ -315,7 +321,6 @@ protected Object doInBackground() throws Exception {
315321 /**
316322 * Retrieves the word on which the mouse pointer is present
317323 * @param evt - the MouseEvent which triggered this method
318- * @return
319324 */
320325 private String fetchPhrase (MouseEvent evt ) {
321326 Base .log ("--handle Mouse Right Click--" );
@@ -726,7 +731,7 @@ public void mousePressed(MouseEvent me) {
726731 }
727732
728733 if (me .getButton () == MouseEvent .BUTTON3 ) {
729- if (!editor .hasJavaTabs ) { // tooltips, etc disabled for java tabs
734+ if (!editor .hasJavaTabs ()) { // tooltips, etc disabled for java tabs
730735 fetchPhrase (me );
731736 }
732737 }
0 commit comments