6edab5da5d6310d4353b11b531c522ec520c6475
[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 import javax.swing.*;\r
24 \r
25 public class SplashScreen\r
26     extends JPanel implements Runnable\r
27 {\r
28   boolean visible = true;\r
29   JInternalFrame iframe;\r
30   Image image;\r
31   int fontSize = 11;\r
32   int yoffset = 30;\r
33 \r
34   public SplashScreen(JInternalFrame iframe, Image i)\r
35   {\r
36     this.iframe = iframe;\r
37     image = i;\r
38 \r
39     Thread t = new Thread(this);\r
40     t.start();\r
41     addMouseListener(new MouseAdapter()\r
42     {\r
43       public void mousePressed(MouseEvent evt)\r
44       {\r
45         try\r
46         {\r
47           closeSplash();\r
48         }\r
49         catch (Exception ex)\r
50         {\r
51         }\r
52       }\r
53     });\r
54   }\r
55 \r
56   public void run()\r
57   {\r
58     long startTime = System.currentTimeMillis() / 1000;\r
59 \r
60     while (visible)\r
61     {\r
62       if ( ( (System.currentTimeMillis() / 1000) - startTime) > 5)\r
63       {\r
64         visible = false;\r
65       }\r
66 \r
67       try\r
68       {\r
69         Thread.sleep(1000);\r
70       }\r
71       catch (Exception ex)\r
72       {\r
73       }\r
74     }\r
75 \r
76     closeSplash();\r
77   }\r
78 \r
79   public void closeSplash()\r
80   {\r
81     try\r
82     {\r
83       iframe.setClosed(true);\r
84     }\r
85     catch (Exception ex)\r
86     {\r
87     }\r
88   }\r
89 \r
90   public void paintComponent(Graphics g)\r
91   {\r
92     g.setColor(Color.white);\r
93     g.fillRect(0, 0, getWidth(), getHeight());\r
94     g.setColor(Color.black);\r
95     g.setFont(new Font("Verdana", Font.BOLD, fontSize + 6));\r
96 \r
97     if (image != null)\r
98     {\r
99       g.drawImage(image, 5, yoffset + 12, this);\r
100     }\r
101 \r
102     g.drawString("JalView 2005 ", 50, yoffset);\r
103     g.setFont(new Font("Verdana", Font.BOLD, fontSize + 2));\r
104     g.drawString("Version " + jalview.bin.Cache.VERSION +\r
105                  "; Last updated: " + jalview.bin.Cache.BUILD_DATE, 180,\r
106                  yoffset);\r
107     g.setFont(new Font("Verdana", Font.BOLD, fontSize));\r
108     g.drawString("Authors: Michele Clamp, James Cuff, Steve Searle, Andrew Waterhouse, Jim Procter & Geoff Barton.",\r
109                  50, yoffset + 20);\r
110     g.drawString("Current development managed by Andrew Waterhouse; Barton Group, University of Dundee.",\r
111                  50, yoffset + 24 + fontSize);\r
112     g.drawString("If  you use JalView, please cite: Clamp, M., Cuff, J., Searle, S. M. and Barton, G. J. (2004),",\r
113                  50, yoffset + 28 + (fontSize * 2));\r
114     g.drawString(\r
115         "\"The Jalview Java Alignment Editor\" Bioinformatics,  2004 12;426-7.",\r
116         50, yoffset + 32 + (fontSize * 3));\r
117   }\r
118 }\r