package com.jpaulmorrison.graphics;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import javax.imageio.ImageIO;
class SplashWindow extends JWindow {
static final long serialVersionUID = 111L;
static boolean READFILE = true;
public SplashWindow(JFrame f, int waitTime,
final DrawFBP driver, boolean small) {
super(f);
Image i = null;
String fn = "DrawFBP-logo.jpg";
BufferedImage image = driver.loadImage(fn);
int x = image.getWidth();
int y = image.getHeight();
int m = small ? 120 : 320;
i = image.getScaledInstance(m, m * y / x, Image.SCALE_SMOOTH);
Container c = getContentPane();
ImageIcon icon = new ImageIcon(i);
JLabel l = new JLabel(icon);
c.add(l, BorderLayout.CENTER);
pack();
f.repaint();
Point p = f.getLocation();
Dimension labelSize = l.getPreferredSize();
Dimension screenSize = f.getSize();
if (small) {
//labelSize = new Dimension((int) (labelSize.width * .6), (int) (labelSize.height * .6));
p = new Point(p.x + 80, p.y + 120);
setLocation(p);
//l.setPreferredSize(labelSize);
} else {
setLocation(p.x + screenSize.width / 2 - (labelSize.width / 2),
p.y + screenSize.height / 2 - (labelSize.height / 2) + 30);
}
pack();
final int pause = waitTime;
final Runnable closerRunner = new Runnable() {
public void run() {
setVisible(false);
dispose();
}
};
Runnable waitRunner = new Runnable() {
public void run() {
try {
Thread.sleep(1000);
addMouseMotionListener(new MouseMotionListener() {
public void mouseMoved(MouseEvent e) {
setVisible(false);
dispose();
}
public void mouseDragged(MouseEvent e) {
setVisible(false);
dispose();
}
});
Thread.sleep(pause - 1000);
SwingUtilities.invokeAndWait(closerRunner);
} catch (Exception e) {
e.printStackTrace();
// can catch InvocationTargetException
// can catch InterruptedException
}
}
};
setVisible(true);
Thread splashThread = new Thread(waitRunner, "SplashThread");
splashThread.start();
}
}