home *** CD-ROM | disk | FTP | other *** search
/ Datatid 2000 #1 / Datatid-2000-01.iso / Internet / SPLASH / SPLASH12.EXE / data1.cab / Plugins / NeXT_Clock / NeXTClock.class (.txt) < prev   
Encoding:
Java Class File  |  1998-12-18  |  5.1 KB  |  151 lines

  1. import java.applet.Applet;
  2. import java.awt.Color;
  3. import java.awt.Component;
  4. import java.awt.Font;
  5. import java.awt.FontMetrics;
  6. import java.awt.Graphics;
  7. import java.awt.Image;
  8. import java.util.Date;
  9.  
  10. public class NeXTClock extends Applet implements Runnable {
  11.    Thread clockThread;
  12.    Font dateFont;
  13.    Font dayFont;
  14.    Font timeFont;
  15.    Font monthFont;
  16.    Image baseImg;
  17.    int size = 5;
  18.    int italic = 1;
  19.    Date now;
  20.    Color darkGreen;
  21.    int blink;
  22.    int last_min = -1;
  23.    String[] weekday = new String[]{"SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"};
  24.    String[] month = new String[]{"JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC"};
  25.  
  26.    public void init() {
  27.       this.baseImg = ((Applet)this).getImage(((Applet)this).getCodeBase(), "default.gif");
  28.       this.timeFont = new Font("TimesRoman", 1, 16);
  29.       this.dayFont = new Font("Helvetica", 0, 6);
  30.       this.dateFont = new Font("TimesRoman", 1, 18);
  31.       this.monthFont = new Font("Helvetica", 2, 8);
  32.       this.darkGreen = new Color(0, 200, 0);
  33.    }
  34.  
  35.    int doItalic(int var1, int var2) {
  36.       return this.italic == 1 ? (int)((double)var1 - (double)var2 * 0.2) : var1;
  37.    }
  38.  
  39.    void drawSegment(Graphics var1, int var2, int var3, int var4) {
  40.       int[] var5 = new int[]{0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 0, 2, 0, 2, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1};
  41.       var1.drawLine(this.doItalic(var2 + var5[var4 * 4] * this.size, var5[var4 * 4 + 1] * this.size), var3 + var5[var4 * 4 + 1] * this.size, this.doItalic(var2 + var5[var4 * 4 + 2] * this.size, var5[var4 * 4 + 3] * this.size), var3 + var5[var4 * 4 + 3] * this.size);
  42.    }
  43.  
  44.    void drawDigit(Graphics var1, int var2, int var3, int var4) {
  45.       int[] var5 = new int[]{63, 6, 91, 79, 102, 109, 125, 7, 127, 111};
  46.  
  47.       for(int var6 = 0; var6 < 7; ++var6) {
  48.          if ((var5[var2] & 1 << var6) != 0) {
  49.             this.drawSegment(var1, var3, var4, var6);
  50.          }
  51.       }
  52.  
  53.    }
  54.  
  55.    void drawDigitString(Graphics var1, String var2, int var3, int var4) {
  56.       for(int var5 = 0; var5 < var2.length(); ++var5) {
  57.          char var6 = var2.charAt(var5);
  58.          if (var6 >= '0' && var6 <= '9') {
  59.             this.drawDigit(var1, var6 - 48, var3 += (int)((double)this.size * 1.8), var4);
  60.          } else {
  61.             var3 += (int)((double)this.size * 0.8);
  62.          }
  63.       }
  64.  
  65.    }
  66.  
  67.    void drawBlink(Graphics var1) {
  68.       if (this.blink == 0) {
  69.          var1.setColor(this.darkGreen);
  70.          this.blink = 1;
  71.       } else {
  72.          var1.setColor(Color.black);
  73.          this.blink = 0;
  74.       }
  75.  
  76.       var1.drawLine(30, 9, 30, 10);
  77.       var1.drawLine(29, 12, 29, 13);
  78.    }
  79.  
  80.    void drawTime(Graphics var1) {
  81.       ((Component)this).getFontMetrics(this.timeFont);
  82.       String var2 = "" + this.now.getHours() / 10 + this.now.getHours() % 10 + ":" + "" + this.now.getMinutes() / 10 + this.now.getMinutes() % 10;
  83.       var1.setFont(this.timeFont);
  84.       var1.setColor(this.darkGreen);
  85.       this.drawDigitString(var1, var2, 4, 6);
  86.    }
  87.  
  88.    void drawDate(Graphics var1) {
  89.       var1.setColor(Color.black);
  90.       FontMetrics var2 = ((Component)this).getFontMetrics(this.dayFont);
  91.       String var3 = this.weekday[this.now.getDay()];
  92.       var1.setFont(this.dayFont);
  93.       var1.drawString(var3, (((Component)this).size().width - var2.stringWidth(var3)) / 2 - 2, 31);
  94.       var2 = ((Component)this).getFontMetrics(this.dateFont);
  95.       var3 = "" + this.now.getDate();
  96.       var1.setFont(this.dateFont);
  97.       var1.drawString(var3, (((Component)this).size().width - var2.stringWidth(var3)) / 2 - 2, 46);
  98.       var2 = ((Component)this).getFontMetrics(this.monthFont);
  99.       var3 = this.month[this.now.getMonth()];
  100.       var1.setFont(this.monthFont);
  101.       var1.drawString(var3, (((Component)this).size().width - var2.stringWidth(var3)) / 2 - 2, 54);
  102.    }
  103.  
  104.    public void update(Graphics var1) {
  105.       this.paint(var1);
  106.    }
  107.  
  108.    public void paint(Graphics var1) {
  109.       var1.drawImage(this.baseImg, 0, 0, this);
  110.       this.drawDate(var1);
  111.       this.drawTime(var1);
  112.    }
  113.  
  114.    public void start() {
  115.       if (this.clockThread == null) {
  116.          this.clockThread = new Thread(this, "Clock");
  117.          this.clockThread.start();
  118.       }
  119.  
  120.    }
  121.  
  122.    public void run() {
  123.       while(this.clockThread != null) {
  124.          this.now = new Date();
  125.          if (this.last_min != this.now.getMinutes()) {
  126.             this.last_min = this.now.getMinutes();
  127.             ((Component)this).getGraphics().drawImage(this.baseImg, 0, 0, this);
  128.             this.drawDate(((Component)this).getGraphics());
  129.             this.drawTime(((Component)this).getGraphics());
  130.          }
  131.  
  132.          this.drawBlink(((Component)this).getGraphics());
  133.          ((Component)this).getToolkit().sync();
  134.          this.pause(1000);
  135.       }
  136.  
  137.    }
  138.  
  139.    public void pause(int var1) {
  140.       try {
  141.          Thread.sleep((long)var1);
  142.       } catch (InterruptedException var2) {
  143.       }
  144.    }
  145.  
  146.    public void stop() {
  147.       this.clockThread.stop();
  148.       this.clockThread = null;
  149.    }
  150. }
  151.