View Javadoc
1   /*
2    * Copyright (c) 1996, 2008, Oracle and/or its affiliates. All rights reserved.
3    * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4    *
5    * This code is free software; you can redistribute it and/or modify it
6    * under the terms of the GNU General Public License version 2 only, as
7    * published by the Free Software Foundation.  Oracle designates this
8    * particular file as subject to the "Classpath" exception as provided
9    * by Oracle in the LICENSE file that accompanied this code.
10   *
11   * This code is distributed in the hope that it will be useful, but WITHOUT
12   * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13   * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14   * version 2 for more details (a copy is included in the LICENSE file that
15   * accompanied this code).
16   *
17   * You should have received a copy of the GNU General Public License version
18   * 2 along with this work; if not, write to the Free Software Foundation,
19   * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20   *
21   * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22   * or visit www.oracle.com if you need additional information or have any
23   * questions.
24   */
25  
26  package java.awt.event;
27  
28  import java.awt.Component;
29  import java.awt.Rectangle;
30  
31  /**
32   * The component-level paint event.
33   * This event is a special type which is used to ensure that
34   * paint/update method calls are serialized along with the other
35   * events delivered from the event queue.  This event is not
36   * designed to be used with the Event Listener model; programs
37   * should continue to override paint/update methods in order
38   * render themselves properly.
39   * <p>
40   * An unspecified behavior will be caused if the {@code id} parameter
41   * of any particular {@code PaintEvent} instance is not
42   * in the range from {@code PAINT_FIRST} to {@code PAINT_LAST}.
43   *
44   * @author Amy Fowler
45   * @since 1.1
46   */
47  public class PaintEvent extends ComponentEvent {
48  
49      /**
50       * Marks the first integer id for the range of paint event ids.
51       */
52      public static final int PAINT_FIRST         = 800;
53  
54      /**
55       * Marks the last integer id for the range of paint event ids.
56       */
57      public static final int PAINT_LAST          = 801;
58  
59      /**
60       * The paint event type.
61       */
62      public static final int PAINT = PAINT_FIRST;
63  
64      /**
65       * The update event type.
66       */
67      public static final int UPDATE = PAINT_FIRST + 1; //801
68  
69      /**
70       * This is the rectangle that represents the area on the source
71       * component that requires a repaint.
72       * This rectangle should be non null.
73       *
74       * @serial
75       * @see java.awt.Rectangle
76       * @see #setUpdateRect(Rectangle)
77       * @see #getUpdateRect()
78       */
79      Rectangle updateRect;
80  
81      /*
82       * JDK 1.1 serialVersionUID
83       */
84      private static final long serialVersionUID = 1267492026433337593L;
85  
86      /**
87       * Constructs a <code>PaintEvent</code> object with the specified
88       * source component and type.
89       * <p> This method throws an
90       * <code>IllegalArgumentException</code> if <code>source</code>
91       * is <code>null</code>.
92       *
93       * @param source     The object where the event originated
94       * @param id           The integer that identifies the event type.
95       *                     For information on allowable values, see
96       *                     the class description for {@link PaintEvent}
97       * @param updateRect The rectangle area which needs to be repainted
98       * @throws IllegalArgumentException if <code>source</code> is null
99       * @see #getSource()
100      * @see #getID()
101      * @see #getUpdateRect()
102      */
103     public PaintEvent(Component source, int id, Rectangle updateRect) {
104         super(source, id);
105         this.updateRect = updateRect;
106     }
107 
108     /**
109      * Returns the rectangle representing the area which needs to be
110      * repainted in response to this event.
111      */
112     public Rectangle getUpdateRect() {
113         return updateRect;
114     }
115 
116     /**
117      * Sets the rectangle representing the area which needs to be
118      * repainted in response to this event.
119      * @param updateRect the rectangle area which needs to be repainted
120      */
121     public void setUpdateRect(Rectangle updateRect) {
122         this.updateRect = updateRect;
123     }
124 
125     public String paramString() {
126         String typeStr;
127         switch(id) {
128           case PAINT:
129               typeStr = "PAINT";
130               break;
131           case UPDATE:
132               typeStr = "UPDATE";
133               break;
134           default:
135               typeStr = "unknown type";
136         }
137         return typeStr + ",updateRect="+(updateRect != null ? updateRect.toString() : "null");
138     }
139 }