Jalview
[jalview.git] / src / jalview / gui / SplashScreen.java
1 /*\r
2  * Jalview - A Sequence Alignment Editor and Viewer\r
3  * Copyright (C) 2005 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
4  *\r
5  * This program is free software; you can redistribute it and/or\r
6  * modify it under the terms of the GNU General Public License\r
7  * as published by the Free Software Foundation; either version 2\r
8  * of the License, or (at your option) any later version.\r
9  *\r
10  * This program is distributed in the hope that it will be useful,\r
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
13  * GNU General Public License for more details.\r
14  *\r
15  * You should have received a copy of the GNU General Public License\r
16  * along with this program; if not, write to the Free Software\r
17  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA\r
18  */\r
19 package jalview.gui;\r
20 \r
21 import java.awt.*;\r
22 import java.awt.event.*;\r
23 \r
24 import javax.swing.*;\r
25 \r
26 \r
27 /**\r
28  * DOCUMENT ME!\r
29  *\r
30  * @author $author$\r
31  * @version $Revision$\r
32  */\r
33 public class SplashScreen extends JPanel implements Runnable\r
34 {\r
35     boolean visible = true;\r
36     JInternalFrame iframe;\r
37     Image image;\r
38     int fontSize = 11;\r
39     int yoffset = 30;\r
40 \r
41     /**\r
42      * Creates a new SplashScreen object.\r
43      *\r
44      * @param iframe DOCUMENT ME!\r
45      * @param i DOCUMENT ME!\r
46      */\r
47     public SplashScreen(JInternalFrame iframe, Image i)\r
48     {\r
49         this.iframe = iframe;\r
50         image = i;\r
51 \r
52         Thread t = new Thread(this);\r
53         t.start();\r
54         addMouseListener(new MouseAdapter()\r
55             {\r
56                 public void mousePressed(MouseEvent evt)\r
57                 {\r
58                     try\r
59                     {\r
60                         closeSplash();\r
61                     }\r
62                     catch (Exception ex)\r
63                     {\r
64                     }\r
65                 }\r
66             });\r
67     }\r
68 \r
69     /**\r
70      * DOCUMENT ME!\r
71      */\r
72     public void run()\r
73     {\r
74         long startTime = System.currentTimeMillis() / 1000;\r
75 \r
76         while (visible)\r
77         {\r
78             if (((System.currentTimeMillis() / 1000) - startTime) > 5)\r
79             {\r
80                 visible = false;\r
81             }\r
82 \r
83             try\r
84             {\r
85                 Thread.sleep(1000);\r
86                 repaint();\r
87             }\r
88             catch (Exception ex)\r
89             {\r
90             }\r
91         }\r
92 \r
93         closeSplash();\r
94     }\r
95 \r
96     /**\r
97      * DOCUMENT ME!\r
98      */\r
99     public void closeSplash()\r
100     {\r
101         try\r
102         {\r
103             iframe.setClosed(true);\r
104         }\r
105         catch (Exception ex)\r
106         {\r
107           ex.printStackTrace();\r
108         }\r
109     }\r
110 \r
111     /**\r
112      * DOCUMENT ME!\r
113      *\r
114      * @param g DOCUMENT ME!\r
115      */\r
116     public void paintComponent(Graphics g)\r
117     {\r
118         g.setColor(Color.white);\r
119         g.fillRect(0, 0, getWidth(), getHeight());\r
120         g.setColor(Color.black);\r
121         g.setFont(new Font("Verdana", Font.BOLD, fontSize + 6));\r
122 \r
123         if (image != null)\r
124         {\r
125             g.drawImage(image, 5, yoffset + 12, this);\r
126         }\r
127 \r
128         int y = yoffset;\r
129 \r
130         g.drawString("Jalview 2005 ", 50, y);\r
131         g.setFont(new Font("Verdana", Font.BOLD, fontSize + 2));\r
132         g.drawString("Version " + jalview.bin.Cache.getProperty("VERSION") +\r
133                      "; Last updated: " + jalview.bin.Cache.getDefault("BUILD_DATE", "unknown"),\r
134                      180, y);\r
135 \r
136         if (jalview.bin.Cache.getDefault("LATEST_VERSION", "Checking").equals("Checking"))\r
137         {\r
138           // Displayed when code version and jnlp version do not match\r
139           g.drawString("...Checking latest version...",\r
140                        50, y += fontSize + 10);\r
141           y += 5;\r
142           g.setColor(Color.black);\r
143         }\r
144         else if (!jalview.bin.Cache.getDefault("LATEST_VERSION", "Checking").equals(\r
145             jalview.bin.Cache.getProperty("VERSION")))\r
146         {\r
147           // Displayed when code version and jnlp version do not match\r
148           g.setColor(Color.red);\r
149           g.drawString("!! Jalview version " +\r
150                        jalview.bin.Cache.getDefault("LATEST_VERSION", "..Checking..")\r
151                        + " is available for download from http://www.jalview.org !!",\r
152                        50, y += fontSize + 10);\r
153           y += 5;\r
154           g.setColor(Color.black);\r
155         }\r
156 \r
157         g.setFont(new Font("Verdana", Font.BOLD, fontSize));\r
158         g.drawString("Authors: Michele Clamp, James Cuff, Steve Searle, Andrew Waterhouse, Jim Procter & Geoff Barton.",\r
159             50, y+=fontSize+4);\r
160         g.drawString("Current development managed by Andrew Waterhouse; Barton Group, University of Dundee.",\r
161             50,  y+=fontSize+4);\r
162         g.drawString("If  you use JalView, please cite: Clamp, M., Cuff, J., Searle, S. M. and Barton, G. J. (2004),",\r
163             50, y+=fontSize+4);\r
164         g.drawString("\"The Jalview Java Alignment Editor\" Bioinformatics,  2004 12; 426-7.",\r
165             50, y+=fontSize+4);\r
166     }\r
167 }\r