]> gcc.gnu.org Git - gcc.git/blame - libjava/javax/swing/ImageIcon.java
2005-04-19 Roman Kennke <roman@kennke.org>
[gcc.git] / libjava / javax / swing / ImageIcon.java
CommitLineData
d933abbe 1/* ImageIcon.java --
b9d896d6 2 Copyright (C) 2002, 2004, 2005 Free Software Foundation, Inc.
7bde45b2
BM
3
4This file is part of GNU Classpath.
5
6GNU Classpath is free software; you can redistribute it and/or modify
7it under the terms of the GNU General Public License as published by
8the Free Software Foundation; either version 2, or (at your option)
9any later version.
10
11GNU Classpath is distributed in the hope that it will be useful, but
12WITHOUT ANY WARRANTY; without even the implied warranty of
13MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14General Public License for more details.
15
16You should have received a copy of the GNU General Public License
17along with GNU Classpath; see the file COPYING. If not, write to the
18Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
1902111-1307 USA.
20
21Linking this library statically or dynamically with other modules is
22making a combined work based on this library. Thus, the terms and
23conditions of the GNU General Public License cover the whole
24combination.
25
26As a special exception, the copyright holders of this library give you
27permission to link this library with independent modules to produce an
28executable, regardless of the license terms of these independent
29modules, and to copy and distribute the resulting executable under
30terms of your choice, provided that you also meet, for each linked
31independent module, the terms and conditions of the license of that
32module. An independent module is a module which is not derived from
33or based on this library. If you modify this library, you may extend
34this exception to your version of the library, but you are not
35obligated to do so. If you do not wish to do so, delete this
36exception statement from your version. */
37
d6c2458f 38package javax.swing;
7bde45b2 39
d6c2458f
MK
40import java.awt.Component;
41import java.awt.Graphics;
42import java.awt.Image;
b9d896d6 43import java.awt.MediaTracker;
d6c2458f 44import java.awt.Toolkit;
8e99fb4f 45import java.awt.image.ImageObserver;
4dfcdad1
GH
46import java.io.Serializable;
47import java.net.URL;
48
7bde45b2 49
4dfcdad1
GH
50public class ImageIcon
51 implements Icon, Serializable
7bde45b2 52{
4dfcdad1 53 private static final long serialVersionUID = 532615968316031794L;
b9d896d6
RK
54
55 /** A dummy Component that is used in the MediaTracker. */
56 protected static Component component = new Component(){};
57
58 /** The MediaTracker used to monitor the loading of images. */
59 protected static MediaTracker tracker = new MediaTracker(component);
60
61 /** The ID that is used in the tracker. */
62 private static int id;
63
4dfcdad1 64 Image image;
8e99fb4f
GH
65 String description;
66 ImageObserver observer;
7bde45b2 67
b9d896d6
RK
68 /** The image loading status. */
69 private int loadStatus;
70
8e99fb4f 71 public ImageIcon()
4dfcdad1 72 {
4dfcdad1 73 }
d933abbe 74
8e99fb4f
GH
75 public ImageIcon(String file)
76 {
77 this(file, file);
78 }
79
80 public ImageIcon(String file, String description)
81 {
82 this(Toolkit.getDefaultToolkit().getImage(file), description);
83 }
84
85 public ImageIcon(byte[] imageData)
86 {
87 this(imageData, null);
88 }
89
90 public ImageIcon(byte[] imageData, String description)
4dfcdad1 91 {
8e99fb4f 92 this(Toolkit.getDefaultToolkit().createImage(imageData), description);
4dfcdad1
GH
93 }
94
95 public ImageIcon(URL url)
96 {
8e99fb4f 97 this(url, null);
4dfcdad1
GH
98 }
99
8e99fb4f 100 public ImageIcon(URL url, String description)
4dfcdad1 101 {
8e99fb4f
GH
102 this(Toolkit.getDefaultToolkit().getImage(url), description);
103 }
104
105 public ImageIcon(Image image)
106 {
107 this(image, null);
108 }
4dfcdad1 109
8e99fb4f
GH
110 public ImageIcon(Image image, String description)
111 {
b9d896d6
RK
112 setImage(image);
113 setDescription(description);
8e99fb4f 114 }
d933abbe 115
8e99fb4f
GH
116 public ImageObserver getImageObserver()
117 {
118 return observer;
4dfcdad1 119 }
d933abbe 120
8e99fb4f 121 public void setImageObserver(ImageObserver newObserver)
4dfcdad1 122 {
8e99fb4f 123 observer = newObserver;
4dfcdad1
GH
124 }
125
126 public Image getImage()
127 {
128 return image;
129 }
130
d933abbe
GH
131 public void setImage(Image image)
132 {
b9d896d6
RK
133 loadImage(image);
134 this.image = image;
d933abbe
GH
135 }
136
4dfcdad1
GH
137 public String getDescription()
138 {
8e99fb4f 139 return description;
4dfcdad1
GH
140 }
141
142 public void setDescription(String description)
143 {
8e99fb4f 144 this.description = description;
4dfcdad1
GH
145 }
146
147 public int getIconHeight()
148 {
149 return image.getHeight(observer);
150 }
151
152 public int getIconWidth()
153 {
154 return image.getWidth(observer);
155 }
156
157 public void paintIcon(Component c, Graphics g, int x, int y)
158 {
8e99fb4f 159 g.drawImage(image, x, y, observer != null ? observer : c);
4dfcdad1 160 }
b9d896d6
RK
161
162 /**
163 * Loads the image and blocks until the loading operation is finished.
164 *
165 * @param image the image to be loaded
166 */
167 protected void loadImage(Image image)
168 {
169 try
170 {
171 tracker.addImage(image, id);
172 id++;
173 tracker.waitForID(id - 1);
174 }
175 catch (InterruptedException ex)
176 {
177 ; // ignore this for now
178 }
179 finally
180 {
181 loadStatus = tracker.statusID(id - 1, false);
182 }
183 }
184
185 /**
186 * Returns the load status of the icon image.
187 *
188 * @return the load status of the icon image
189 *
190 * @see {@link MediaTracker.COMPLETE}
191 * @see {@link MediaTracker.ABORTED}
192 * @see {@link MediaTracker.ERRORED}
193 */
194 public int getImageLoadStatus()
195 {
196 return loadStatus;
197 }
7bde45b2 198}
This page took 0.277969 seconds and 5 git commands to generate.