diff options
author | Roman Kennke <roman@kennke.org> | 2007-06-22 09:52:04 +0000 |
---|---|---|
committer | Roman Kennke <roman@kennke.org> | 2007-06-22 09:52:04 +0000 |
commit | 3f1a4e8cdf9c4efd500d3f49490cea5d16e35563 (patch) | |
tree | df42925e77c347adc23d5ee88383bda78f876533 | |
parent | c811fcb3307525899e33413e083ef34b2282fc34 (diff) | |
download | classpath-3f1a4e8cdf9c4efd500d3f49490cea5d16e35563.tar.gz |
2007-06-22 Roman Kennke <roman@kennke.org>
* sun/awt/CausedFocusEvent.java: New class. Needed for compatibility
in java.awt.peer.
* java/awt/Dialog.java
(ModalExclusionType): New enum.
(ModalityType): New enum.
* java/awt/Toolkit.java
(isModalExclusionTypeSupported): New abstract method.
(isModalityTypeSupported): New abstract method.
* java/awt/peer/ComponentPeer.java
(requestFocus): New method.
* java/awt/peer/FramePeer.java
(getBoundsPrivate): New method.
* java/awt/peer/RobotPeer.java
(dispose): New method.
* java/awt/peer/WindowPeer.java
(setAlwaysOnTop): New method.
(updateFocusableWindowState): New method.
(setModalBlocked): New method.
(updateMinimumSize): New method.
(updateIconImages): New method.
* gnu/java/awt/peer/GLightweightPeer.java
(requestFocus): New method.
* gnu/java/awt/peer/gtk/GdkRobotPeer.java
(dispose): New method.
* gnu/java/awt/peer/gtk/GtkComponentPeer.java
(requestFocus): New method.
* gnu/java/awt/peer/gtk/GtkFramePeer.java
(getBoundsPrivate): New method.
* gnu/java/awt/peer/gtk/GtkToolkit.java
(isModalExclusionTypeSupported): New method.
(isModalityTypeSupported): New method.
* gnu/java/awt/peer/gtk/GtkWindowPeer.java
(updateIconImages): New method.
(updateMinimumSize): New method.
(setModalBlocked): New method.
(updateFocusableWindowState): New method.
(setAlwaysOnTop): New method.
* gnu/java/awt/peer/headless/HeadlessToolkit.java
(isModalExclusionTypeSupported): New method.
(isModalityTypeSupported): New method.
* gnu/java/awt/peer/qt/QtComponentPeer.java
(requestFocus): New method.
* gnu/java/awt/peer/qt/QtFramePeer.java
(getBoundsPrivate): New method.
* gnu/java/awt/peer/qt/QtToolkit.java
(isModalExclusionTypeSupported): New method.
(isModalityTypeSupported): New method.
* gnu/java/awt/peer/qt/QtWindowPeer.java
(updateIconImages): New method.
(updateMinimumSize): New method.
(setModalBlocked): New method.
(updateFocusableWindowState): New method.
(setAlwaysOnTop): New method.
* gnu/java/awt/peer/swing/SwingComponentPeer.java
(requestFocus): New method.
* gnu/java/awt/peer/swing/SwingToolkit.java
(isModalExclusionTypeSupported): New method.
(isModalityTypeSupported): New method.
* gnu/java/awt/peer/swing/SwingWindowPeer.java
(updateIconImages): New method.
(updateMinimumSize): New method.
(setModalBlocked): New method.
(updateFocusableWindowState): New method.
(setAlwaysOnTop): New method.
* gnu/java/awt/peer/x/XFramePeer.java
(getBoundsPrivate): New method.
* gnu/java/awt/peer/x/XToolkit.java
(isModalExclusionTypeSupported): New method.
(isModalityTypeSupported): New method.
24 files changed, 445 insertions, 1 deletions
@@ -1,3 +1,75 @@ +2007-06-22 Roman Kennke <roman@kennke.org> + + * sun/awt/CausedFocusEvent.java: New class. Needed for compatibility + in java.awt.peer. + * java/awt/Dialog.java + (ModalExclusionType): New enum. + (ModalityType): New enum. + * java/awt/Toolkit.java + (isModalExclusionTypeSupported): New abstract method. + (isModalityTypeSupported): New abstract method. + * java/awt/peer/ComponentPeer.java + (requestFocus): New method. + * java/awt/peer/FramePeer.java + (getBoundsPrivate): New method. + * java/awt/peer/RobotPeer.java + (dispose): New method. + * java/awt/peer/WindowPeer.java + (setAlwaysOnTop): New method. + (updateFocusableWindowState): New method. + (setModalBlocked): New method. + (updateMinimumSize): New method. + (updateIconImages): New method. + * gnu/java/awt/peer/GLightweightPeer.java + (requestFocus): New method. + * gnu/java/awt/peer/gtk/GdkRobotPeer.java + (dispose): New method. + * gnu/java/awt/peer/gtk/GtkComponentPeer.java + (requestFocus): New method. + * gnu/java/awt/peer/gtk/GtkFramePeer.java + (getBoundsPrivate): New method. + * gnu/java/awt/peer/gtk/GtkToolkit.java + (isModalExclusionTypeSupported): New method. + (isModalityTypeSupported): New method. + * gnu/java/awt/peer/gtk/GtkWindowPeer.java + (updateIconImages): New method. + (updateMinimumSize): New method. + (setModalBlocked): New method. + (updateFocusableWindowState): New method. + (setAlwaysOnTop): New method. + * gnu/java/awt/peer/headless/HeadlessToolkit.java + (isModalExclusionTypeSupported): New method. + (isModalityTypeSupported): New method. + * gnu/java/awt/peer/qt/QtComponentPeer.java + (requestFocus): New method. + * gnu/java/awt/peer/qt/QtFramePeer.java + (getBoundsPrivate): New method. + * gnu/java/awt/peer/qt/QtToolkit.java + (isModalExclusionTypeSupported): New method. + (isModalityTypeSupported): New method. + * gnu/java/awt/peer/qt/QtWindowPeer.java + (updateIconImages): New method. + (updateMinimumSize): New method. + (setModalBlocked): New method. + (updateFocusableWindowState): New method. + (setAlwaysOnTop): New method. + * gnu/java/awt/peer/swing/SwingComponentPeer.java + (requestFocus): New method. + * gnu/java/awt/peer/swing/SwingToolkit.java + (isModalExclusionTypeSupported): New method. + (isModalityTypeSupported): New method. + * gnu/java/awt/peer/swing/SwingWindowPeer.java + (updateIconImages): New method. + (updateMinimumSize): New method. + (setModalBlocked): New method. + (updateFocusableWindowState): New method. + (setAlwaysOnTop): New method. + * gnu/java/awt/peer/x/XFramePeer.java + (getBoundsPrivate): New method. + * gnu/java/awt/peer/x/XToolkit.java + (isModalExclusionTypeSupported): New method. + (isModalityTypeSupported): New method. + 2007-06-21 Andrew John Hughes <gnu_andrew@member.fsf.org> * tools/Makefile.am: diff --git a/gnu/java/awt/peer/GLightweightPeer.java b/gnu/java/awt/peer/GLightweightPeer.java index f9a7bac8e..262b74e69 100644 --- a/gnu/java/awt/peer/GLightweightPeer.java +++ b/gnu/java/awt/peer/GLightweightPeer.java @@ -449,4 +449,14 @@ public class GLightweightPeer { // Nothing to do here for lightweights. } + + @Override + public boolean requestFocus(Component lightweightChild, boolean temporary, + boolean focusedWindowChangeAllowed, + long time, sun.awt.CausedFocusEvent.Cause cause) + { + // Always grant focus request. + return true; + } + } diff --git a/gnu/java/awt/peer/gtk/GdkRobotPeer.java b/gnu/java/awt/peer/gtk/GdkRobotPeer.java index 6d0218d05..185a74c95 100644 --- a/gnu/java/awt/peer/gtk/GdkRobotPeer.java +++ b/gnu/java/awt/peer/gtk/GdkRobotPeer.java @@ -91,4 +91,10 @@ public class GdkRobotPeer implements RobotPeer return pixels; } + + @Override + public void dispose() + { + // Nothing to do here yet. + } } diff --git a/gnu/java/awt/peer/gtk/GtkComponentPeer.java b/gnu/java/awt/peer/gtk/GtkComponentPeer.java index a7ae8e17f..5733959b1 100644 --- a/gnu/java/awt/peer/gtk/GtkComponentPeer.java +++ b/gnu/java/awt/peer/gtk/GtkComponentPeer.java @@ -899,4 +899,15 @@ public class GtkComponentPeer extends GtkGenericPeer // FIXME: implement } + + @Override + public boolean requestFocus(Component lightweightChild, boolean temporary, + boolean focusedWindowChangeAllowed, + long time, sun.awt.CausedFocusEvent.Cause cause) + { + // TODO: Implement this properly and remove the other requestFocus() + // methods. + return true; + } + } diff --git a/gnu/java/awt/peer/gtk/GtkFramePeer.java b/gnu/java/awt/peer/gtk/GtkFramePeer.java index b35be5227..3b7fce577 100644 --- a/gnu/java/awt/peer/gtk/GtkFramePeer.java +++ b/gnu/java/awt/peer/gtk/GtkFramePeer.java @@ -244,6 +244,14 @@ public class GtkFramePeer extends GtkWindowPeer // TODO Auto-generated method stub return false; } + + @Override + public Rectangle getBoundsPrivate() + { + // TODO: Implement this properly. + throw new InternalError("Not yet implemented"); + } + } diff --git a/gnu/java/awt/peer/gtk/GtkToolkit.java b/gnu/java/awt/peer/gtk/GtkToolkit.java index c98aa1361..dc9c7155e 100644 --- a/gnu/java/awt/peer/gtk/GtkToolkit.java +++ b/gnu/java/awt/peer/gtk/GtkToolkit.java @@ -745,4 +745,17 @@ public class GtkToolkit extends gnu.java.awt.ClasspathToolkit public native int getMouseNumberOfButtons(); + @Override + public boolean isModalExclusionTypeSupported + (Dialog.ModalExclusionType modalExclusionType) + { + return false; + } + + @Override + public boolean isModalityTypeSupported(Dialog.ModalityType modalityType) + { + return false; + } + } // class GtkToolkit diff --git a/gnu/java/awt/peer/gtk/GtkWindowPeer.java b/gnu/java/awt/peer/gtk/GtkWindowPeer.java index 1451dd933..e671d9f40 100644 --- a/gnu/java/awt/peer/gtk/GtkWindowPeer.java +++ b/gnu/java/awt/peer/gtk/GtkWindowPeer.java @@ -398,4 +398,34 @@ public class GtkWindowPeer extends GtkContainerPeer { return new Rectangle(x, y, width, height); } + + @Override + public void updateIconImages() + { + // TODO: Implement properly. + } + + @Override + public void updateMinimumSize() + { + // TODO: Implement properly. + } + + @Override + public void setModalBlocked(java.awt.Dialog d, boolean b) + { + // TODO: Implement properly. + } + + @Override + public void updateFocusableWindowState() + { + // TODO: Implement properly. + } + + @Override + public void setAlwaysOnTop(boolean b) + { + // TODO: Implement properly. + } } diff --git a/gnu/java/awt/peer/headless/HeadlessToolkit.java b/gnu/java/awt/peer/headless/HeadlessToolkit.java index 96798c9e9..58b5f3334 100644 --- a/gnu/java/awt/peer/headless/HeadlessToolkit.java +++ b/gnu/java/awt/peer/headless/HeadlessToolkit.java @@ -368,4 +368,18 @@ public class HeadlessToolkit return graphicsEnv; } + @Override + public boolean isModalExclusionTypeSupported + (Dialog.ModalExclusionType modalExclusionType) + { + return false; + } + + @Override + public boolean isModalityTypeSupported(Dialog.ModalityType modalityType) + { + return false; + } + + } diff --git a/gnu/java/awt/peer/qt/QtComponentPeer.java b/gnu/java/awt/peer/qt/QtComponentPeer.java index 4d7b58c4d..b3df57a1e 100644 --- a/gnu/java/awt/peer/qt/QtComponentPeer.java +++ b/gnu/java/awt/peer/qt/QtComponentPeer.java @@ -821,4 +821,15 @@ public class QtComponentPeer extends NativeWrapper implements ComponentPeer { // TODO Auto-generated method stub } + + @Override + public boolean requestFocus(Component lightweightChild, boolean temporary, + boolean focusedWindowChangeAllowed, + long time, sun.awt.CausedFocusEvent.Cause cause) + { + // TODO: Implement this properly and remove the other requestFocus() + // methods. + return true; + } + } diff --git a/gnu/java/awt/peer/qt/QtFramePeer.java b/gnu/java/awt/peer/qt/QtFramePeer.java index b2c6a5921..1a6e77dfe 100644 --- a/gnu/java/awt/peer/qt/QtFramePeer.java +++ b/gnu/java/awt/peer/qt/QtFramePeer.java @@ -155,4 +155,11 @@ public class QtFramePeer extends QtWindowPeer implements FramePeer return false; } + @Override + public Rectangle getBoundsPrivate() + { + // TODO: Implement this properly. + throw new InternalError("Not yet implemented"); + } + } diff --git a/gnu/java/awt/peer/qt/QtToolkit.java b/gnu/java/awt/peer/qt/QtToolkit.java index 9b53b278b..4cea976ac 100644 --- a/gnu/java/awt/peer/qt/QtToolkit.java +++ b/gnu/java/awt/peer/qt/QtToolkit.java @@ -452,4 +452,19 @@ public class QtToolkit extends ClasspathToolkit // return new QtEmbeddedWindowPeer( this, w ); return null; } + + @Override + public boolean isModalExclusionTypeSupported + (Dialog.ModalExclusionType modalExclusionType) + { + return false; + } + + @Override + public boolean isModalityTypeSupported(Dialog.ModalityType modalityType) + { + return false; + } + + } diff --git a/gnu/java/awt/peer/qt/QtWindowPeer.java b/gnu/java/awt/peer/qt/QtWindowPeer.java index 7baf8e6eb..70579e76a 100644 --- a/gnu/java/awt/peer/qt/QtWindowPeer.java +++ b/gnu/java/awt/peer/qt/QtWindowPeer.java @@ -65,16 +65,48 @@ public class QtWindowPeer extends QtContainerPeer implements WindowPeer */ public native void setTitle(String title); + @Override public void updateAlwaysOnTop() { // TODO Auto-generated method stub } + @Override public boolean requestWindowFocus() { // TODO Auto-generated method stub return false; } + @Override + public void updateIconImages() + { + // TODO: Implement properly. + } + + @Override + public void updateMinimumSize() + { + // TODO: Implement properly. + } + + @Override + public void setModalBlocked(java.awt.Dialog d, boolean b) + { + // TODO: Implement properly. + } + + @Override + public void updateFocusableWindowState() + { + // TODO: Implement properly. + } + + @Override + public void setAlwaysOnTop(boolean b) + { + // TODO: Implement properly. + } + } diff --git a/gnu/java/awt/peer/swing/SwingComponentPeer.java b/gnu/java/awt/peer/swing/SwingComponentPeer.java index baf24c6cc..ebf635869 100644 --- a/gnu/java/awt/peer/swing/SwingComponentPeer.java +++ b/gnu/java/awt/peer/swing/SwingComponentPeer.java @@ -1125,4 +1125,13 @@ public class SwingComponentPeer { return awtComponent; } + + @Override + public boolean requestFocus(Component lightweightChild, boolean temporary, + boolean focusedWindowChangeAllowed, + long time, sun.awt.CausedFocusEvent.Cause cause) + { + return true; + } + } diff --git a/gnu/java/awt/peer/swing/SwingToolkit.java b/gnu/java/awt/peer/swing/SwingToolkit.java index 166e1f47b..63414050b 100644 --- a/gnu/java/awt/peer/swing/SwingToolkit.java +++ b/gnu/java/awt/peer/swing/SwingToolkit.java @@ -40,6 +40,7 @@ package gnu.java.awt.peer.swing; import java.awt.Button; import java.awt.Canvas; +import java.awt.Dialog; import java.awt.Label; import java.awt.Menu; import java.awt.MenuBar; @@ -162,4 +163,19 @@ public abstract class SwingToolkit extends ClasspathToolkit { return new SwingTextFieldPeer(textField); } + + @Override + public boolean isModalExclusionTypeSupported + (Dialog.ModalExclusionType modalExclusionType) + { + return false; + } + + @Override + public boolean isModalityTypeSupported(Dialog.ModalityType modalityType) + { + return false; + } + + } diff --git a/gnu/java/awt/peer/swing/SwingWindowPeer.java b/gnu/java/awt/peer/swing/SwingWindowPeer.java index 531552d90..23858b301 100644 --- a/gnu/java/awt/peer/swing/SwingWindowPeer.java +++ b/gnu/java/awt/peer/swing/SwingWindowPeer.java @@ -71,4 +71,34 @@ public abstract class SwingWindowPeer super(window); init(window, null); } + + @Override + public void updateIconImages() + { + // TODO: Implement properly. + } + + @Override + public void updateMinimumSize() + { + // TODO: Implement properly. + } + + @Override + public void setModalBlocked(java.awt.Dialog d, boolean b) + { + // TODO: Implement properly. + } + + @Override + public void updateFocusableWindowState() + { + // TODO: Implement properly. + } + + @Override + public void setAlwaysOnTop(boolean b) + { + // TODO: Implement properly. + } } diff --git a/gnu/java/awt/peer/x/XFramePeer.java b/gnu/java/awt/peer/x/XFramePeer.java index 439a2a7bb..b6cfdbd14 100644 --- a/gnu/java/awt/peer/x/XFramePeer.java +++ b/gnu/java/awt/peer/x/XFramePeer.java @@ -137,4 +137,11 @@ public class XFramePeer throw new UnsupportedOperationException("Not yet implemented."); } + @Override + public Rectangle getBoundsPrivate() + { + // TODO: Implement this properly. + throw new InternalError("Not yet implemented"); + } + } diff --git a/gnu/java/awt/peer/x/XToolkit.java b/gnu/java/awt/peer/x/XToolkit.java index 02de4a73a..08186326f 100644 --- a/gnu/java/awt/peer/x/XToolkit.java +++ b/gnu/java/awt/peer/x/XToolkit.java @@ -68,6 +68,8 @@ import java.awt.TextArea; import java.awt.TextField; import java.awt.Transparency; import java.awt.Window; +import java.awt.Dialog.ModalExclusionType; +import java.awt.Dialog.ModalityType; import java.awt.datatransfer.Clipboard; import java.awt.dnd.DragGestureEvent; import java.awt.dnd.peer.DragSourceContextPeer; @@ -599,4 +601,20 @@ public class XToolkit return (XGraphicsDevice) env.getDefaultScreenDevice(); } + @Override + public boolean isModalExclusionTypeSupported + (Dialog.ModalExclusionType modalExclusionType) + { + // TODO: Implement properly. + return false; + } + + @Override + public boolean isModalityTypeSupported(Dialog.ModalityType modalityType) + { + // TODO: Implement properly. + return false; + } + + } diff --git a/java/awt/Dialog.java b/java/awt/Dialog.java index 7df2f523c..83fb52d89 100644 --- a/java/awt/Dialog.java +++ b/java/awt/Dialog.java @@ -61,6 +61,21 @@ import javax.accessibility.AccessibleStateSet; */ public class Dialog extends Window { + public enum ModalExclusionType + { + APPLICATION_EXCLUDE, + NO_EXCLUDE, + TOOLKIT_EXCLUDE + } + + public enum ModalityType + { + APPLICATION_MODAL, + DOCUMENT_MODAL, + MODELESS, + TOOLKIT_MODAL + } + // Serialization constant private static final long serialVersionUID = 5920926903803293709L; diff --git a/java/awt/Toolkit.java b/java/awt/Toolkit.java index 305402e95..b12e9e10d 100644 --- a/java/awt/Toolkit.java +++ b/java/awt/Toolkit.java @@ -1287,6 +1287,12 @@ public abstract class Toolkit public abstract Map<TextAttribute,?> mapInputMethodHighlight(InputMethodHighlight highlight); + public abstract boolean isModalExclusionTypeSupported + (Dialog.ModalExclusionType modalExclusionType); + + public abstract boolean isModalityTypeSupported + (Dialog.ModalityType modalityType); + /** * Initializes the accessibility framework. In particular, this loads the * properties javax.accessibility.screen_magnifier_present and diff --git a/java/awt/peer/ComponentPeer.java b/java/awt/peer/ComponentPeer.java index bc6e3a457..b498ddf66 100644 --- a/java/awt/peer/ComponentPeer.java +++ b/java/awt/peer/ComponentPeer.java @@ -59,6 +59,8 @@ import java.awt.image.ImageObserver; import java.awt.image.ImageProducer; import java.awt.image.VolatileImage; +import sun.awt.CausedFocusEvent; + /** * Defines the methods that a component peer is required to implement. */ @@ -264,7 +266,7 @@ public interface ComponentPeer /** * Requests that this component receives the focus. This is called from * {@link Component#requestFocus()}. - * + * * @specnote Part of the earlier 1.1 API, apparently replaced by argument * form of the same method. */ @@ -518,4 +520,13 @@ public interface ComponentPeer * @since 1.5 */ void layout(); + + + /** + * Requests the focus on the component. + */ + boolean requestFocus(Component lightweightChild, boolean temporary, + boolean focusedWindowChangeAllowed, long time, + CausedFocusEvent.Cause cause); + } diff --git a/java/awt/peer/FramePeer.java b/java/awt/peer/FramePeer.java index 13435f8e4..929791489 100644 --- a/java/awt/peer/FramePeer.java +++ b/java/awt/peer/FramePeer.java @@ -71,5 +71,8 @@ public interface FramePeer extends WindowPeer * @since 1.5 */ void setBoundsPrivate(int x, int y, int width, int height); + + Rectangle getBoundsPrivate(); + } // interface FramePeer diff --git a/java/awt/peer/RobotPeer.java b/java/awt/peer/RobotPeer.java index db81c809d..a11bfc734 100644 --- a/java/awt/peer/RobotPeer.java +++ b/java/awt/peer/RobotPeer.java @@ -50,5 +50,7 @@ public interface RobotPeer void keyRelease (int keycode); int getRGBPixel (int x, int y); int[] getRGBPixels (Rectangle screen); + void dispose(); + } // interface RobotPeer diff --git a/java/awt/peer/WindowPeer.java b/java/awt/peer/WindowPeer.java index 00d103579..e8b7d7201 100644 --- a/java/awt/peer/WindowPeer.java +++ b/java/awt/peer/WindowPeer.java @@ -38,6 +38,8 @@ exception statement from your version. */ package java.awt.peer; +import java.awt.Dialog; + public interface WindowPeer extends ContainerPeer { void toBack(); @@ -57,5 +59,12 @@ public interface WindowPeer extends ContainerPeer * @since 1.5 */ boolean requestWindowFocus(); + + void setAlwaysOnTop(boolean alwaysOnTop); + void updateFocusableWindowState(); + void setModalBlocked(Dialog blocker, boolean blocked); + void updateMinimumSize(); + void updateIconImages(); + } // interface WindowPeer diff --git a/sun/awt/CausedFocusEvent.java b/sun/awt/CausedFocusEvent.java new file mode 100644 index 000000000..6e0feb9a7 --- /dev/null +++ b/sun/awt/CausedFocusEvent.java @@ -0,0 +1,89 @@ +/* CausedFocusEvent.java -- A special focus event for peers. + Copyright (C) 2007 Free Software Foundation + +This file is part of GNU Classpath. + +GNU Classpath is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GNU Classpath 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 for more details. + +You should have received a copy of the GNU General Public License +along with GNU Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +02110-1301 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ + +package sun.awt; + +import java.awt.Component; +import java.awt.event.FocusEvent; + +/** + * Special FocusEvent for peers. This has additional knowledge about the + * cause of the focus change. + */ +public class CausedFocusEvent +extends FocusEvent +{ + + public enum Cause + { + UNKNOWN, + MOUSE_EVENT, + TRAVERSAL, + TRAVERSAL_UP, + TRAVERSAL_DOWN, + TRAVERSAL_FORWARD, + TRAVERSAL_BACKWARD, + MANUAL_REQUEST, + AUTOMATIC_TRAVERSE, + ROLLBACK, + NATIVE_SYSTEM, + ACTIVATION, + CLEAR_GLOBAL_FOCUS_OWNER, + RETARGETED + } + + /** + * The cause of the focus change. + */ + private Cause cause; + + public CausedFocusEvent(Component c, int id, boolean temporary, + Component opposite, Cause cause) + { + super(c, id, temporary, opposite); + if (cause == null) + { + cause = Cause.UNKNOWN; + } + this.cause = cause; + } + + public Cause getCause() + { + return cause; + } +} |