Formatting
[jalview.git] / src / jalview / gui / SplashScreen.java
1 /*\r
2  * Jalview - A Sequence Alignment Editor and Viewer\r
3  * Copyright (C) 2007 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 import javax.swing.*;\r
24 \r
25 /**\r
26  * DOCUMENT ME!\r
27  *\r
28  * @author $author$\r
29  * @version $Revision$\r
30  */\r
31 public class SplashScreen\r
32     extends JPanel implements Runnable\r
33 {\r
34   boolean visible = true;\r
35   JInternalFrame iframe;\r
36   Image image;\r
37   int fontSize = 11;\r
38   int yoffset = 30;\r
39 \r
40   /**\r
41    * Creates a new SplashScreen object.\r
42    *\r
43    * @param iframe DOCUMENT ME!\r
44    * @param i DOCUMENT ME!\r
45    */\r
46   public SplashScreen(JInternalFrame iframe, Image i)\r
47   {\r
48     this.iframe = iframe;\r
49     image = i;\r
50 \r
51     Thread t = new Thread(this);\r
52     t.start();\r
53     addMouseListener(new MouseAdapter()\r
54     {\r
55       public void mousePressed(MouseEvent evt)\r
56       {\r
57         try\r
58         {\r
59           closeSplash();\r
60         }\r
61         catch (Exception ex)\r
62         {\r
63         }\r
64       }\r
65     });\r
66   }\r
67 \r
68   /**\r
69    * DOCUMENT ME!\r
70    */\r
71   public void run()\r
72   {\r
73     long startTime = System.currentTimeMillis() / 1000;\r
74 \r
75     while (visible)\r
76     {\r
77       if ( ( (System.currentTimeMillis() / 1000) - startTime) > 5)\r
78       {\r
79         visible = false;\r
80       }\r
81 \r
82       try\r
83       {\r
84         Thread.sleep(1000);\r
85         repaint();\r
86       }\r
87       catch (Exception ex)\r
88       {\r
89       }\r
90     }\r
91 \r
92     closeSplash();\r
93   }\r
94 \r
95   /**\r
96    * DOCUMENT ME!\r
97    */\r
98   public void closeSplash()\r
99   {\r
100     try\r
101     {\r
102       iframe.setClosed(true);\r
103     }\r
104     catch (Exception ex)\r
105     {\r
106       ex.printStackTrace();\r
107     }\r
108   }\r
109 \r
110   /**\r
111    * DOCUMENT ME!\r
112    *\r
113    * @param g DOCUMENT ME!\r
114    */\r
115   public void paintComponent(Graphics g)\r
116   {\r
117     g.setColor(Color.white);\r
118     g.fillRect(0, 0, getWidth(), getHeight());\r
119     g.setColor(Color.black);\r
120     g.setFont(new Font("Verdana", Font.BOLD, fontSize + 6));\r
121 \r
122     if (image != null)\r
123     {\r
124       g.drawImage(image, 5, yoffset + 12, this);\r
125     }\r
126 \r
127     int y = yoffset;\r
128 \r
129     g.drawString("Jalview " + jalview.bin.Cache.getProperty("VERSION"), 50, y);\r
130 \r
131     FontMetrics fm = g.getFontMetrics();\r
132     int vwidth = fm.stringWidth("Jalview " +\r
133                                 jalview.bin.Cache.getProperty("VERSION"));\r
134     g.setFont(new Font("Verdana", Font.BOLD, fontSize + 2));\r
135     g.drawString("Last updated: " +\r
136                  jalview.bin.Cache.getDefault("BUILD_DATE", "unknown"),\r
137                  50 + vwidth + 5, y);\r
138 \r
139     if (jalview.bin.Cache.getDefault("LATEST_VERSION",\r
140         "Checking").equals("Checking"))\r
141     {\r
142       // Displayed when code version and jnlp version do not match\r
143       g.drawString("...Checking latest version...",\r
144                    50, y += fontSize + 10);\r
145       y += 5;\r
146       g.setColor(Color.black);\r
147     }\r
148     else if (!jalview.bin.Cache.getDefault("LATEST_VERSION", "Checking").equals(\r
149         jalview.bin.Cache.getProperty("VERSION")))\r
150     {\r
151       // Displayed when code version and jnlp version do not match\r
152       g.setColor(Color.red);\r
153       g.drawString("!! Jalview version " +\r
154                    jalview.bin.Cache.getDefault("LATEST_VERSION",\r
155                                                 "..Checking..")\r
156                    +\r
157                    " is available for download from http://www.jalview.org !!",\r
158                    50, y += fontSize + 10);\r
159       y += 5;\r
160       g.setColor(Color.black);\r
161     }\r
162 \r
163     g.setFont(new Font("Verdana", Font.BOLD, fontSize));\r
164     g.drawString("Authors: Michele Clamp, James Cuff, Steve Searle, Andrew Waterhouse, Jim Procter & Geoff Barton.",\r
165                  50, y += fontSize + 4);\r
166     g.drawString("Current development managed by Andrew Waterhouse; Barton Group, University of Dundee.",\r
167                  50, y += fontSize + 4);\r
168     g.drawString("If  you use JalView, please cite: Clamp, M., Cuff, J., Searle, S. M. and Barton, G. J. (2004),",\r
169                  50, y += fontSize + 4);\r
170     g.drawString(\r
171         "\"The Jalview Java Alignment Editor\" Bioinformatics,  2004 20; 426-7.",\r
172         50, y += fontSize + 4);\r
173   }\r
174 }\r