/[classpath]/classpath/java/awt/Component.java
ViewVC logotype

Diff of /classpath/java/awt/Component.java

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.38.2.2 by gnu_andrew, Thu Jan 13 22:40:37 2005 UTC revision 1.38.2.3 by gnu_andrew, Fri Jan 14 10:24:14 2005 UTC
# Line 1  Line 1 
1  /* Component.java -- a graphics component  /* Component.java -- a graphics component
2     Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation     Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004  Free Software Foundation
3    
4  This file is part of GNU Classpath.  This file is part of GNU Classpath.
5    
# Line 47  import java.awt.event.FocusListener; Line 47  import java.awt.event.FocusListener;
47  import java.awt.event.HierarchyBoundsListener;  import java.awt.event.HierarchyBoundsListener;
48  import java.awt.event.HierarchyEvent;  import java.awt.event.HierarchyEvent;
49  import java.awt.event.HierarchyListener;  import java.awt.event.HierarchyListener;
 import java.awt.event.KeyEvent;  
 import java.awt.event.KeyListener;  
50  import java.awt.event.InputEvent;  import java.awt.event.InputEvent;
51  import java.awt.event.InputMethodEvent;  import java.awt.event.InputMethodEvent;
52  import java.awt.event.InputMethodListener;  import java.awt.event.InputMethodListener;
53    import java.awt.event.KeyEvent;
54    import java.awt.event.KeyListener;
55  import java.awt.event.MouseEvent;  import java.awt.event.MouseEvent;
56  import java.awt.event.MouseListener;  import java.awt.event.MouseListener;
57  import java.awt.event.MouseMotionListener;  import java.awt.event.MouseMotionListener;
 import java.awt.event.MouseWheelListener;  
58  import java.awt.event.MouseWheelEvent;  import java.awt.event.MouseWheelEvent;
59    import java.awt.event.MouseWheelListener;
60  import java.awt.event.PaintEvent;  import java.awt.event.PaintEvent;
61    import java.awt.event.WindowEvent;
62  import java.awt.im.InputContext;  import java.awt.im.InputContext;
63  import java.awt.im.InputMethodRequests;  import java.awt.im.InputMethodRequests;
64  import java.awt.image.BufferStrategy;  import java.awt.image.BufferStrategy;
# Line 69  import java.awt.peer.ComponentPeer; Line 70  import java.awt.peer.ComponentPeer;
70  import java.awt.peer.LightweightPeer;  import java.awt.peer.LightweightPeer;
71  import java.beans.PropertyChangeListener;  import java.beans.PropertyChangeListener;
72  import java.beans.PropertyChangeSupport;  import java.beans.PropertyChangeSupport;
 import java.io.ObjectInputStream;  
73  import java.io.IOException;  import java.io.IOException;
74    import java.io.ObjectInputStream;
75  import java.io.ObjectOutputStream;  import java.io.ObjectOutputStream;
76  import java.io.PrintStream;  import java.io.PrintStream;
77  import java.io.PrintWriter;  import java.io.PrintWriter;
# Line 83  import java.util.Iterator; Line 84  import java.util.Iterator;
84  import java.util.Locale;  import java.util.Locale;
85  import java.util.Set;  import java.util.Set;
86  import java.util.Vector;  import java.util.Vector;
87    
88  import javax.accessibility.Accessible;  import javax.accessibility.Accessible;
89  import javax.accessibility.AccessibleComponent;  import javax.accessibility.AccessibleComponent;
90  import javax.accessibility.AccessibleContext;  import javax.accessibility.AccessibleContext;
# Line 292  public abstract class Component Line 294  public abstract class Component
294     * @see #getLocale()     * @see #getLocale()
295     * @see #setLocale(Locale)     * @see #setLocale(Locale)
296     */     */
297    Locale locale;    Locale locale = Locale.getDefault ();
298    
299    /**    /**
300     * True if the object should ignore repaint events (usually because it is     * True if the object should ignore repaint events (usually because it is
# Line 2269  public abstract class Component Line 2271  public abstract class Component
2271    {    {
2272      boolean handled = handleEvent (e);      boolean handled = handleEvent (e);
2273    
2274      if (!handled)      if (!handled && getParent() != null)
2275        // FIXME: need to translate event coordinates to parent's        // FIXME: need to translate event coordinates to parent's
2276        // coordinate space.        // coordinate space.
2277        handled = getParent ().postEvent (e);        handled = getParent ().postEvent (e);
# Line 3432  public abstract class Component Line 3434  public abstract class Component
3434     */     */
3435    public boolean isFocusTraversable()    public boolean isFocusTraversable()
3436    {    {
3437      return enabled && visible && (peer == null || peer.isFocusTraversable());      return enabled && visible && (peer == null || isLightweight() || peer.isFocusTraversable());
3438    }    }
3439    
3440    /**    /**
# Line 3447  public abstract class Component Line 3449  public abstract class Component
3449    }    }
3450    
3451    /**    /**
3452     * Specify whether this component can receive focus.     * Specify whether this component can receive focus. This method also
3453       * sets the {@link #isFocusTraversableOverridden} field to 1, which
3454       * appears to be the undocumented way {@link
3455       * DefaultFocusTraversalPolicy#accept()} determines whether to respect
3456       * the {@link #isFocusable()} method of the component.
3457     *     *
3458     * @param focusable the new focusable status     * @param focusable the new focusable status
3459     * @since 1.4     * @since 1.4
# Line 3456  public abstract class Component Line 3462  public abstract class Component
3462    {    {
3463      firePropertyChange("focusable", this.focusable, focusable);      firePropertyChange("focusable", this.focusable, focusable);
3464      this.focusable = focusable;      this.focusable = focusable;
3465        this.isFocusTraversableOverridden = 1;
3466    }    }
3467    
3468    /**    /**
# Line 3715  public abstract class Component Line 3722  public abstract class Component
3722              Window toplevel = (Window) parent;              Window toplevel = (Window) parent;
3723              if (toplevel.isFocusableWindow ())              if (toplevel.isFocusableWindow ())
3724                {                {
3725                  if (peer != null)                  if (peer != null && !isLightweight())
3726                    // This call will cause a FOCUS_GAINED event to be                    // This call will cause a FOCUS_GAINED event to be
3727                    // posted to the system event queue if the native                    // posted to the system event queue if the native
3728                    // windowing system grants the focus request.                    // windowing system grants the focus request.
# Line 3801  public abstract class Component Line 3808  public abstract class Component
3808              Window toplevel = (Window) parent;              Window toplevel = (Window) parent;
3809              if (toplevel.isFocusableWindow ())              if (toplevel.isFocusableWindow ())
3810                {                {
3811                  if (peer != null)                  if (peer != null && !isLightweight())
3812                    // This call will cause a FOCUS_GAINED event to be                    // This call will cause a FOCUS_GAINED event to be
3813                    // posted to the system event queue if the native                    // posted to the system event queue if the native
3814                    // windowing system grants the focus request.                    // windowing system grants the focus request.
# Line 3922  public abstract class Component Line 3929  public abstract class Component
3929                  if (focusedWindow == toplevel)                  if (focusedWindow == toplevel)
3930                    {                    {
3931                      if (peer != null                      if (peer != null
3932                            && !isLightweight()
3933                          && !(this instanceof Window))                          && !(this instanceof Window))
3934                        // This call will cause a FOCUS_GAINED event to be                        // This call will cause a FOCUS_GAINED event to be
3935                        // posted to the system event queue if the native                        // posted to the system event queue if the native
# Line 4499  p   * <li>the set of backward traversal Line 4507  p   * <li>the set of backward traversal
4507     *     *
4508     * @return an AWT 1.0 event representing e     * @return an AWT 1.0 event representing e
4509     */     */
4510    private Event translateEvent (AWTEvent e)    static Event translateEvent (AWTEvent e)
4511    {    {
4512      Component target = (Component) e.getSource ();      Component target = (Component) e.getSource ();
4513      Event translated = null;      Event translated = null;
# Line 4691  p   * <li>the set of backward traversal Line 4699  p   * <li>the set of backward traversal
4699     *     *
4700     * @param e the event to dispatch     * @param e the event to dispatch
4701     */     */
4702    
4703    void dispatchEventImpl (AWTEvent e)    void dispatchEventImpl (AWTEvent e)
4704    {    {
4705      Event oldEvent = translateEvent (e);      Event oldEvent = translateEvent (e);
# Line 4699  p   * <li>the set of backward traversal Line 4708  p   * <li>the set of backward traversal
4708        postEvent (oldEvent);        postEvent (oldEvent);
4709    
4710      if (eventTypeEnabled (e.id))      if (eventTypeEnabled (e.id))
4711        processEvent (e);        {
4712            // the trick we use to communicate between dispatch and redispatch
4713            // is to have KeyboardFocusManager.redispatch synchronize on the
4714            // object itself. we then do not redispatch to KeyboardFocusManager
4715            // if we are already holding the lock.
4716            if (! Thread.holdsLock(e))
4717              {
4718                switch (e.id)
4719                  {
4720                  case WindowEvent.WINDOW_GAINED_FOCUS:
4721                  case WindowEvent.WINDOW_LOST_FOCUS:
4722                  case KeyEvent.KEY_PRESSED:
4723                  case KeyEvent.KEY_RELEASED:
4724                  case KeyEvent.KEY_TYPED:
4725                  case FocusEvent.FOCUS_GAINED:
4726                  case FocusEvent.FOCUS_LOST:
4727                    if (KeyboardFocusManager
4728                        .getCurrentKeyboardFocusManager()
4729                        .dispatchEvent(e))
4730                        return;
4731                  }
4732              }
4733            processEvent (e);
4734          }
4735    }    }
4736    
4737    /**    /**

Legend:
Removed from v.1.38.2.2  
changed lines
  Added in v.1.38.2.3

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26