c3c1fab871cc7e305cd7640a07977cf667cf9b98
[debian/openrocket] / core / 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         private static final String NO_IMAGE = "none";
18         
19         private final String imageFile;
20         private SoftReference<BufferedImage> imageReference = null;
21         
22         private final String text;
23         
24         
25         
26         public Slide(String imageFile, String text) {
27                 this.imageFile = imageFile;
28                 this.text = text;
29         }
30         
31         
32         
33         public BufferedImage getImage() {
34                 
35                 if (imageFile.equals(NO_IMAGE)) {
36                         return new BufferedImage(0, 0, BufferedImage.TYPE_INT_ARGB);
37                 }
38                 
39                 // Check the cache
40                 if (imageReference != null) {
41                         BufferedImage image = imageReference.get();
42                         if (image != null) {
43                                 return image;
44                         }
45                 }
46                 
47                 // Otherwise load and cache
48                 BufferedImage image = loadImage();
49                 imageReference = new SoftReference<BufferedImage>(image);
50                 
51                 return image;
52         }
53         
54         public String getText() {
55                 return text;
56         }
57         
58         
59         
60         private BufferedImage loadImage() {
61                 BufferedImage img;
62                 
63                 try {
64                         URL url = ClassLoader.getSystemResource(imageFile);
65                         if (url != null) {
66                                 img = ImageIO.read(url);
67                         } else {
68                                 //FIXME
69                                 img = null;
70                         }
71                 } catch (IOException e) {
72                         // FIXME
73                         img = null;
74                 }
75                 
76                 return img;
77         }
78 }