diff options
Diffstat (limited to 'netx/net/sourceforge/jnlp/JNLPSplashScreen.java')
-rw-r--r-- | netx/net/sourceforge/jnlp/JNLPSplashScreen.java | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/netx/net/sourceforge/jnlp/JNLPSplashScreen.java b/netx/net/sourceforge/jnlp/JNLPSplashScreen.java new file mode 100644 index 0000000..2e9134b --- /dev/null +++ b/netx/net/sourceforge/jnlp/JNLPSplashScreen.java @@ -0,0 +1,99 @@ +package net.sourceforge.jnlp; + +import java.awt.Dimension; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.Image; +import java.awt.Insets; +import java.awt.Toolkit; +import java.io.IOException; +import java.net.URL; + +import javax.imageio.ImageIO; +import javax.swing.JFrame; + +import net.sourceforge.jnlp.cache.ResourceTracker; +import net.sourceforge.jnlp.runtime.JNLPRuntime; + +public class JNLPSplashScreen extends JFrame { + + String applicationTitle; + String applicationVendor; + + ResourceTracker resourceTracker; + + URL splashImageUrl; + Image splashImage; + + public JNLPSplashScreen(ResourceTracker resourceTracker, + String applicationTitle, String applicationVendor) { + + // If the JNLP file does not contain any icon images, the splash image + // will consist of the application's title and vendor, as taken from the + // JNLP file. + + this.resourceTracker = resourceTracker; + this.applicationTitle = applicationTitle; + this.applicationVendor = applicationVendor; + + } + + public void setSplashImageURL(URL url) { + splashImageUrl = url; + splashImage = null; + try { + splashImage = ImageIO.read(resourceTracker + .getCacheFile(splashImageUrl)); + if (splashImage == null) { + if (JNLPRuntime.isDebug()) { + System.err.println("Error loading splash image: " + url); + } + return; + } + } catch (IOException e) { + if (JNLPRuntime.isDebug()) { + System.err.println("Error loading splash image: " + url); + } + splashImage = null; + return; + } catch (IllegalArgumentException argumentException) { + if (JNLPRuntime.isDebug()) { + System.err.println("Error loading splash image: " + url); + } + splashImage = null; + return; + } + + correctSize(); + } + + public boolean isSplashScreenValid() { + return (splashImage != null); + } + + private void correctSize() { + + Insets insets = getInsets(); + int minimumWidth = splashImage.getWidth(null) + insets.left + + insets.right; + int minimumHeight = splashImage.getHeight(null) + insets.top + + insets.bottom; + setMinimumSize(new Dimension(minimumWidth, minimumHeight)); + + Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); + setLocation((screenSize.width - minimumWidth) / 2, + (screenSize.height - minimumHeight) / 2); + } + + @Override + public void paint(Graphics g) { + if (splashImage == null) { + return; + } + + correctSize(); + Graphics2D g2 = (Graphics2D) g; + g2.drawImage(splashImage, getInsets().left, getInsets().top, null); + + } +} |