// Original written by Réal Gagnon ©1998-2000 // Slightly modified by Philip Banks 2000 and 2008. import java.applet.Applet; import java.applet.AppletStub; import java.awt.*; public class VersionLoader extends Applet implements Runnable, AppletStub { String appletToLoad; Thread appletThread; String processed_vstring; String vstring; float version; public void init() { Float temp; setBackground(Color.white); //Get the version string, only interested in major and //first minor version numbers. vstring = System.getProperty("java.version"); if (vstring.indexOf(".") != -1) { processed_vstring = vstring.substring(0,vstring.indexOf(".")); vstring = vstring.substring(vstring.indexOf(".")+1); if (vstring.indexOf(".") != -1) { processed_vstring += "." + vstring.substring(0,vstring.indexOf(".")); } else { processed_vstring += "." + vstring; } } else { processed_vstring = vstring; } String number_filtered_string; int i; number_filtered_string = ""; for (i = 0; i < processed_vstring.length(); i++) { switch (processed_vstring.charAt(i)) { case '0' : number_filtered_string += "0"; break; case '1' : number_filtered_string += "1"; break; case '2' : number_filtered_string += "2"; break; case '3' : number_filtered_string += "3"; break; case '4' : number_filtered_string += "4"; break; case '5' : number_filtered_string += "5"; break; case '6' : number_filtered_string += "6"; break; case '7' : number_filtered_string += "7"; break; case '8' : number_filtered_string += "8"; break; case '9' : number_filtered_string += "9"; break; case '.' : number_filtered_string += "."; break; } } processed_vstring = number_filtered_string; try { // Convert the version string to a number and check it. temp = Float.valueOf(processed_vstring); version = temp.floatValue(); if (version < 1.1) { appletToLoad = "SafeTag"; } else { appletToLoad = "WebTag"; } } catch (NumberFormatException e) { // If the conversion failed, assumed safe defaults. appletToLoad = "SafeTag"; } } public void paint(Graphics g) { g.drawString("Loading for Java version " + processed_vstring, 30, 30); } public void run() { try { Class appletClass = Class.forName(appletToLoad); Applet realApplet = (Applet)appletClass.newInstance(); realApplet.setStub(this); setLayout( new GridLayout(1,0)); add(realApplet); realApplet.init(); realApplet.start(); } catch (Exception e) { System.out.println( e ); } validate(); } public void start(){ appletThread = new Thread(this); appletThread.start(); } public void stop() { appletThread.stop(); appletThread = null; } public void appletResize( int width, int height ){ resize( width, height ); } }