/*
* Copyright (c) 2001, 2004, Oracle and/or its affiliates. All rights reserved.
* ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*/
package javax.swing;
import java.awt.*;
import java.awt.event.*;
import java.beans.*;
import java.util.
Set;
/**
* Provides a javax.swing.DefaultFocusManager view onto an arbitrary
* java.awt.KeyboardFocusManager. We subclass DefaultFocusManager instead of
* FocusManager because it seems more backward-compatible. It is likely that
* some pre-1.4 code assumes that the object returned by
* FocusManager.getCurrentManager is an instance of DefaultFocusManager unless
* set explicitly.
*/
final class
DelegatingDefaultFocusManager extends
DefaultFocusManager {
private final
KeyboardFocusManager delegate;
DelegatingDefaultFocusManager(
KeyboardFocusManager delegate) {
this.
delegate =
delegate;
setDefaultFocusTraversalPolicy(
gluePolicy);
}
KeyboardFocusManager getDelegate() {
return
delegate;
}
// Legacy methods which first appeared in javax.swing.FocusManager.
// Client code is most likely to invoke these methods.
public void
processKeyEvent(
Component focusedComponent,
KeyEvent e) {
delegate.
processKeyEvent(
focusedComponent,
e);
}
public void
focusNextComponent(
Component aComponent) {
delegate.
focusNextComponent(
aComponent);
}
public void
focusPreviousComponent(
Component aComponent) {
delegate.
focusPreviousComponent(
aComponent);
}
// Make sure that we delegate all new methods in KeyboardFocusManager
// as well as the legacy methods from Swing. It is theoretically possible,
// although unlikely, that a client app will treat this instance as a
// new-style KeyboardFocusManager. We might as well be safe.
//
// The JLS won't let us override the protected methods in
// KeyboardFocusManager such that they invoke the corresponding methods on
// the delegate. However, since client code would never be able to call
// those methods anyways, we don't have to worry about that problem.
public
Component getFocusOwner() {
return
delegate.
getFocusOwner();
}
public void
clearGlobalFocusOwner() {
delegate.
clearGlobalFocusOwner();
}
public
Component getPermanentFocusOwner() {
return
delegate.
getPermanentFocusOwner();
}
public
Window getFocusedWindow() {
return
delegate.
getFocusedWindow();
}
public
Window getActiveWindow() {
return
delegate.
getActiveWindow();
}
public
FocusTraversalPolicy getDefaultFocusTraversalPolicy() {
return
delegate.
getDefaultFocusTraversalPolicy();
}
public void
setDefaultFocusTraversalPolicy(
FocusTraversalPolicy
defaultPolicy) {
if (
delegate != null) {
// Will be null when invoked from supers constructor.
delegate.
setDefaultFocusTraversalPolicy(
defaultPolicy);
}
}
public void
setDefaultFocusTraversalKeys(int
id,
Set<? extends
AWTKeyStroke>
keystrokes)
{
delegate.
setDefaultFocusTraversalKeys(
id,
keystrokes);
}
public
Set<
AWTKeyStroke>
getDefaultFocusTraversalKeys(int
id) {
return
delegate.
getDefaultFocusTraversalKeys(
id);
}
public
Container getCurrentFocusCycleRoot() {
return
delegate.
getCurrentFocusCycleRoot();
}
public void
setGlobalCurrentFocusCycleRoot(
Container newFocusCycleRoot) {
delegate.
setGlobalCurrentFocusCycleRoot(
newFocusCycleRoot);
}
public void
addPropertyChangeListener(
PropertyChangeListener listener) {
delegate.
addPropertyChangeListener(
listener);
}
public void
removePropertyChangeListener(
PropertyChangeListener listener) {
delegate.
removePropertyChangeListener(
listener);
}
public void
addPropertyChangeListener(
String propertyName,
PropertyChangeListener listener) {
delegate.
addPropertyChangeListener(
propertyName,
listener);
}
public void
removePropertyChangeListener(
String propertyName,
PropertyChangeListener listener) {
delegate.
removePropertyChangeListener(
propertyName,
listener);
}
public void
addVetoableChangeListener(
VetoableChangeListener listener) {
delegate.
addVetoableChangeListener(
listener);
}
public void
removeVetoableChangeListener(
VetoableChangeListener listener) {
delegate.
removeVetoableChangeListener(
listener);
}
public void
addVetoableChangeListener(
String propertyName,
VetoableChangeListener listener) {
delegate.
addVetoableChangeListener(
propertyName,
listener);
}
public void
removeVetoableChangeListener(
String propertyName,
VetoableChangeListener listener) {
delegate.
removeVetoableChangeListener(
propertyName,
listener);
}
public void
addKeyEventDispatcher(
KeyEventDispatcher dispatcher) {
delegate.
addKeyEventDispatcher(
dispatcher);
}
public void
removeKeyEventDispatcher(
KeyEventDispatcher dispatcher) {
delegate.
removeKeyEventDispatcher(
dispatcher);
}
public boolean
dispatchEvent(
AWTEvent e) {
return
delegate.
dispatchEvent(
e);
}
public boolean
dispatchKeyEvent(
KeyEvent e) {
return
delegate.
dispatchKeyEvent(
e);
}
public void
upFocusCycle(
Component aComponent) {
delegate.
upFocusCycle(
aComponent);
}
public void
downFocusCycle(
Container aContainer) {
delegate.
downFocusCycle(
aContainer);
}
}