Warning no longer red
[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             iframe=null;\r
105         }\r
106         catch (Exception ex)\r
107         {\r
108           ex.printStackTrace();\r
109         }\r
110     }\r
111 \r
112     /**\r
113      * DOCUMENT ME!\r
114      *\r
115      * @param g DOCUMENT ME!\r
116      */\r
117     public void paintComponent(Graphics g)\r
118     {\r
119         g.setColor(Color.white);\r
120         g.fillRect(0, 0, getWidth(), getHeight());\r
121         g.setColor(Color.black);\r
122         g.setFont(new Font("Verdana", Font.BOLD, fontSize + 6));\r
123 \r
124         if (image != null)\r
125         {\r
126             g.drawImage(image, 5, yoffset + 12, this);\r
127         }\r
128 \r
129         int y = yoffset;\r
130 \r
131         g.drawString("JalView 2005 ", 50, y);\r
132         g.setFont(new Font("Verdana", Font.BOLD, fontSize + 2));\r
133         g.drawString("Version " + jalview.bin.Cache.getProperty("VERSION") +\r
134                      "; Last updated: " + jalview.bin.Cache.getDefault("BUILD_DATE", "unknown"),\r
135                      180, y);\r
136 \r
137         if (jalview.bin.Cache.getDefault("LATEST_VERSION", "Checking").equals("Checking"))\r
138         {\r
139           // Displayed when code version and jnlp version do not match\r
140           g.drawString("...Checking latest version...",\r
141                        50, y += fontSize + 10);\r
142           y += 5;\r
143           g.setColor(Color.black);\r
144         }\r
145         else if (!jalview.bin.Cache.getDefault("LATEST_VERSION", "Checking").equals(\r
146             jalview.bin.Cache.getProperty("VERSION")))\r
147         {\r
148           // Displayed when code version and jnlp version do not match\r
149 \r
150           g.drawString("!! Jalview version " +\r
151                        jalview.bin.Cache.getDefault("LATEST_VERSION", "..Checking..")\r
152                        + " is available for download from http://www.jalview.org !!",\r
153                        50, y += fontSize + 10);\r
154           y += 5;\r
155           g.setColor(Color.black);\r
156         }\r
157 \r
158         g.setFont(new Font("Verdana", Font.BOLD, fontSize));\r
159         g.drawString("Authors: Michele Clamp, James Cuff, Steve Searle, Andrew Waterhouse, Jim Procter & Geoff Barton.",\r
160             50, y+=fontSize+4);\r
161         g.drawString("Current development managed by Andrew Waterhouse; Barton Group, University of Dundee.",\r
162             50,  y+=fontSize+4);\r
163         g.drawString("If  you use JalView, please cite: Clamp, M., Cuff, J., Searle, S. M. and Barton, G. J. (2004),",\r
164             50, y+=fontSize+4);\r
165         g.drawString("\"The Jalview Java Alignment Editor\" Bioinformatics,  2004 12; 426-7.",\r
166             50, y+=fontSize+4);\r
167     }\r
168 }\r