001/* ComponentEvent.java -- notification of events for components 002 Copyright (C) 1999, 2002, 2005, 2006 Free Software Foundation, Inc. 003 004This file is part of GNU Classpath. 005 006GNU Classpath is free software; you can redistribute it and/or modify 007it under the terms of the GNU General Public License as published by 008the Free Software Foundation; either version 2, or (at your option) 009any later version. 010 011GNU Classpath is distributed in the hope that it will be useful, but 012WITHOUT ANY WARRANTY; without even the implied warranty of 013MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 014General Public License for more details. 015 016You should have received a copy of the GNU General Public License 017along with GNU Classpath; see the file COPYING. If not, write to the 018Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 01902110-1301 USA. 020 021Linking this library statically or dynamically with other modules is 022making a combined work based on this library. Thus, the terms and 023conditions of the GNU General Public License cover the whole 024combination. 025 026As a special exception, the copyright holders of this library give you 027permission to link this library with independent modules to produce an 028executable, regardless of the license terms of these independent 029modules, and to copy and distribute the resulting executable under 030terms of your choice, provided that you also meet, for each linked 031independent module, the terms and conditions of the license of that 032module. An independent module is a module which is not derived from 033or based on this library. If you modify this library, you may extend 034this exception to your version of the library, but you are not 035obligated to do so. If you do not wish to do so, delete this 036exception statement from your version. */ 037 038 039package java.awt.event; 040 041import gnu.java.lang.CPStringBuilder; 042 043import java.awt.AWTEvent; 044import java.awt.Component; 045 046/** 047 * This class is for events generated when a component is moved, resized, 048 * hidden, or shown. These events normally do not need to be handled by the 049 * application, since the AWT system automatically takes care of them. This 050 * is also the superclass for other events on components, but 051 * ComponentListeners ignore such subclasses. 052 * 053 * @author Aaron M. Renn (arenn@urbanophile.com) 054 * @see ComponentAdapter 055 * @see ComponentListener 056 * @since 1.1 057 * @status updated to 1.4 058 */ 059public class ComponentEvent extends AWTEvent 060{ 061 /** 062 * Compatible with JDK 1.1+. 063 */ 064 private static final long serialVersionUID = 8101406823902992965L; 065 066 /** This is the first id in the range of ids used by this class. */ 067 public static final int COMPONENT_FIRST = 100; 068 069 /** This is the last id in the range of ids used by this class. */ 070 public static final int COMPONENT_LAST = 103; 071 072 /** This id indicates that a component was moved. */ 073 public static final int COMPONENT_MOVED = 100; 074 075 /** This id indicates that a component was resized. */ 076 public static final int COMPONENT_RESIZED = 101; 077 078 /** This id indicates that a component was shown. */ 079 public static final int COMPONENT_SHOWN = 102; 080 081 /** This id indicates that a component was hidden. */ 082 public static final int COMPONENT_HIDDEN = 103; 083 084 /** 085 * Initializes a new instance of <code>ComponentEvent</code> with the 086 * specified source and id. Note that an invalid id leads to unspecified 087 * results. 088 * 089 * @param source the source of the event 090 * @param id the event id 091 * @throws IllegalArgumentException if source is null 092 */ 093 public ComponentEvent(Component source, int id) 094 { 095 super(source, id); 096 } 097 098 /** 099 * This method returns the event source as a <code>Component</code>. If the 100 * source has subsequently been modified to a non-Component, this returns 101 * null. 102 * 103 * @return the event source as a <code>Component</code>, or null 104 */ 105 public Component getComponent() 106 { 107 return source instanceof Component ? (Component) source : null; 108 } 109 110 /** 111 * This method returns a string identifying this event. This is the field 112 * name of the id type, and for COMPONENT_MOVED or COMPONENT_RESIZED, the 113 * new bounding box of the component. 114 * 115 * @return a string identifying this event 116 */ 117 public String paramString() 118 { 119 CPStringBuilder s = new CPStringBuilder(); 120 121 // Unlike Sun, we don't throw NullPointerException or ClassCastException 122 // when source was illegally changed. 123 if (id == COMPONENT_MOVED) 124 s.append("COMPONENT_MOVED "); 125 else if (id == COMPONENT_RESIZED) 126 s.append("COMPONENT_RESIZED "); 127 else if (id == COMPONENT_SHOWN) 128 s.append("COMPONENT_SHOWN "); 129 else if (id == COMPONENT_HIDDEN) 130 s.append("COMPONENT_HIDDEN "); 131 else 132 return "unknown type"; 133 134 s.append("(").append(getComponent().getX()).append(",") 135 .append(getComponent().getY()).append(" ") 136 .append(getComponent().getWidth()).append("x") 137 .append(getComponent().getHeight()).append(")"); 138 139 return s.toString(); 140 } 141 142} // class ComponentEvent