/** * Handler for FocusEvents. */ void handleJavaFocusEvent(final FocusEvent e) { // Note that the peer receives all the FocusEvents from // its lightweight children as well KeyboardFocusManagerPeer kfmPeer = LWKeyboardFocusManagerPeer.getInstance(); kfmPeer.setCurrentFocusOwner(e.getID() == FocusEvent.FOCUS_GAINED ? getTarget() : null); }
/** * Handler for FocusEvents. */ protected void handleJavaFocusEvent(FocusEvent e) { // Note that the peer receives all the FocusEvents from // its lightweight children as well KeyboardFocusManagerPeer kfmPeer = LWKeyboardFocusManagerPeer.getInstance(); kfmPeer.setCurrentFocusOwner(e.getID() == FocusEvent.FOCUS_GAINED ? getTarget() : null); }
@Override public KeyboardFocusManagerPeer getKeyboardFocusManagerPeer() { // See 6833019. return kfmPeer; }
@Override public abstract KeyboardFocusManagerPeer getKeyboardFocusManagerPeer() throws HeadlessException;
@Override public boolean requestFocus(Component lightweightChild, boolean temporary, boolean focusedWindowChangeAllowed, long time, CausedFocusEvent.Cause cause) { if (focusLog.isLoggable(PlatformLogger.FINEST)) { focusLog.finest("lightweightChild=" + lightweightChild + ", temporary=" + temporary + ", focusedWindowChangeAllowed=" + focusedWindowChangeAllowed + ", time= " + time + ", cause=" + cause); } if (LWKeyboardFocusManagerPeer.processSynchronousLightweightTransfer( getTarget(), lightweightChild, temporary, focusedWindowChangeAllowed, time)) { return true; } int result = LWKeyboardFocusManagerPeer.shouldNativelyFocusHeavyweight( getTarget(), lightweightChild, temporary, focusedWindowChangeAllowed, time, cause); switch (result) { case LWKeyboardFocusManagerPeer.SNFH_FAILURE: return false; case LWKeyboardFocusManagerPeer.SNFH_SUCCESS_PROCEED: Window parentWindow = SunToolkit.getContainingWindow(getTarget()); if (parentWindow == null) { focusLog.fine("request rejected, parentWindow is null"); LWKeyboardFocusManagerPeer.removeLastFocusRequest(getTarget()); return false; } LWWindowPeer parentPeer = (LWWindowPeer) parentWindow.getPeer(); if (parentPeer == null) { focusLog.fine("request rejected, parentPeer is null"); LWKeyboardFocusManagerPeer.removeLastFocusRequest(getTarget()); return false; } // A fix for 7145768. Ensure the parent window is currently natively focused. // The more evident place to perform this check is in KFM.shouldNativelyFocusHeavyweight, // however that is the shared code and this particular problem's reproducibility has // platform specifics. So, it was decided to narrow down the fix to lwawt (OSX) in // current release. TODO: consider fixing it in the shared code. if (!focusedWindowChangeAllowed) { LWWindowPeer decoratedPeer = parentPeer.isSimpleWindow() ? LWWindowPeer.getOwnerFrameDialog(parentPeer) : parentPeer; if (decoratedPeer == null || !decoratedPeer.getPlatformWindow().isActive()) { if (focusLog.isLoggable(PlatformLogger.FINE)) { focusLog.fine("request rejected, focusedWindowChangeAllowed==false, " + "decoratedPeer is inactive: " + decoratedPeer); } LWKeyboardFocusManagerPeer.removeLastFocusRequest(getTarget()); return false; } } boolean res = parentPeer.requestWindowFocus(cause); // If parent window can be made focused and has been made focused (synchronously) // then we can proceed with children, otherwise we retreat if (!res || !parentWindow.isFocused()) { if (focusLog.isLoggable(PlatformLogger.FINE)) { focusLog.fine("request rejected, res= " + res + ", parentWindow.isFocused()=" + parentWindow.isFocused()); } LWKeyboardFocusManagerPeer.removeLastFocusRequest(getTarget()); return false; } KeyboardFocusManagerPeer kfmPeer = LWKeyboardFocusManagerPeer.getInstance(); Component focusOwner = kfmPeer.getCurrentFocusOwner(); return LWKeyboardFocusManagerPeer.deliverFocus(lightweightChild, getTarget(), temporary, focusedWindowChangeAllowed, time, cause, focusOwner); case LWKeyboardFocusManagerPeer.SNFH_SUCCESS_HANDLED: return true; } return false; }
public KeyboardFocusManagerPeer createKeyboardFocusManagerPeer(KeyboardFocusManager kfm) { return getKeyboardFocusManagerPeer(); }
public KeyboardFocusManagerPeer getKeyboardFocusManagerPeer() { return BDKeyboardFocusManagerPeer.getInstance(); }
/** * Gets a singleton KeyboardFocusManagerPeer instance. */ KeyboardFocusManagerPeer getKeyboardFocusManagerPeer();
/** * Creates a KeyboardFocusManagerPeer for the specified KeyboardFocusManager. */ KeyboardFocusManagerPeer createKeyboardFocusManagerPeer(KeyboardFocusManager manager);
public abstract KeyboardFocusManagerPeer createKeyboardFocusManagerPeer(KeyboardFocusManager kfm);
public abstract KeyboardFocusManagerPeer getKeyboardFocusManagerPeer();