001 /* ComponentEvent.java -- notification of events for components 002 Copyright (C) 1999, 2002, 2005, 2006 Free Software Foundation, Inc. 003 004 This file is part of GNU Classpath. 005 006 GNU Classpath is free software; you can redistribute it and/or modify 007 it under the terms of the GNU General Public License as published by 008 the Free Software Foundation; either version 2, or (at your option) 009 any later version. 010 011 GNU Classpath is distributed in the hope that it will be useful, but 012 WITHOUT ANY WARRANTY; without even the implied warranty of 013 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 014 General Public License for more details. 015 016 You should have received a copy of the GNU General Public License 017 along with GNU Classpath; see the file COPYING. If not, write to the 018 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 019 02110-1301 USA. 020 021 Linking this library statically or dynamically with other modules is 022 making a combined work based on this library. Thus, the terms and 023 conditions of the GNU General Public License cover the whole 024 combination. 025 026 As a special exception, the copyright holders of this library give you 027 permission to link this library with independent modules to produce an 028 executable, regardless of the license terms of these independent 029 modules, and to copy and distribute the resulting executable under 030 terms of your choice, provided that you also meet, for each linked 031 independent module, the terms and conditions of the license of that 032 module. An independent module is a module which is not derived from 033 or based on this library. If you modify this library, you may extend 034 this exception to your version of the library, but you are not 035 obligated to do so. If you do not wish to do so, delete this 036 exception statement from your version. */ 037 038 039 package java.awt.event; 040 041 import gnu.java.lang.CPStringBuilder; 042 043 import java.awt.AWTEvent; 044 import 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 */ 059 public 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