<AWT Dev> RFC: KeyboardFocusManager patch
Anton V. Tarasov
Anton.Tarasov at Sun.COM
Fri Jun 22 05:57:14 PDT 2007
Hi Roman,
The fix looks Ok (for me).
Now what we need is to achieve unity in the question of integration =)
Thanks,
Anton.
Roman Kennke wrote:
> Hi,
>
>> Sounds very reasonable to me. I attached a revised patch.
>
> Ok, I didn't ;-) But now!
>
> /Roman
>
>
>
> ------------------------------------------------------------------------
>
> Index: j2se/src/share/classes/java/awt/KeyboardFocusManager.java
> ===================================================================
> --- j2se/src/share/classes/java/awt/KeyboardFocusManager.java (Revision 237)
> +++ j2se/src/share/classes/java/awt/KeyboardFocusManager.java (Arbeitskopie)
> @@ -45,9 +45,12 @@
> import java.util.StringTokenizer;
> import java.util.WeakHashMap;
> import java.util.logging.*;
> +
> import sun.awt.AppContext;
> import sun.awt.DebugHelper;
> +import sun.awt.DummyKeyboardFocusManagerPeer;
> import sun.awt.HeadlessToolkit;
> +import sun.awt.KeyboardFocusManagerPeerProvider;
> import sun.awt.SunToolkit;
> import sun.awt.CausedFocusEvent;
>
> @@ -413,12 +416,10 @@
> }
>
> private void initPeer() {
> - if (Toolkit.getDefaultToolkit() instanceof HeadlessToolkit){
> - peer = ((HeadlessToolkit)Toolkit.getDefaultToolkit()).createKeyboardFocusManagerPeer(this);
> - }
> - if (Toolkit.getDefaultToolkit() instanceof SunToolkit){
> - peer = ((SunToolkit)Toolkit.getDefaultToolkit()).createKeyboardFocusManagerPeer(this);
> - }
> + Toolkit tk = Toolkit.getDefaultToolkit();
> + KeyboardFocusManagerPeerProvider kfmp =
> + (KeyboardFocusManagerPeerProvider) tk;
> + peer = kfmp.createKeyboardFocusManagerPeer(this);
> }
>
> /**
> Index: j2se/src/share/classes/sun/awt/SunToolkit.java
> ===================================================================
> --- j2se/src/share/classes/sun/awt/SunToolkit.java (Revision 237)
> +++ j2se/src/share/classes/sun/awt/SunToolkit.java (Arbeitskopie)
> @@ -64,7 +64,7 @@
>
> public abstract class SunToolkit extends Toolkit
> implements WindowClosingSupport, WindowClosingListener,
> - ComponentFactory, InputMethodSupport {
> + ComponentFactory, InputMethodSupport, KeyboardFocusManagerPeerProvider {
>
> private static final Logger log = Logger.getLogger("sun.awt.SunToolkit");
>
> Index: j2se/src/share/classes/sun/awt/HeadlessToolkit.java
> ===================================================================
> --- j2se/src/share/classes/sun/awt/HeadlessToolkit.java (Revision 237)
> +++ j2se/src/share/classes/sun/awt/HeadlessToolkit.java (Arbeitskopie)
> @@ -44,7 +44,7 @@
> import sun.awt.image.ImageRepresentation;
>
> public class HeadlessToolkit extends Toolkit
> - implements ComponentFactory {
> + implements ComponentFactory, KeyboardFocusManagerPeerProvider {
>
> private Toolkit tk;
> private ComponentFactory componentFactory;
> Index: j2se/src/share/classes/sun/awt/KeyboardFocusManagerPeerProvider.java
> ===================================================================
> --- j2se/src/share/classes/sun/awt/KeyboardFocusManagerPeerProvider.java (Revision 0)
> +++ j2se/src/share/classes/sun/awt/KeyboardFocusManagerPeerProvider.java (Revision 0)
> @@ -0,0 +1,48 @@
> +/*
> + * Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
> + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
> + *
> + * This code is free software; you can redistribute it and/or modify it
> + * under the terms of the GNU General Public License version 2 only, as
> + * published by the Free Software Foundation. Sun designates this
> + * particular file as subject to the "Classpath" exception as provided
> + * by Sun in the LICENSE file that accompanied this code.
> + *
> + * This code is distributed in the hope that it will be useful, but WITHOUT
> + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
> + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
> + * version 2 for more details (a copy is included in the LICENSE file that
> + * accompanied this code).
> + *
> + * You should have received a copy of the GNU General Public License version
> + * 2 along with this work; if not, write to the Free Software Foundation,
> + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
> + *
> + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
> + * CA 95054 USA or visit www.sun.com if you need additional information or
> + * have any questions.
> + */
> +
> +package sun.awt;
> +
> +import java.awt.KeyboardFocusManager;
> +import java.awt.peer.KeyboardFocusManagerPeer;
> +
> +/**
> + * Provides a {@link KeyboardFocusManagerPeer}. This has to be implemented by
> + * {@link java.awt.Toolkit}s that provide a KeyboardFocusManagerPeer.
> + * The method {@link KeyboardFocusManager#initPeer()} checks the current
> + * toolkit if it implements this interface. If not, a dummy
> + * ({@link DummyKeyboardFocusManagerPeer} is used, which does nothing.
> + *
> + * @author Roman Kennke (roman.kennke at aicas.com)
> + */
> +public interface KeyboardFocusManagerPeerProvider {
> +
> + /**
> + * Creates a KeyboardFocusManagerPeer for the specified
> + * KeyboardFocusManager.
> + */
> + KeyboardFocusManagerPeer
> + createKeyboardFocusManagerPeer(KeyboardFocusManager m);
> +}
More information about the awt-dev
mailing list