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 [EMAIL PROTECTED] KeyboardFocusManagerPeer}. This has to be
implemented by
+ * [EMAIL PROTECTED] java.awt.Toolkit}s that provide a
KeyboardFocusManagerPeer.
+ * The method [EMAIL PROTECTED] KeyboardFocusManager#initPeer()} checks the
current
+ * toolkit if it implements this interface. If not, a dummy
+ * ([EMAIL PROTECTED] DummyKeyboardFocusManagerPeer} is used, which does
nothing.
+ *
+ * @author Roman Kennke ([EMAIL PROTECTED])
+ */
+public interface KeyboardFocusManagerPeerProvider {
+
+ /**
+ * Creates a KeyboardFocusManagerPeer for the specified
+ * KeyboardFocusManager.
+ */
+ KeyboardFocusManagerPeer
+ createKeyboardFocusManagerPeer(KeyboardFocusManager m);
+}