View Javadoc

1   package fr.ove.openmath.mathematica;
2   
3   import javax.swing.*;
4   import java.awt.*;
5   import java.awt.event.*;
6   
7   /***
8   * A splash screen.
9   */
10  class SplashScreen extends JWindow {
11      public SplashScreen(String filename, Frame f, int waitTime) {
12          super(f);
13          JLabel l = new JLabel(new ImageIcon(filename));
14          getContentPane().add(l, BorderLayout.CENTER);
15          pack();
16          Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
17          Dimension labelSize = l.getPreferredSize();
18          setLocation(screenSize.width/2 - (labelSize.width/2),
19                      screenSize.height/2 - (labelSize.height/2));
20          addMouseListener(
21              new MouseAdapter() {
22                  public void mousePressed(MouseEvent e)
23                  {
24                      setVisible(false);
25                      dispose();
26                  }
27              }
28          );
29          
30          final Runnable closerRunner = new Runnable() {
31              public void run() {
32                  setVisible(false);
33                  dispose();
34              }
35          };
36           
37          final int pause = waitTime;
38          Runnable waitRunner = new Runnable() {
39              public void run() {
40                  try {
41                          Thread.sleep(pause);
42                          SwingUtilities.invokeAndWait(closerRunner);
43                  }
44                  catch(Exception e) {
45                          e.printStackTrace();
46                          // can catch InvocationTargetException
47                          // can catch InterruptedException
48                  }
49              }
50          };
51          
52          setVisible(true);
53          Thread splashThread = new Thread(waitRunner, "SplashThread");
54          splashThread.start();
55      }
56  }