7ac4212b04c06851ec9e36de5d522127aa78aa3e
[debian/openrocket] / src / net / sf / openrocket / gui / help / tours / Slide.java
1 package net.sf.openrocket.gui.help.tours;
2
3 import java.awt.image.BufferedImage;
4 import java.io.IOException;
5 import java.lang.ref.SoftReference;
6 import java.net.URL;
7
8 import javax.imageio.ImageIO;
9
10 /**
11  * An individual slide in a guided tour.  It contains a image (or reference to an
12  * image file) plus a text description (in HTML).
13  * 
14  * @author Sampo Niskanen <sampo.niskanen@iki.fi>
15  */
16 public class Slide {
17         
18         private final String imageFile;
19         private SoftReference<BufferedImage> imageReference = null;
20         
21         private final String text;
22         
23         
24
25         public Slide(String imageFile, String text) {
26                 this.imageFile = imageFile;
27                 this.text = text;
28         }
29         
30         
31
32         public BufferedImage getImage() {
33                 
34                 // Check the cache
35                 if (imageReference != null) {
36                         BufferedImage image = imageReference.get();
37                         if (image != null) {
38                                 return image;
39                         }
40                 }
41                 
42                 // Otherwise load and cache
43                 BufferedImage image = loadImage();
44                 imageReference = new SoftReference<BufferedImage>(image);
45                 
46                 return image;
47         }
48         
49         public String getText() {
50                 return text;
51         }
52         
53         
54
55         private BufferedImage loadImage() {
56                 BufferedImage img;
57                 
58                 try {
59                         URL url = ClassLoader.getSystemResource(imageFile);
60                         if (url != null) {
61                                 img = ImageIO.read(url);
62                         } else {
63                                 //FIXME
64                                 img = null;
65                         }
66                 } catch (IOException e) {
67                         // FIXME
68                         img = null;
69                 }
70                 
71                 return img;
72         }
73 }