diff options
author | Jiri Vanek <[email protected]> | 2012-08-13 15:52:03 +0200 |
---|---|---|
committer | Jiri Vanek <[email protected]> | 2012-08-13 15:52:03 +0200 |
commit | 94049c8dd94caec6f2178e729893b2ba8cafbe74 (patch) | |
tree | 1f20174c59f6bd0e98d6549f07857afab19e7a19 /netx/net/sourceforge/jnlp/splashscreen/SplashUtils.java | |
parent | a0e3685615521759e08246d348dc6fbf58f8a6bc (diff) |
Added splashscreen implementation
Diffstat (limited to 'netx/net/sourceforge/jnlp/splashscreen/SplashUtils.java')
-rw-r--r-- | netx/net/sourceforge/jnlp/splashscreen/SplashUtils.java | 212 |
1 files changed, 212 insertions, 0 deletions
diff --git a/netx/net/sourceforge/jnlp/splashscreen/SplashUtils.java b/netx/net/sourceforge/jnlp/splashscreen/SplashUtils.java new file mode 100644 index 0000000..7aa84cb --- /dev/null +++ b/netx/net/sourceforge/jnlp/splashscreen/SplashUtils.java @@ -0,0 +1,212 @@ +/* SplashUtils.java +Copyright (C) 2012 Red Hat, Inc. + +This file is part of IcedTea. + +IcedTea 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 2, or (at your option) +any later version. + +IcedTea 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 IcedTea; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +02110-1301 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ +package net.sourceforge.jnlp.splashscreen; + +import net.sourceforge.jnlp.runtime.AppletEnvironment; +import net.sourceforge.jnlp.runtime.AppletInstance; +import net.sourceforge.jnlp.runtime.Boot; +import net.sourceforge.jnlp.runtime.JNLPRuntime; +import net.sourceforge.jnlp.splashscreen.impls.*; + +public class SplashUtils { + + static final String ICEDTEA_WEB_PLUGIN_SPLASH = "ICEDTEA_WEB_PLUGIN_SPLASH"; + static final String ICEDTEA_WEB_SPLASH = "ICEDTEA_WEB_SPLASH"; + static final String NONE = "none"; + static final String DEFAULT = "default"; + + + /** + * + * Indicator whether to show icedtea-web plugin or just icedtea-web + * For "just icedtea-web" will be done an attempt to show content of + * information element + * + */ + public static enum SplashReason { + + APPLET, JAVAWS; + + @Override + public String toString() { + switch (this) { + case APPLET: + return "IcedTea-Web Plugin"; + case JAVAWS: + return "IcedTea-Web"; + } + return "unknown"; + } + } + + public static void showErrorCaught(Throwable ex, AppletInstance appletInstance) { + try { + showError(ex, appletInstance); + } catch (Throwable t) { + if (JNLPRuntime.isDebug()) { + // prinitng this exception is discutable. I have let it in for case that + //some retyping will fail + t.printStackTrace(); + } + } + } + + public static void showError(Throwable ex, AppletInstance appletInstance) { + if (appletInstance == null) { + return; + } + AppletEnvironment ae = appletInstance.getAppletEnvironment(); + showError(ex, ae); + } + + public static void showError(Throwable ex, AppletEnvironment ae) { + if (ae == null) { + return; + } + SplashController p = ae.getSplashControler(); + showError(ex, p); + } + + public static void showError(Throwable ex, SplashController f) { + if (f == null) { + return; + } + + f.replaceSplash(getErrorSplashScreen(f.getSplashWidth(), f.getSplashHeigth(), ex)); + } + + + private static SplashReason getReason() { + if (JNLPRuntime.isWebstartApplication()){ + return SplashReason.JAVAWS; + }else{ + return SplashReason.APPLET; + } + + } + + + /** + * Warrning - splash should have recieve width and height without borders. + * plugin's window have NO border, but javaws window HAVE border. This msut be calcualted prior calling this method + * @param width + * @param height + * @return + */ + public static SplashPanel getSplashScreen(int width, int height) { + return getSplashScreen(width, height, getReason()); + } + + /** + * Warrning - splash should have recieve width and height without borders. + * plugin's window have NO border, but javaws window HAVE border. This msut be calcualted prior calling this method + * @param width + * @param height + * @param ex - exception to be shown if any + * @return + */ + public static SplashErrorPanel getErrorSplashScreen(int width, int height, Throwable ex) { + return getErrorSplashScreen(width, height, getReason(), ex); + } + + /** + * Warrning - splash should have recieve width and height without borders. + * plugin's window have NO border, but javaws window HAVE border. This msut be calcualted prior calling this method + * @param width + * @param height + * @param splashReason + * @return + */ + static SplashPanel getSplashScreen(int width, int height, SplashUtils.SplashReason splashReason) { + return getSplashScreen(width, height, splashReason, null, false); + } + + /** + * Warrning - splash should have recieve width and height without borders. + * plugin's window have NO border, but javaws window HAVE border. This msut be calcualted prior calling this method + * @param width + * @param height + * @param splashReason + * @return + */ + static SplashErrorPanel getErrorSplashScreen(int width, int height, SplashUtils.SplashReason splashReason, Throwable ex) { + return (SplashErrorPanel) getSplashScreen(width, height, splashReason, ex, true); + } + + static SplashPanel getSplashScreen(int width, int height, SplashUtils.SplashReason splashReason, Throwable loadingException, boolean isError) { + String splashEnvironmetVar = null; + String pluginSplashEnvironmetVar = null; + try { + pluginSplashEnvironmetVar = System.getenv(ICEDTEA_WEB_PLUGIN_SPLASH); + splashEnvironmetVar = System.getenv(ICEDTEA_WEB_SPLASH); + } catch (Exception ex) { + ex.printStackTrace(); + } + SplashPanel sp = null; + if (SplashReason.JAVAWS.equals(splashReason)) { + if (NONE.equals(splashEnvironmetVar)) { + return null; + } + if (DEFAULT.equals(splashEnvironmetVar)) { + if (isError) { + sp = new DefaultErrorSplashScreen2012(width, height, splashReason, loadingException); + } else { + sp = new DefaultSplashScreen2012(width, height, splashReason); + } + } + } + if (SplashReason.APPLET.equals(splashReason)) { + if (NONE.equals(pluginSplashEnvironmetVar)) { + return null; + } + if (DEFAULT.equals(pluginSplashEnvironmetVar)) { + if (isError) { + sp = new DefaultErrorSplashScreen2012(width, height, splashReason, loadingException); + } else { + sp = new DefaultSplashScreen2012(width, height, splashReason); + } + } + } + if (isError) { + sp = new DefaultErrorSplashScreen2012(width, height, splashReason, loadingException); + } else { + sp = new DefaultSplashScreen2012(width, height, splashReason); + } + sp.setVersion(Boot.version); + return sp; + } +} |