1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134
/* * @(#)FocusManager.java 1.29 05/11/17 * * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */ package javax.swing; import java.awt.*; /** * This class has been obsoleted by the 1.4 focus APIs. While client code may * still use this class, developers are strongly encouraged to use * <code>java.awt.KeyboardFocusManager</code> and * <code>java.awt.DefaultKeyboardFocusManager</code> instead. * <p> * Please see * <a href="http://java.sun.com/docs/books/tutorial/uiswing/misc/focus.html"> * How to Use the Focus Subsystem</a>, * a section in <em>The Java Tutorial</em>, and the * <a href="../../java/awt/doc-files/FocusSpec.html">Focus Specification</a> * for more information. * * @see <a href="../../java/awt/doc-files/FocusSpec.html">Focus Specification</a> * * @version 1.29, 11/17/05 * @author Arnaud Weber * @author David Mendenhall */ public abstract class FocusManager extends DefaultKeyboardFocusManager { /** * This field is obsolete, and its use is discouraged since its * specification is incompatible with the 1.4 focus APIs. * The current FocusManager is no longer a property of the UI. * Client code must query for the current FocusManager using * <code>KeyboardFocusManager.getCurrentKeyboardFocusManager()</code>. * See the Focus Specification for more information. * * @see java.awt.KeyboardFocusManager#getCurrentKeyboardFocusManager * @see <a href="../../java/awt/doc-files/FocusSpec.html">Focus Specification</a> */ public static final String FOCUS_MANAGER_CLASS_PROPERTY = "FocusManagerClassName"; private static boolean enabled = true; /** * Returns the current <code>KeyboardFocusManager</code> instance * for the calling thread's context. * * @return this thread's context's <code>KeyboardFocusManager</code> * @see #setCurrentManager */ public static FocusManager getCurrentManager() { KeyboardFocusManager manager = KeyboardFocusManager.getCurrentKeyboardFocusManager(); if (manager instanceof FocusManager) { return (FocusManager)manager; } else { return new DelegatingDefaultFocusManager(manager); } } /** * Sets the current <code>KeyboardFocusManager</code> instance * for the calling thread's context. If <code>null</code> is * specified, then the current <code>KeyboardFocusManager</code> * is replaced with a new instance of * <code>DefaultKeyboardFocusManager</code>. * <p> * If a <code>SecurityManager</code> is installed, * the calling thread must be granted the <code>AWTPermission</code> * "replaceKeyboardFocusManager" in order to replace the * the current <code>KeyboardFocusManager</code>. * If this permission is not granted, * this method will throw a <code>SecurityException</code>, * and the current <code>KeyboardFocusManager</code> will be unchanged. * * @param aFocusManager the new <code>KeyboardFocusManager</code> * for this thread's context * @see #getCurrentManager * @see java.awt.DefaultKeyboardFocusManager * @throws SecurityException if the calling thread does not have permission * to replace the current <code>KeyboardFocusManager</code> */ public static void setCurrentManager(FocusManager aFocusManager) throws SecurityException { // Note: This method is not backward-compatible with 1.3 and earlier // releases. It now throws a SecurityException in an applet, whereas // in previous releases, it did not. This issue was discussed at // length, and ultimately approved by Hans. KeyboardFocusManager toSet = (aFocusManager instanceof DelegatingDefaultFocusManager) ? ((DelegatingDefaultFocusManager)aFocusManager).getDelegate() : aFocusManager; KeyboardFocusManager.setCurrentKeyboardFocusManager(toSet); } /** * Changes the current <code>KeyboardFocusManager</code>'s default * <code>FocusTraversalPolicy</code> to * <code>DefaultFocusTraversalPolicy</code>. * * @see java.awt.DefaultFocusTraversalPolicy * @see java.awt.KeyboardFocusManager#setDefaultFocusTraversalPolicy * @deprecated as of 1.4, replaced by * <code>KeyboardFocusManager.setDefaultFocusTraversalPolicy(FocusTraversalPolicy)</code> */ @Deprecated public static void disableSwingFocusManager() { if (enabled) { enabled = false; KeyboardFocusManager.getCurrentKeyboardFocusManager(). setDefaultFocusTraversalPolicy( new DefaultFocusTraversalPolicy()); } } /** * Returns whether the application has invoked * <code>disableSwingFocusManager()</code>. * * @see #disableSwingFocusManager * @deprecated As of 1.4, replaced by * <code>KeyboardFocusManager.getDefaultFocusTraversalPolicy()</code> */ @Deprecated public static boolean isFocusManagerEnabled() { return enabled; } }