Source Code Cross Referenced for DefaultFocusManager.java in  » 6.0-JDK-Core » swing » javax » swing » Java Source Code / Java DocumentationJava Source Code and Java Documentation

Home
Java Source Code / Java Documentation
1.6.0 JDK Core
2.6.0 JDK Modules
3.6.0 JDK Modules com.sun
4.6.0 JDK Modules com.sun.java
5.6.0 JDK Modules sun
6.6.0 JDK Platform
7.Ajax
8.Apache Harmony Java SE
9.Aspect oriented
10.Authentication Authorization
11.Blogger System
12.Build
13.Byte Code
14.Cache
15.Chart
16.Chat
17.Code Analyzer
18.Collaboration
19.Content Management System
20.Database Client
21.Database DBMS
22.Database JDBC Connection Pool
23.Database ORM
24.Development
25.EJB Server
26.ERP CRM Financial
27.ESB
28.Forum
29.Game
30.GIS
31.Graphic 3D
32.Graphic Library
33.Groupware
34.HTML Parser
35.IDE
36.IDE Eclipse
37.IDE Netbeans
38.Installer
39.Internationalization Localization
40.Inversion of Control
41.Issue Tracking
42.J2EE
43.J2ME
44.JBoss
45.JMS
46.JMX
47.Library
48.Mail Clients
49.Music
50.Net
51.Parser
52.PDF
53.Portal
54.Profiler
55.Project Management
56.Report
57.RSS RDF
58.Rule Engine
59.Science
60.Scripting
61.Search Engine
62.Security
63.Sevlet Container
64.Source Control
65.Swing Library
66.Template Engine
67.Test Coverage
68.Testing
69.UML
70.Web Crawler
71.Web Framework
72.Web Mail
73.Web Server
74.Web Services
75.Web Services apache cxf 2.2.6
76.Web Services AXIS2
77.Wiki Engine
78.Workflow Engines
79.XML
80.XML UI
Java Source Code / Java Documentation » 6.0 JDK Core » swing » javax.swing 
Source Cross Referenced  Class Diagram Java Document (Java Doc) 


