diff options
author | Roman Kennke <roman@kennke.org> | 2005-04-19 05:59:46 +0000 |
---|---|---|
committer | Michael Koch <mkoch@gcc.gnu.org> | 2005-04-19 05:59:46 +0000 |
commit | b9d896d6002cad7cb268a7c6084e0008561aa4ea (patch) | |
tree | f2952ddb00a8a74291e45916d156b5dbf0f1a445 /libjava/javax/swing/ImageIcon.java | |
parent | 3419f465cfedf821015bf783a24beac6f9f1b87f (diff) | |
download | gcc-b9d896d6002cad7cb268a7c6084e0008561aa4ea.zip gcc-b9d896d6002cad7cb268a7c6084e0008561aa4ea.tar.gz gcc-b9d896d6002cad7cb268a7c6084e0008561aa4ea.tar.bz2 |
2005-04-19 Roman Kennke <roman@kennke.org>
* javax/swing/ImageIcon.java
Added API documentation.
2005-04-19 Roman Kennke <roman@kennke.org>
* javax/swing/text/ImageIcon.java
(ImageIcon): Use setImage instead of direct assignment.
(setImage): Call loadImage to make sure that the image is loaded.
(loadImage): Waits for the image to complete loading.
(getImageLoadStatus): Added. Returns the load status of the
image.
From-SVN: r98384
Diffstat (limited to 'libjava/javax/swing/ImageIcon.java')
-rw-r--r-- | libjava/javax/swing/ImageIcon.java | 60 |
1 files changed, 56 insertions, 4 deletions
diff --git a/libjava/javax/swing/ImageIcon.java b/libjava/javax/swing/ImageIcon.java index 36bd088..abdc391 100644 --- a/libjava/javax/swing/ImageIcon.java +++ b/libjava/javax/swing/ImageIcon.java @@ -1,5 +1,5 @@ /* ImageIcon.java -- - Copyright (C) 2002, 2004 Free Software Foundation, Inc. + Copyright (C) 2002, 2004, 2005 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -40,6 +40,7 @@ package javax.swing; import java.awt.Component; import java.awt.Graphics; import java.awt.Image; +import java.awt.MediaTracker; import java.awt.Toolkit; import java.awt.image.ImageObserver; import java.io.Serializable; @@ -50,10 +51,23 @@ public class ImageIcon implements Icon, Serializable { private static final long serialVersionUID = 532615968316031794L; + + /** A dummy Component that is used in the MediaTracker. */ + protected static Component component = new Component(){}; + + /** The MediaTracker used to monitor the loading of images. */ + protected static MediaTracker tracker = new MediaTracker(component); + + /** The ID that is used in the tracker. */ + private static int id; + Image image; String description; ImageObserver observer; + /** The image loading status. */ + private int loadStatus; + public ImageIcon() { } @@ -95,8 +109,8 @@ public class ImageIcon public ImageIcon(Image image, String description) { - this.image = Toolkit.getDefaultToolkit().createImage(image.getSource()); - this.description = description; + setImage(image); + setDescription(description); } public ImageObserver getImageObserver() @@ -116,7 +130,8 @@ public class ImageIcon public void setImage(Image image) { - this.image = Toolkit.getDefaultToolkit().createImage(image.getSource()); + loadImage(image); + this.image = image; } public String getDescription() @@ -143,4 +158,41 @@ public class ImageIcon { g.drawImage(image, x, y, observer != null ? observer : c); } + + /** + * Loads the image and blocks until the loading operation is finished. + * + * @param image the image to be loaded + */ + protected void loadImage(Image image) + { + try + { + tracker.addImage(image, id); + id++; + tracker.waitForID(id - 1); + } + catch (InterruptedException ex) + { + ; // ignore this for now + } + finally + { + loadStatus = tracker.statusID(id - 1, false); + } + } + + /** + * Returns the load status of the icon image. + * + * @return the load status of the icon image + * + * @see {@link MediaTracker.COMPLETE} + * @see {@link MediaTracker.ABORTED} + * @see {@link MediaTracker.ERRORED} + */ + public int getImageLoadStatus() + { + return loadStatus; + } } |