@Override public void setKeyboardFocus(final View view) { if (view == null) { return; } final FocusManager currentFocusManager = keyboardManager.getFocusManager(); if (currentFocusManager != null && currentFocusManager.getFocus() != null && currentFocusManager.getFocus().getParent() != null) { currentFocusManager.getFocus().getParent().markDamaged(); } if (currentFocusManager != null) { final View currentFocus = currentFocusManager.getFocus(); if (currentFocus != null && currentFocus != view) { currentFocus.focusLost(); } } final FocusManager focusManager = view.getFocusManager(); if (focusManager != null) { focusManager.setFocus(view); if (view.getParent() != null) { view.getParent().markDamaged(); } } if (focusManager == null) { LOG.warn("No focus manager for " + view); } else { keyboardManager.setFocusManager(focusManager); } }
public void start(KeyboardManager keymgr, Window root, RunQueue rqueue) { EventListener listener = new EventListener(); try { // try to add a global event listener Toolkit.getDefaultToolkit().addAWTEventListener(listener, EVENT_MASK); } catch (SecurityException se) { // fall back to listening to our main window if (root != null) { root.addKeyListener(listener); root.addMouseListener(listener); root.addMouseMotionListener(listener); } } // and tie into the keyboard manager if one is provided if (keymgr != null) { keymgr.registerKeyObserver( new KeyboardManager.KeyObserver() { public void handleKeyEvent(int id, int keyCode, long timestamp) { handleUserActivity(); } }); } // register an interval to periodically check our last activity time new Interval(rqueue) { @Override public void expired() { checkIdle(); } }.schedule(_toIdleTime / 3, true); }
@Override public boolean hasFocus(final View view) { final FocusManager focusManager = keyboardManager.getFocusManager(); return focusManager != null && focusManager.getFocus() == view; }
private FocusManager getFocusManager() { return overlayView == CLEAR_OVERLAY ? keyboardManager.getFocusManager() : overlayView.getFocusManager(); }