1 21 22 package org.armedbear.j; 23 24 import java.awt.Component ; 25 import java.awt.event.KeyEvent ; 26 import javax.swing.DefaultFocusManager ; 27 import javax.swing.JDialog ; 28 29 public final class CustomFocusManager extends DefaultFocusManager 30 { 31 public void processKeyEvent(Component focusedComponent, KeyEvent e) 32 { 33 if (e.getID() == KeyEvent.KEY_PRESSED) { 34 if (isComponentHookable(focusedComponent)) { 35 KeyMapping km; 36 int keyCode = e.getKeyCode(); 37 if (keyCode != 0) 38 km = new KeyMapping(keyCode, e.getModifiers(), null); 39 else 40 km = new KeyMapping(e.getKeyChar(), null); 41 String keyText = km.toString(); 42 if (keyText.equals("\\")) 44 keyText = "\\\\"; 45 Editor.invokeHook("key-pressed-hook", 46 "\"" + keyText + "\""); 47 } 48 } 49 super.processKeyEvent(focusedComponent, e); 50 } 51 52 private static final boolean isComponentHookable(Component c) 53 { 54 if (c instanceof Display) 55 return false; 56 if (c == null) 57 return false; 58 if (c instanceof HistoryTextField) { 59 HistoryTextField textField = (HistoryTextField) c; 60 if (textField.getHandler() instanceof IncrementalFindTextFieldHandler) 61 return false; 62 } 63 if (!Editor.preferences().getBooleanProperty(Property.ENABLE_KEY_PRESSED_HOOK)) 64 return false; 65 while (true) { 66 if (c instanceof JDialog ) 67 return false; 68 c = c.getParent(); 69 if (c == null) 70 return true; 71 } 72 } 73 } 74 | Popular Tags |