001        /*
002         * Copyright 1997-2003 Sun Microsystems, Inc.  All Rights Reserved.
003         * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
004         *
005         * This code is free software; you can redistribute it and/or modify it
006         * under the terms of the GNU General Public License version 2 only, as
007         * published by the Free Software Foundation.  Sun designates this
008         * particular file as subject to the "Classpath" exception as provided
009         * by Sun in the LICENSE file that accompanied this code.
010         *
011         * This code is distributed in the hope that it will be useful, but WITHOUT
012         * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
013         * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
014         * version 2 for more details (a copy is included in the LICENSE file that
015         * accompanied this code).
016         *
017         * You should have received a copy of the GNU General Public License version
018         * 2 along with this work; if not, write to the Free Software Foundation,
019         * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
020         *
021         * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
022         * CA 95054 USA or visit www.sun.com if you need additional information or
023         * have any questions.
024         */
025        package javax.swing;
026
027        import java.awt.Component;
028        import java.awt.Container;
029        import java.awt.FocusTraversalPolicy;
030        import java.util.Comparator;
031
032        /**
033         * This class has been obsoleted by the 1.4 focus APIs. While client code may
034         * still use this class, developers are strongly encouraged to use
035         * <code>java.awt.KeyboardFocusManager</code> and
036         * <code>java.awt.DefaultKeyboardFocusManager</code> instead.
037         * <p>
038         * Please see
039         * <a href="http://java.sun.com/docs/books/tutorial/uiswing/misc/focus.html">
040         * How to Use the Focus Subsystem</a>,
041         * a section in <em>The Java Tutorial</em>, and the
042         * <a href="../../java/awt/doc-files/FocusSpec.html">Focus Specification</a>
043         * for more information.
044         *
045         * @version 1.36, 05/05/07
046         * @author Arnaud Weber
047         * @author David Mendenhall
048         */
049        public class DefaultFocusManager extends FocusManager {
050
051            final FocusTraversalPolicy gluePolicy = new LegacyGlueFocusTraversalPolicy(
052                    this );
053            private final FocusTraversalPolicy layoutPolicy = new LegacyLayoutFocusTraversalPolicy(
054                    this );
055            private final LayoutComparator comparator = new LayoutComparator();
056
057            public DefaultFocusManager() {
058                setDefaultFocusTraversalPolicy(gluePolicy);
059            }
060
061            public Component getComponentAfter(Container aContainer,
062                    Component aComponent) {
063                Container root = (aContainer.isFocusCycleRoot()) ? aContainer
064                        : aContainer.getFocusCycleRootAncestor();
065
066                // Support for mixed 1.4/pre-1.4 focus APIs. If a particular root's
067                // traversal policy is non-legacy, then honor it.
068                if (root != null) {
069                    FocusTraversalPolicy policy = root
070                            .getFocusTraversalPolicy();
071                    if (policy != gluePolicy) {
072                        return policy.getComponentAfter(root, aComponent);
073                    }
074
075                    comparator.setComponentOrientation(root
076                            .getComponentOrientation());
077                    return layoutPolicy.getComponentAfter(root, aComponent);
078                }
079
080                return null;
081            }
082
083            public Component getComponentBefore(Container aContainer,
084                    Component aComponent) {
085                Container root = (aContainer.isFocusCycleRoot()) ? aContainer
086                        : aContainer.getFocusCycleRootAncestor();
087
088                // Support for mixed 1.4/pre-1.4 focus APIs. If a particular root's
089                // traversal policy is non-legacy, then honor it.
090                if (root != null) {
091                    FocusTraversalPolicy policy = root
092                            .getFocusTraversalPolicy();
093                    if (policy != gluePolicy) {
094                        return policy.getComponentBefore(root, aComponent);
095                    }
096
097                    comparator.setComponentOrientation(root
098                            .getComponentOrientation());
099                    return layoutPolicy.getComponentBefore(root, aComponent);
100                }
101
102                return null;
103            }
104
105            public Component getFirstComponent(Container aContainer) {
106                Container root = (aContainer.isFocusCycleRoot()) ? aContainer
107                        : aContainer.getFocusCycleRootAncestor();
108
109                // Support for mixed 1.4/pre-1.4 focus APIs. If a particular root's
110                // traversal policy is non-legacy, then honor it.
111                if (root != null) {
112                    FocusTraversalPolicy policy = root
113                            .getFocusTraversalPolicy();
114                    if (policy != gluePolicy) {
115                        return policy.getFirstComponent(root);
116                    }
117
118                    comparator.setComponentOrientation(root
119                            .getComponentOrientation());
120                    return layoutPolicy.getFirstComponent(root);
121                }
122
123                return null;
124            }
125
126            public Component getLastComponent(Container aContainer) {
127                Container root = (aContainer.isFocusCycleRoot()) ? aContainer
128                        : aContainer.getFocusCycleRootAncestor();
129
130                // Support for mixed 1.4/pre-1.4 focus APIs. If a particular root's
131                // traversal policy is non-legacy, then honor it.
132                if (root != null) {
133                    FocusTraversalPolicy policy = root
134                            .getFocusTraversalPolicy();
135                    if (policy != gluePolicy) {
136                        return policy.getLastComponent(root);
137                    }
138
139                    comparator.setComponentOrientation(root
140                            .getComponentOrientation());
141                    return layoutPolicy.getLastComponent(root);
142                }
143
144                return null;
145            }
146
147            public boolean compareTabOrder(Component a, Component b) {
148                return (comparator.compare(a, b) < 0);
149            }
150        }
151
152        final class LegacyLayoutFocusTraversalPolicy extends
153                LayoutFocusTraversalPolicy {
154            LegacyLayoutFocusTraversalPolicy(
155                    DefaultFocusManager defaultFocusManager) {
156                super (new CompareTabOrderComparator(defaultFocusManager));
157            }
158        }
159
160        final class CompareTabOrderComparator implements  Comparator {
161            private final DefaultFocusManager defaultFocusManager;
162
163            CompareTabOrderComparator(DefaultFocusManager defaultFocusManager) {
164                this .defaultFocusManager = defaultFocusManager;
165            }
166
167            public int compare(Object o1, Object o2) {
168                if (o1 == o2) {
169                    return 0;
170                }
171                return (defaultFocusManager.compareTabOrder((Component) o1,
172                        (Component) o2)) ? -1 : 1;
173            }
174        }
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.