/**********************************************************************************
* *
* Digital clock Applet *
* ( DigitalClock.java ) *
* Author : Seiichi Inoue *
**********************************************************************************/
/********************** << Imported package class definition >> *******************/
import java.applet.Applet; /* Applet packages */
import java.awt.*; /* All of the Abstract Windowing Toolkit packages */
import java.util.Date; /* Date packages */
/************************** <<Oneself of class definition>> ***********************/
// Class name : DigitalClock
// Access control : public( Access possibility even from which class )
// Extends class : Applet
// Implements class: Runnable( Use of Thread is enabled )
public class DigitalClock extends Applet implements Runnable {
/************************* << Class attribute of definition >> ********************/
Dimension d; /* Display range */
Thread kicker=null; /* Thread(Initial value:suspension) */
Image offs; /* Off screen */
Graphics grf; /* Drawing range */
Image img; /* Background image */
MediaTracker mt; /* MediaTracker */
int imgsw; /* Background image presence info */
String param; /* Parameter reading */
Font font; /* Clock letter font */
Color color; /* Clock letter color */
int h; /* Hour information */
String sh,h10,h01; /* Hour display letter information */
int h_fontsize; /* Hour display font information */
int h10x,h10y,h01x,h01y; /* Hour display position information*/
int m; /* Minute information */
String sm,m10,m01; /* Minute display letter information*/
int m_fontsize; /* Minute display font information */
int m10x,m10y,m01x,m01y; /* Minute display position info */
int s; /* Second information */
String ss,s10,s01; /* Second display letter information*/
int s_fontsize; /* Second display font information */
int s10x,s10y,s01x,s01y; /* Second display position info */
int am_pm; /* Morning/Afternoon information */
/***************** << Class of method (implementation procedure) >> ***************/
//
/******** Initialization (init) method *********/
public void init() {
d = size(); /* Set display screen size */
offs = createImage(d.width,d.height); /* Off scr area preparation */
grf = offs.getGraphics(); /* Graphics object extraction */
param = getParameter("image"); /* Background image input reading */
if ( param != null ) { /* Input parameter existence? */
mt = new MediaTracker(this); /* MediaTracker instance */
img = getImage(getCodeBase(),param);/* Background image reading */
mt.addImage(img,0); /* Image load surveillance reg */
imgsw = 1; /* Background image existence info*/
}
else /* No : no designated input */
imgsw = 0; /* No background image info */
param = getParameter("h_fontsize"); /* Hour display font size reading */
h_fontsize = (param != null)? /* Input determination */
Integer.parseInt(param): 20;
param = getParameter("m_fontsize"); /* Minute disp font size reading */
m_fontsize = (param != null)? /* Input determination */
Integer.parseInt(param): 20;
param = getParameter("s_fontsize"); /* Second disp font size reading */
s_fontsize = (param != null)? /* Input determination */
Integer.parseInt(param): 20;
param = getParameter("h10x"); /* Hour 10 places disp position(H)*/
h10x = (param != null)? /* Input determination */
Integer.parseInt(param): 0;
param = getParameter("h10y"); /* Hour 10 places disp position(V)*/
h10y = (param != null)? /* Input determination */
Integer.parseInt(param): 20;
param = getParameter("h01x"); /* Hour 1 place disp position(H) */
h01x = (param != null)? /* Input determination */
Integer.parseInt(param): 10;
param = getParameter("h01y"); /* Hour 1 place disp position(V) */
h01y = (param != null)? /* Input determination */
Integer.parseInt(param): 20;
param = getParameter("m10x"); /* Minute 10 places disp posi(H) */
m10x = (param != null)? /* Input determination */
Integer.parseInt(param): 30;
param = getParameter("m10y"); /* Minute 10 places disp posi(V) */
m10y = (param != null)? /* Input determination */
Integer.parseInt(param): 20;
param = getParameter("m01x"); /* Minute 1 place disp position(H)*/
m01x = (param != null)? /* Input determination */
Integer.parseInt(param): 40;
param = getParameter("m01y"); /* Minute 1 place disp position(V)*/
m01y = (param != null)? /* Input determination */
Integer.parseInt(param): 20;
param = getParameter("s10x"); /* Second 10 places disp posi(H) */
s10x = (param != null)? /* Input determination */
Integer.parseInt(param): 60;
param = getParameter("s10y"); /* Second 10 places disp posi(V) */
s10y = (param != null)? /* Input determination */
Integer.parseInt(param): 20;
param = getParameter("s01x"); /* Second 1 place disp position(H)*/
s01x = (param != null)? /* Input determination */
Integer.parseInt(param): 70;
param = getParameter("s01y"); /* Second 1 place disp position(V)*/
s01y = (param != null)? /* Input determination */
Integer.parseInt(param): 20;
} /* End of initial method */
/************ Start (start) method *************/
public void start() {
if ( kicker == null ) { /* Kicker is null? ( Suspension? )*/
kicker = new Thread(this); /* YES: kicker setting */
kicker.start(); /* Setting of start */
}
repaint();
} /* End of start method */
/*********** Repeatedly (run) method ***********/
public void run() {
Thread.currentThread().setPriority(Thread.NORM_PRIORITY-3);
if ( imgsw != 0 ) { /* It is designated an image? */
try { /* Interruption confirmation */
mt.waitForID(0); /* Image load waiting */
} catch( InterruptedException e ) { /* Interruption processing */
System.out.println("Wait Error");
return;
}
}
while( kicker != null) { /* Repeat until kicker becomes null */
repaint(); /* Drawing triggering */
try { /* Interruption confirmation */
kicker.sleep(100); /* Wait 100 milli seconds set */
} catch (InterruptedException e) {} /* Interruption processing */
}
kicker = null; /* Repeate process completion set */
} /* End of run method */
/*********** Renewal (update) method ***********/
public void update(Graphics g) { /* Lost of screen flickering */
paint(g); /* Drawing */
} /* End of update method */
/*********** Drawing (paint) method ************/
public void paint(Graphics g) {
if ( imgsw != 0 ) { /* Background image infor existence? */
if ( mt.isErrorID(0)) { /* Load error? */
g.drawString("Image Load Error....",50,20); /* Error display */
return;
}
if( ! mt.checkID(0)) { /* Loading ? */
g.drawString("Loading....",d.width/2-30,20); /* Loading display */
return;
}
grf.drawImage(img,0,0,this); /* Image information setting */
}
else { /* NO : */
grf.setColor(Color.black); /* Set backcolor ( black ) */
grf.fillRect(0,0,d.width,d.height); /* Paint backcolor */
}
Date d = new Date(); /* Read clock information */
h = d.getHours(); /* Hour information reading */
if ( h < 12 ) /* Morning? */
am_pm = 0; /* YES:Morning information setting*/
else { /* NO :Afternoon */
h -= 12; /* 12 hours reduction from hour */
am_pm = 1; /* Afternoon information setting */
}
if ( h < 10 ) /* One column ( 0 - 9 )? */
sh = " " + h + " "; /* Two column ( 0 - 9 ) + Blank */
else
sh = h + " "; /* Figure + Blank(for extraction) */
h10 = sh.substring(0,1); /* Hour 10 places figure extracte */
h01 = sh.substring(1,2); /* Hour 1 place figure extracte */
if ( am_pm == 0 ) /* Morning? */
grf.setColor(Color.red); /* Set morning letter color(red) */
else
grf.setColor(Color.green); /*Set afternoon letter color(green)*/
grf.setFont(new Font("Dialog",Font.BOLD,h_fontsize)); /* Set font info */
grf.drawString( h10, h10x, h10y ); /* Set hour 10 places display */
grf.drawString( h01, h01x, h01y ); /* Set hour 1 place display */
m = d.getMinutes(); /* Minute information reading */
if ( m < 10 ) /* One column ( 0 - 9 )? */
sm = "0" + m + " "; /* Two column ( 00 - 09 ) + Blank */
else
sm = m + " "; /* Figure + Blank(for extraction) */
m10 = sm.substring(0,1); /* Minute 10 places fig extracte */
m01 = sm.substring(1,2); /* Minute 1 place fig extracte */
if ( am_pm == 0 ) /* Morning? */
grf.setColor(Color.red); /* Set morning letter color(red) */
else
grf.setColor(Color.green); /*Set afternoon letter color(green)*/
grf.setFont(new Font("Dialog",Font.BOLD,m_fontsize)); /* Set font info */
grf.drawString( m10, m10x, m10y ); /* Set minute 10 places display */
grf.drawString( m01, m01x, m01y ); /* Set minute 1 place display */
s = d.getSeconds(); /* Second information reading */
if ( s < 10 ) /* One column ( 0 - 9 )? */
ss = "0" + s + " "; /* Two column ( 00 - 09 ) + Blank */
else
ss = s + " "; /* Figure + Blank(for extraction) */
s10 = ss.substring(0,1); /* Second 10 places fig extracte */
s01 = ss.substring(1,2); /* Second 1 place fig extracte */
grf.setColor(Color.red); /* Letter color setting (red) */
grf.setFont(new Font("Dialog",Font.BOLD,s_fontsize)); /* Set font info */
grf.drawString( s10, s10x, s10y ); /* Set second 10 places display */
grf.drawString( s01, s01x, s01y ); /* Set second 1 place display */
g.drawImage(offs,0,0,this); /* Drawing setting */
} /* End of paint method */
/************ Stop (stop) method ***************/
public void stop() {
if( kicker != null ) { /* Kicker is not null?( action? ) */
kicker.stop(); /* Set kicker to suspension */
kicker = null; /* Set kicker suspension condition*/
}
} /* End of stop method */
} /* End of class setting */
/**********************************************************************************
* End of Digital clock Applet *
**********************************************************************************/