package net.sf.openrocket.gui.help.tours; import java.awt.image.BufferedImage; import java.io.IOException; import java.lang.ref.SoftReference; import java.net.URL; import javax.imageio.ImageIO; import net.sf.openrocket.util.BugException; /** * An individual slide in a guided tour. It contains a image (or reference to an * image file) plus a text description (in HTML). * * @author Sampo Niskanen <sampo.niskanen@iki.fi> */ public class Slide { private static final String NO_IMAGE = "none"; private final String imageFile; private SoftReference<BufferedImage> imageReference = null; private final String text; public Slide(String imageFile, String text) { this.imageFile = imageFile; this.text = text; } public BufferedImage getImage() { if (imageFile.equals(NO_IMAGE)) { return new BufferedImage(0, 0, BufferedImage.TYPE_INT_ARGB); } // Check the cache if (imageReference != null) { BufferedImage image = imageReference.get(); if (image != null) { return image; } } // Otherwise load and cache BufferedImage image = loadImage(); imageReference = new SoftReference<BufferedImage>(image); return image; } public String getText() { return text; } private BufferedImage loadImage() { BufferedImage img; try { URL url = ClassLoader.getSystemResource(imageFile); if (url != null) { img = ImageIO.read(url); } else { throw new BugException("Could not find image " + imageFile); } } catch (IOException e) { throw new BugException("Error reading image " + imageFile, e); } return img; } }