import java.awt.*; import java.util.*; import java.net.*; import java.io.*; public class ProgressionBar extends Thread{ begin applet; boolean first=true; Graphics canvas; Thread thread; Image border; // ProgressionBar Image loadball; Image screen; int slider=0; // was 200 int sleeper=80; // Wait time before next slide int max=40; // maximum of sliderbar private static final Runtime s_runtime = Runtime.getRuntime (); ProgressionBar(begin appl){ applet=appl; canvas=applet.canvas; slider=0; } // the thing public void run(){ long t1=0; boolean calculated=false; int runner=0; Color bordercolor=new Color(0,60,0); // load an image to get the time taken screen=loadImage(applet.getCodeBase().toString(),"/images/screen.jpg", applet); border=loadImage(applet.getCodeBase().toString(),"/images/loadborder.gif", applet); loadball=loadImage(applet.getCodeBase().toString(),"/images/loadball.gif", applet); // Color used to paint the ProgressionBar backscreen canvas.setColor(bordercolor); canvas.drawImage(screen,0,0,800,600,applet); while(true){ /* Date D21=new Date(); System.out.println("D21: "+D21.getTime()); */ if(applet!=null){ if(!applet.loaded || (applet.st!=null && (!applet.st.isVisible() || applet.st.global.showprogressionbar)) || applet.showprogress ){ if(!calculated) { //System.out.println(" draw screen "); Date d=new Date(); long starttime=d.getTime(); canvas.drawImage(screen,0,0,800,600,applet); d=new Date(); long timetaken=d.getTime()-starttime; //System.out.println(" TIME DRAW: "+timetaken); if( (int)timetaken > applet.drawtime) applet.drawtime=(int)timetaken; } // Draw the slider if(first && applet.loaded ){ canvas.fillRect(0,0,800,600); first=false; applet.setVisible(true); } if(applet.runningspeed==0){ if(t1==0){ Date d=new Date(); t1=d.getTime(); } Date d2=new Date(); runner++; //System.out.println(" Runner: "+runner+" time: "+(d2.getTime()-t1)); if(d2.getTime()-t1 > 1000){ //System.out.println("Runner in PROGRESSIONBAR 500 miliseconds:"+runner); applet.runningspeed=runner; calculated=true; } } canvas.fillRect(320,320,130,28); // canvas.drawImage(border, 312,315,150,32, applet); canvas.drawImage(border, 302,305,160,52, applet); if( (int)((s_runtime.totalMemory() - s_runtime.freeMemory())/1000) > 95000){ canvas.setColor(new Color(255,255,255)); canvas.setFont(new Font("Terminal", Font.BOLD, 10)); canvas.drawString("MEMORY FULL",345,336); canvas.setColor(bordercolor); }else{ if(slider > 100) slider=0; if(slider % 10 == 1) applet.setVisible(true); /* if(applet.st!=null){ if(applet.st.isVisible()) applet.st.setVisible(false); } */ //System.out.println("canvas draw ball"); canvas.fillRect(320,320,130,28); // canvas.drawImage(border, 312,315,150,32, applet); canvas.drawImage(border, 302,305,160,52, applet); if(applet.st!=null){ if(applet.st.global.showtext.length() > 0){ canvas.setColor(Color.white); int fontsize=23; canvas.setFont(new Font("Terminal", Font.BOLD+Font.ITALIC, fontsize)); // canvas.setFont(new Font("Terminal", Font.BOLD, fontsize)); int stringWidth=applet.st.global.showtext.length(); stringWidth=((stringWidth/2)*12); try{ FontMetrics fm = canvas.getFontMetrics(); stringWidth = fm.stringWidth(applet.st.global.showtext); stringWidth/=2; }catch(Exception egege){ stringWidth=applet.st.global.showtext.length(); stringWidth=((stringWidth/2)*12); } //System.out.println("string width: "+stringWidth); canvas.drawString(applet.st.global.showtext, 400-stringWidth,280 ); canvas.setColor(bordercolor); } } canvas.drawImage(loadball, 325+((slider+=2)),322,20,20,applet); } applet.repaint(); } try{ sleep(sleeper); }catch(Exception eg){ System.out.println("sleep error: "+eg.toString()); } } } } // Global is not available yet .. so we have this double! public Image loadImage(String Server, String filename, Component comp){ MediaTracker mt=null; Image img=null; Date d=new Date(); URL url; boolean no_error=true; try{ // Add dummy to the URL so that it won't cache! url=new URL(Server+filename); if(url != null){ InputStream ia = url.openStream(); BufferedReader in = new BufferedReader(new InputStreamReader(ia)); String inputLine; if((inputLine = in.readLine()) == null ) no_error=false; in.close(); img=Toolkit.getDefaultToolkit().getImage(url); if(img!=null && no_error){ no_error=true; mt = new MediaTracker(comp); mt.addImage( img, 0 ); mt.waitForAll(); }else no_error=false; }else no_error=false; } catch (Exception ef) { System.out.println("ProgresionBar error Loading image: "+ef.toString()); img=null; no_error=false; } mt = null; return img; } }