/*
* Copyright 2010-2015 Institut Pasteur.
*
* This file is part of Icy.
*
* Icy is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Icy is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Icy. If not, see <http://www.gnu.org/licenses/>.
*/
package icy.gui.frame;
import icy.file.FileUtil;
import icy.image.ImageUtil;
import icy.resource.ResourceUtil;
import icy.util.ClassUtil;
import icy.util.Random;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.net.URL;
import javax.swing.JFrame;
import javax.swing.JPanel;
/**
* Animated ICY Logo.
*
* @author Fab & Stephane
*/
public class SplashScreenFrame extends JFrame
{
/**
*
*/
private static final long serialVersionUID = -519109094312389176L;
public class SplashPanel extends JPanel
{
private static final long serialVersionUID = -6955085853269659076L;
private static final String SPLASH_FOLDER = ResourceUtil.IMAGE_PATH + "splash";
private static final int DEFAULT_WIDTH = 960;
private static final int DEFAULT_HEIGTH = 300;
private BufferedImage image;
public SplashPanel()
{
image = null;
String[] files = FileUtil.getFiles(SPLASH_FOLDER, null, false, false, false);
if (files.length > 0)
image = ImageUtil.load(files[Random.nextInt(files.length)]);
else
{
try
{
files = ClassUtil.getResourcesInPackage(SPLASH_FOLDER, null, true, false, false, false).toArray(
new String[0]);
if (files.length > 0)
{
final URL url = getClass().getResource("/" + files[Random.nextInt(files.length)]);
if (url != null)
image = ImageUtil.load(url, true);
}
}
catch (Exception e)
{
System.err.println("Warning: cannot load splashscreen image");
}
}
if (image != null)
setPreferredSize(new Dimension(image.getWidth(), image.getHeight()));
else
setPreferredSize(new Dimension(DEFAULT_WIDTH, DEFAULT_HEIGTH));
}
@Override
public void paint(Graphics g)
{
super.paint(g);
if (image != null)
g.drawImage(image, 0, 0, this);
}
}
private final SplashPanel splash;
/**
*
*/
public SplashScreenFrame()
{
super("Icy");
splash = new SplashPanel();
setUndecorated(true);
add(splash);
pack();
setLocationRelativeTo(null);
}
}