/* * @(#)FocusEvent.java 1.26 06/10/10 * * Copyright 1990-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER * * This program 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. * * This program 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 at /legal/license.txt). * * 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 or visit www.sun.com if you need additional * information or have any questions. * */ package java.awt.event; import java.awt.Component; import sun.awt.AppContext; import sun.awt.SunToolkit; /** * The component-level focus event. * There are two levels of focus change events: permanent and temporary. * Permanent focus change events occur when focus is directly moved * from one component to another, such as through calls to requestFocus() * or as the user uses the Tab key to traverse components. * Temporary focus change events occur when focus is temporarily * gained or lost for a component as the indirect result of another * operation, such as window deactivation or a scrollbar drag. In this * case, the original focus state will automatically be restored once * that operation is finished, or, for the case of window deactivation, * when the window is reactivated. Both permanent and temporary focus * events are delivered using the FOCUS_GAINED and FOCUS_LOST event ids; * the levels may be distinguished in the event using the isTemporary() * method. * * @version 1.20 08/19/02 * @author Carl Quinn * @author Amy Fowler */ public class FocusEvent extends ComponentEvent { /** * Marks the first integer id for the range of focus event ids. */ public static final int FOCUS_FIRST = 1004; /** * Marks the last integer id for the range of focus event ids. */ public static final int FOCUS_LAST = 1005; /** * The focus gained event type. */ public static final int FOCUS_GAINED = FOCUS_FIRST; //Event.GOT_FOCUS /** * The focus lost event type. */ public static final int FOCUS_LOST = 1 + FOCUS_FIRST; //Event.LOST_FOCUS boolean temporary = false; /* * JDK 1.1 serialVersionUID */ private static final long serialVersionUID = 523753786457416396L; transient Component opposite; /** * Constructs a FocusEvent object with the specified source component, * type, and whether or not the focus event is a temporary level event. * @param source the object where the event originated * @id the event type * @temporary whether or not this focus change is temporary */ public FocusEvent(Component source, int id, boolean temporary) { super(source, id); this.temporary = temporary; } /** * Constructs a permanent-level FocusEvent object with the * specified source component and type. * @param source the object where the event originated * @id the event type */ public FocusEvent(Component source, int id) { this(source, id, false); } public FocusEvent(Component source, int id, boolean temporary, Component opposite) { super(source, id); this.temporary = temporary; this.opposite = opposite; } /** * Returns whether or not this focus change event is a temporary * change. */ public boolean isTemporary() { return temporary; } public Component getOppositeComponent() { if (opposite == null) { return null; } return (SunToolkit.targetToAppContext(opposite) == AppContext.getAppContext()) ? opposite : null; } public String paramString() { String typeStr; switch (id) { case FOCUS_GAINED: typeStr = "FOCUS_GAINED"; break; case FOCUS_LOST: typeStr = "FOCUS_LOST"; break; default: typeStr = "unknown type"; } return typeStr + (temporary ? ",temporary" : ",permanent") + ",opposite=" + getOppositeComponent(); } }