KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > edu > umd > cs > findbugs > gui2 > SplashFrame


1 /*
2  * FindBugs - Find Bugs in Java programs
3  * Copyright (C) 2006, University of Maryland
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Lesser General Public
7  * License as published by the Free Software Foundation; either
8  * version 2.1 of the License, or (at your option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13  * Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public
16  * License along with this library; if not, write to the Free Software
17  * Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307, USA
18  */

19
20 package edu.umd.cs.findbugs.gui2;
21
22 import java.awt.BorderLayout JavaDoc;
23 import java.awt.Color JavaDoc;
24 import java.awt.Dimension JavaDoc;
25 import java.awt.Frame JavaDoc;
26 import java.awt.Graphics JavaDoc;
27 import java.awt.Image JavaDoc;
28 import java.awt.MediaTracker JavaDoc;
29 import java.awt.Panel JavaDoc;
30 import java.awt.Toolkit JavaDoc;
31 import java.util.Random JavaDoc;
32
33 import javax.imageio.ImageIO JavaDoc;
34 import javax.swing.BorderFactory JavaDoc;
35 import javax.swing.ImageIcon JavaDoc;
36 import javax.swing.JFrame JavaDoc;
37 import javax.swing.JLabel JavaDoc;
38 import javax.swing.JPanel JavaDoc;
39 import javax.swing.JWindow JavaDoc;
40
41 import java.awt.event.WindowAdapter JavaDoc;
42 import java.awt.event.WindowEvent JavaDoc;
43 import java.awt.image.BufferedImage JavaDoc;
44 import java.io.File JavaDoc;
45 import java.io.IOException JavaDoc;
46
47
48 /*
49  * If long load times are getting you down, uncomment this class's instantiation in driver
50  * and add an extra 4 seconds to your load time, but get to watch a dancing bug for the remainder!
51 */

52
53 public class SplashFrame extends JWindow JavaDoc
54 {
55     
56     private static Thread JavaDoc animator;
57     
58     public SplashFrame()
59     {
60         super(new Frame JavaDoc());
61         
62         Toolkit JavaDoc toolkit = Toolkit.getDefaultToolkit();
63         Image JavaDoc image = toolkit.getImage(MainFrame.class.getResource("SplashBug1.png"));
64         Image JavaDoc image2 = toolkit.getImage(MainFrame.class.getResource("SplashBug2B.png"));
65         Image JavaDoc imageReverse = toolkit.getImage(MainFrame.class.getResource("SplashBug1reverse.png"));
66         Image JavaDoc image2Reverse = toolkit.getImage(MainFrame.class.getResource("SplashBug2reverseB.png"));
67         
68         // JPanel temp = new JPanel(new BorderLayout());
69
// temp.setBorder(BorderFactory.createLineBorder(Color.black, 2));
70
// setContentPane(temp);
71
JLabel JavaDoc l = new JLabel JavaDoc(new ImageIcon JavaDoc(MainFrame.class.getResource("umdFindbugs.png")));
72         JPanel JavaDoc p = new JPanel JavaDoc();
73         Viewer viewer=new Viewer(image,image2,imageReverse,image2Reverse);
74         final JPanel JavaDoc bottom = viewer;
75         p.setBackground(Color.white);
76         bottom.setBackground(Color.white);
77         
78         p.add(l);
79         getContentPane().add(p, BorderLayout.CENTER);
80         getContentPane().add(bottom, BorderLayout.SOUTH);
81         pack();
82         Dimension JavaDoc screenSize =
83             Toolkit.getDefaultToolkit().getScreenSize();
84         Dimension JavaDoc labelSize = l.getPreferredSize();
85         p.setPreferredSize(new Dimension JavaDoc(labelSize.width + 50, labelSize.height + 20));
86         p.setBorder(BorderFactory.createLineBorder(Color.BLACK, 1));
87         bottom.setBorder(BorderFactory.createLineBorder(Color.BLACK, 1));
88         Dimension JavaDoc panelSize = p.getPreferredSize();
89         bottom.setPreferredSize(new Dimension JavaDoc(panelSize.width, image.getHeight(null)+2));
90         
91         setLocation(screenSize.width/2 - (panelSize.width/2),
92                 screenSize.height/2 - (panelSize.height/2));
93         
94 // g.drawImage(new ImageIcon("bugSplash3.png"),0 ,0 ,null);
95

96         pack();
97         screenSize = null;
98         labelSize = null;
99         viewer.animate();
100         
101         
102     }
103     
104     public static void main(String JavaDoc[] args){
105         (new SplashFrame()).setVisible(true);
106         
107     }
108     
109     public void setVisible(boolean b){
110         super.setVisible(b);
111         if(!b)
112             animator.interrupt();
113     }
114     
115     private static class Viewer extends JPanel JavaDoc {
116         private Image JavaDoc image;
117         private Image JavaDoc image2;
118         private Image JavaDoc imageR;
119         private Image JavaDoc image2R;
120         boolean swap=false;
121         boolean reverse=true;
122         int callCount=0;
123         int xpos=0;
124         int ypos=0;
125         int farRight;
126         
127         public Viewer(Image JavaDoc i1,Image JavaDoc i2,Image JavaDoc i1r,Image JavaDoc i2r) {
128             image=i1;
129             image2=i2;
130             imageR=i1r;
131             image2R=i2r;
132             MediaTracker JavaDoc mediaTracker = new MediaTracker JavaDoc(this);
133             mediaTracker.addImage(image, 0);
134             mediaTracker.addImage(image2, 1);
135             mediaTracker.addImage(imageR, 2);
136             mediaTracker.addImage(image2R, 3);
137             try
138             {
139                 mediaTracker.waitForID(0);
140                 mediaTracker.waitForID(1);
141                 mediaTracker.waitForID(2);
142                 mediaTracker.waitForID(3);
143             }
144             catch (InterruptedException JavaDoc ie)
145             {
146                 System.err.println(ie);
147                 System.exit(1);
148             }
149             animator = new Thread JavaDoc(new Runnable JavaDoc()
150             {
151                 public void run()
152                 {
153                     int deltaX=1;
154                     
155                     while(true)
156                     {
157                         if(Thread.currentThread().isInterrupted())
158                             return;
159                         
160                         callCount++;
161                         if (callCount==10)
162                         {
163                             swap=!swap;
164                             callCount=0;
165                         }
166
167                         xpos+=deltaX;
168                         try {
169                             Thread.sleep(20);
170                         } catch (InterruptedException JavaDoc e) {
171                             break;
172                         }
173
174                         if (xpos>Viewer.this.getSize().width-image.getWidth(null))
175                         {
176                             deltaX=-1;
177                             reverse=!reverse;
178                         }
179                         if (xpos<0)
180                         {
181                             deltaX=1;
182                             reverse=!reverse;
183                         }
184                         
185                         Viewer.this.repaint();
186                     }
187                 }
188             });
189         }
190         
191         public void animate()
192         {
193             animator.start();
194         }
195         
196         public void setPreferredSize(Dimension JavaDoc d)
197         {
198             super.setPreferredSize(d);
199         }
200         private Image JavaDoc imageToDraw()
201         {
202             if (swap)
203             {
204                 if (!reverse)
205                     return image;
206                 return imageR;
207             }
208             else
209             {
210                 if (!reverse)
211                     return image2;
212                 return image2R;
213             }
214         }
215         
216         public void paint(Graphics JavaDoc graphics) {
217             super.paint(graphics);
218             
219 // graphics.clearRect(0,0,500,500);
220
graphics.drawImage(imageToDraw(), xpos, ypos, null);
221         }
222     }
223 }
Popular Tags