aboutsummaryrefslogtreecommitdiffstats
path: root/netx/net/sourceforge/jnlp/splashscreen/SplashUtils.java
diff options
context:
space:
mode:
authorJiri Vanek <[email protected]>2012-08-13 15:52:03 +0200
committerJiri Vanek <[email protected]>2012-08-13 15:52:03 +0200
commit94049c8dd94caec6f2178e729893b2ba8cafbe74 (patch)
tree1f20174c59f6bd0e98d6549f07857afab19e7a19 /netx/net/sourceforge/jnlp/splashscreen/SplashUtils.java
parenta0e3685615521759e08246d348dc6fbf58f8a6bc (diff)
Added splashscreen implementation
Diffstat (limited to 'netx/net/sourceforge/jnlp/splashscreen/SplashUtils.java')
-rw-r--r--netx/net/sourceforge/jnlp/splashscreen/SplashUtils.java212
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;
+ }
+}