1324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverpackage org.antlr.gunit.swingui;
2324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
3324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverimport java.io.IOException;
4324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverimport java.io.InputStream;
5324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverimport java.net.URL;
6324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverimport java.util.logging.Level;
7324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverimport java.util.logging.Logger;
8324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverimport javax.swing.ImageIcon;
9324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
10324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverpublic class ImageFactory {
11324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
12324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    private static ImageFactory singleton ;
13324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
14324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public static ImageFactory getSingleton() {
15324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        if(singleton == null) singleton = new ImageFactory();
16324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        return singleton;
17324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    }
18324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
19324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    private ImageFactory() {
20324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        ACCEPT = getImage("accept.png");
21324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        ADD = getImage("add.png");
22324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        DELETE = getImage("delete24.png");
23324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        TEXTFILE = getImage("textfile24.png");
24324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        TEXTFILE16 = getImage("textfile16.png");
25324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        ADDFILE = getImage("addfile24.png");
26324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        WINDOW16 = getImage("windowb16.png");
27324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        FAV16 = getImage("favb16.png");
28324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        SAVE = getImage("floppy24.png");
29324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        OPEN = getImage("folder24.png");
30324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        EDIT16 = getImage("edit16.png");
31324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        FILE16 = getImage("file16.png");
32324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        RUN_PASS = getImage("runpass.png");
33324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        RUN_FAIL = getImage("runfail.png");
34324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        TESTSUITE = getImage("testsuite.png");
35324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        TESTGROUP = getImage("testgroup.png");
36324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        TESTGROUPX = getImage("testgroupx.png");
37324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        NEXT = getImage("next24.png");
38324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    }
39324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
40324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    private ImageIcon getImage(String name) {
41324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        name = IMG_DIR + name;
42324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        try {
43324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            final ClassLoader loader = ImageFactory.class.getClassLoader();
44324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            final InputStream in = loader.getResourceAsStream(name);
45324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            final byte[] data = new byte[in.available()];
46324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            in.read(data);
47324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            in.close();
48324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            return new ImageIcon(data);
49324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        } catch (IOException ex) {
50324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            System.err.println("Can't load image file: " + name);
51324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            System.exit(1);
52324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        } catch(RuntimeException e) {
53324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            System.err.println("Can't load image file: " + name);
54324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            System.exit(1);
55324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        }
56324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        return null;
57324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    }
58324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
59324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    private static final String IMG_DIR = "org/antlr/gunit/swingui/images/";
60324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
61324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public ImageIcon ACCEPT;
62324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public ImageIcon ADD;
63324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public ImageIcon DELETE;
64324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public ImageIcon TEXTFILE ;
65324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public ImageIcon ADDFILE;
66324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
67324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public ImageIcon TEXTFILE16 ;
68324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public ImageIcon WINDOW16;
69324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public ImageIcon FAV16;
70324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public ImageIcon SAVE ;
71324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
72324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public ImageIcon OPEN ;
73324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public ImageIcon EDIT16;
74324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public ImageIcon FILE16;
75324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public ImageIcon NEXT;
76324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
77324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public ImageIcon RUN_PASS;
78324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public ImageIcon RUN_FAIL;
79324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public ImageIcon TESTSUITE;
80324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public ImageIcon TESTGROUP ;
81324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public ImageIcon TESTGROUPX;
82324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
83324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver}
84