home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 2003 March / DPPCPRO0303.ISO / Extras / Content / Images / Studio NetObjects / Java Applets / led_clock.class (.txt) next >
Encoding:
Java Class File  |  1998-10-22  |  11.1 KB  |  603 lines

  1. import java.applet.Applet;
  2. import java.awt.Color;
  3. import java.awt.Component;
  4. import java.awt.Graphics;
  5. import java.io.DataInputStream;
  6. import java.net.Socket;
  7. import java.util.Date;
  8.  
  9. public class led_clock extends Applet implements Runnable {
  10.    public final int MODE_DATE;
  11.    public final int MODE_12_HOUR = 12;
  12.    public final int MODE_24_HOUR = 24;
  13.    public static final int BACKCOLOR = 0;
  14.    public static final int LEDCOLOR = 1;
  15.    public static final int FRAMECOLOR = 2;
  16.    Date theDate;
  17.    String server_name;
  18.    int lastHour;
  19.    int lastMinute;
  20.    int lastSecond;
  21.    Thread tickTock;
  22.    int speed = 1000;
  23.    int lastTenHour;
  24.    int lastTenMinute;
  25.    int lastTenSecond;
  26.    Color LEDColour;
  27.    Color BackGround;
  28.    Color FrameColour;
  29.    int Mode;
  30.    int lastamORpm;
  31.    String tick_sound;
  32.    String alarm_sound;
  33.    int alarm_hour;
  34.    int alarm_minute;
  35.    boolean alarm_set;
  36.  
  37.    public String[][] getParameterInfo() {
  38.       String[][] var1 = new String[][]{{"ledcolor", "string", "color of the characters (ex. green)"}, {"backcolor", "string", "background color of applet window (ex. black)"}, {"framecolor", "string", "border color of applet window (ex. blue)"}, {"clock_mode", "integer", "12 or 24 hour clock; 0 for date only "}, {"time_mode", "string", "time taken from client or server clock"}};
  39.       return var1;
  40.    }
  41.  
  42.    public String getAppletInfo() {
  43.       return new String("Netobjects LED clock");
  44.    }
  45.  
  46.    public void init() {
  47.       this.lastHour = 0;
  48.       this.lastMinute = 0;
  49.       this.lastSecond = 0;
  50.       this.lastTenHour = 0;
  51.       this.lastTenMinute = 0;
  52.       this.lastTenSecond = 0;
  53.       this.lastamORpm = -1;
  54.       this.theDate = new Date();
  55.       String var1 = ((Applet)this).getParameter("backcolor");
  56.       this.BackGround = var1 == null ? Color.black : this.GetColourFromString(var1, 0);
  57.       var1 = ((Applet)this).getParameter("ledcolor");
  58.       this.LEDColour = var1 == null ? Color.green : this.GetColourFromString(var1, 1);
  59.       var1 = ((Applet)this).getParameter("framecolor");
  60.       this.FrameColour = var1 == null ? Color.green : this.GetColourFromString(var1, 2);
  61.       var1 = ((Applet)this).getParameter("clock_mode");
  62.       this.Mode = var1 == null ? 24 : Integer.valueOf(var1);
  63.       if (this.Mode != 24 && this.Mode != 12) {
  64.          this.Mode = 0;
  65.       }
  66.  
  67.       this.tick_sound = ((Applet)this).getParameter("tick_sound");
  68.       this.alarm_sound = ((Applet)this).getParameter("alarm_sound");
  69.       var1 = ((Applet)this).getParameter("time_mode");
  70.       if (var1 != null && var1.equals("server")) {
  71.          this.init_server();
  72.       } else {
  73.          this.server_name = "local";
  74.       }
  75.  
  76.       var1 = ((Applet)this).getParameter("alarm");
  77.       this.alarm_set = var1 == null ? false : this.set_alarm(var1);
  78.       ((Applet)this).resize(120, 36);
  79.       ((Component)this).repaint();
  80.    }
  81.  
  82.    boolean set_alarm(String var1) {
  83.       try {
  84.          String var2 = var1.substring(0, var1.indexOf(":"));
  85.          String var3 = var1.substring(var1.indexOf(":") + 1, var1.length());
  86.          this.alarm_hour = Integer.parseInt(var2);
  87.          this.alarm_minute = Integer.parseInt(var3);
  88.          return true;
  89.       } catch (Exception var4) {
  90.          System.out.println("error in alarm format");
  91.          return false;
  92.       }
  93.    }
  94.  
  95.    void init_server() {
  96.       String var1 = new String(((Applet)this).getCodeBase().toString());
  97.       if (var1.startsWith("file")) {
  98.          this.server_name = "local";
  99.       } else {
  100.          try {
  101.             String var2 = var1.substring(var1.indexOf("//") + 2);
  102.             var2 = var2.substring(0, var2.indexOf("/"));
  103.             Socket var3 = new Socket(var2, 13);
  104.             DataInputStream var4 = new DataInputStream(var3.getInputStream());
  105.             this.theDate = new Date(Date.parse(var4.readLine()));
  106.             var3.close();
  107.             this.server_name = var2;
  108.          } catch (Exception var5) {
  109.             System.out.println("Error initializing from server");
  110.             this.server_name = "local";
  111.          }
  112.       }
  113.    }
  114.  
  115.    public Color GetColourFromString(String var1, int var2) {
  116.       if (var1.equalsIgnoreCase("BLACK")) {
  117.          return Color.black;
  118.       } else if (var1.equalsIgnoreCase("BLUE")) {
  119.          return Color.blue;
  120.       } else if (var1.equalsIgnoreCase("CYAN")) {
  121.          return Color.cyan;
  122.       } else if (var1.equalsIgnoreCase("DARKGRAY")) {
  123.          return Color.darkGray;
  124.       } else if (var1.equalsIgnoreCase("GRAY")) {
  125.          return Color.gray;
  126.       } else if (var1.equalsIgnoreCase("GREEN")) {
  127.          return Color.green;
  128.       } else if (var1.equalsIgnoreCase("LIGHTGRAY")) {
  129.          return Color.lightGray;
  130.       } else if (var1.equalsIgnoreCase("MAGENTA")) {
  131.          return Color.magenta;
  132.       } else if (var1.equalsIgnoreCase("ORANGE")) {
  133.          return Color.orange;
  134.       } else if (var1.equalsIgnoreCase("PINK")) {
  135.          return Color.pink;
  136.       } else if (var1.equalsIgnoreCase("RED")) {
  137.          return Color.red;
  138.       } else if (var1.equalsIgnoreCase("WHITE")) {
  139.          return Color.white;
  140.       } else if (var1.equalsIgnoreCase("YELLOW")) {
  141.          return Color.yellow;
  142.       } else {
  143.          switch (var2) {
  144.             case 0:
  145.                return Color.black;
  146.             case 1:
  147.                return Color.green;
  148.             case 2:
  149.                return Color.green;
  150.             default:
  151.                return Color.black;
  152.          }
  153.       }
  154.    }
  155.  
  156.    public void paint(Graphics var1) {
  157.       Color var2 = var1.getColor();
  158.       var1.setColor(this.BackGround);
  159.       var1.fillRect(0, 0, ((Component)this).bounds().width - 1, ((Component)this).bounds().height - 1);
  160.       var1.setColor(this.FrameColour);
  161.       var1.drawRect(0, 0, ((Component)this).bounds().width - 1, ((Component)this).bounds().height - 1);
  162.       this.DrawClock(var1);
  163.       var1.setColor(var2);
  164.    }
  165.  
  166.    public final synchronized void update(Graphics var1) {
  167.       Color var2 = var1.getColor();
  168.       this.increment_clock();
  169.       if (this.Mode == 0) {
  170.          int var3 = this.theDate.getMonth() + 1;
  171.          int var4 = this.theDate.getDate();
  172.          this.theDate.getYear();
  173.          if (var3 > 9) {
  174.             this.DrawTenHour(1);
  175.             this.DrawHour(var3 - 10);
  176.          } else {
  177.             this.DrawHour(var3);
  178.          }
  179.  
  180.          if (var4 > 9) {
  181.             this.DrawTenSecond(var4 / 10);
  182.             this.DrawSecond(var4 % 10);
  183.          } else {
  184.             this.DrawSecond(var4);
  185.          }
  186.       } else {
  187.          int var10 = 0;
  188.          int var13 = 0;
  189.          int var5 = 0;
  190.          var5 = this.theDate.getSeconds();
  191.          var13 = this.theDate.getMinutes();
  192.          var10 = this.theDate.getHours();
  193.          byte var9;
  194.          if (this.Mode == 12 && var10 > 12) {
  195.             var10 -= 12;
  196.             var9 = 1;
  197.          } else if (var10 == 12) {
  198.             var9 = 1;
  199.          } else {
  200.             var9 = 0;
  201.          }
  202.  
  203.          if (this.Mode == 12 && var10 == 0) {
  204.             var10 = 12;
  205.          }
  206.  
  207.          int var6 = var10 / 10;
  208.          var10 -= var6 * 10;
  209.          if (this.Mode == 12 && var6 == 0) {
  210.             var6 = -1;
  211.          }
  212.  
  213.          int var7 = var13 / 10;
  214.          var13 -= var7 * 10;
  215.          int var8 = var5 / 10;
  216.          var5 -= var8 * 10;
  217.          if (var5 != this.lastSecond) {
  218.             this.DrawSecond(var5);
  219.             this.lastSecond = var5;
  220.          }
  221.  
  222.          if (var8 != this.lastTenSecond) {
  223.             this.DrawTenSecond(var8);
  224.             this.lastTenSecond = var8;
  225.          }
  226.  
  227.          if (var13 != this.lastMinute) {
  228.             this.DrawMinute(var13);
  229.             this.lastMinute = var13;
  230.          }
  231.  
  232.          if (var7 != this.lastTenMinute) {
  233.             this.DrawTenMinute(var7);
  234.             this.lastTenMinute = var7;
  235.          }
  236.  
  237.          if (var10 != this.lastHour) {
  238.             this.DrawHour(var10);
  239.             this.lastHour = var10;
  240.          }
  241.  
  242.          if (var6 != this.lastTenHour) {
  243.             this.DrawTenHour(var6);
  244.             this.lastTenHour = var6;
  245.             if (this.Mode == 12) {
  246.                this.DrawAMorPM(var9);
  247.             }
  248.          }
  249.  
  250.          if (this.Mode == 12 && var9 != this.lastamORpm) {
  251.             this.DrawAMorPM(var9);
  252.             this.lastamORpm = var9;
  253.          }
  254.  
  255.          if (this.alarm_set) {
  256.             if (this.theDate.getHours() == this.alarm_hour && this.theDate.getMinutes() == this.alarm_minute && this.alarm_sound != null) {
  257.                ((Applet)this).play(((Applet)this).getDocumentBase(), this.tick_sound);
  258.             }
  259.          } else if (this.tick_sound != null) {
  260.             ((Applet)this).play(((Applet)this).getDocumentBase(), this.tick_sound);
  261.          }
  262.       }
  263.  
  264.       this.DrawColons();
  265.       var1.setColor(var2);
  266.    }
  267.  
  268.    void increment_clock() {
  269.       if (this.server_name.equals("local")) {
  270.          this.theDate = new Date();
  271.       } else if (this.theDate.getSeconds() == 59) {
  272.          this.theDate.setSeconds(0);
  273.          if (this.theDate.getMinutes() == 59) {
  274.             this.theDate.setMinutes(0);
  275.             if (this.theDate.getHours() == 23) {
  276.                this.init_server();
  277.             } else {
  278.                this.theDate.setHours(this.theDate.getHours() + 1);
  279.             }
  280.          } else {
  281.             this.theDate.setMinutes(this.theDate.getMinutes() + 1);
  282.          }
  283.       } else {
  284.          this.theDate.setSeconds(this.theDate.getSeconds() + 1);
  285.       }
  286.    }
  287.  
  288.    public synchronized void DrawClock(Graphics var1) {
  289.       if (this.Mode != 0) {
  290.          int var6 = this.theDate.getSeconds();
  291.          int var7 = this.theDate.getMinutes();
  292.          int var8 = this.theDate.getHours();
  293.          byte var5;
  294.          if (this.Mode == 12 && var8 > 12) {
  295.             var8 -= 12;
  296.             var5 = 1;
  297.          } else if (var8 == 12) {
  298.             var5 = 1;
  299.          } else {
  300.             var5 = 0;
  301.          }
  302.  
  303.          if (this.Mode == 12 && var8 == 0) {
  304.             var8 = 12;
  305.          }
  306.  
  307.          int var2 = var8 / 10;
  308.          var8 -= var2 * 10;
  309.          if (this.Mode == 12 && var2 == 0) {
  310.             var2 = -1;
  311.          }
  312.  
  313.          int var3 = var7 / 10;
  314.          var7 -= var3 * 10;
  315.          int var4 = var6 / 10;
  316.          var6 -= var4 * 10;
  317.          this.DrawSecond(var6);
  318.          this.DrawTenSecond(var4);
  319.          this.DrawMinute(var7);
  320.          this.DrawTenMinute(var3);
  321.          this.DrawHour(var8);
  322.          this.DrawTenHour(var2);
  323.          this.DrawColons();
  324.          if (this.Mode == 12) {
  325.             this.DrawAMorPM(var5);
  326.          }
  327.       }
  328.  
  329.    }
  330.  
  331.    public synchronized void DrawSecond(int var1) {
  332.       this.DrawSevenSegments(((Component)this).getGraphics(), var1, 99, 5);
  333.    }
  334.  
  335.    public synchronized void DrawTenSecond(int var1) {
  336.       this.DrawSevenSegments(((Component)this).getGraphics(), var1, 81, 5);
  337.    }
  338.  
  339.    public synchronized void DrawMinute(int var1) {
  340.       this.DrawSevenSegments(((Component)this).getGraphics(), var1, 61, 5);
  341.    }
  342.  
  343.    public synchronized void DrawTenMinute(int var1) {
  344.       this.DrawSevenSegments(((Component)this).getGraphics(), var1, 43, 5);
  345.    }
  346.  
  347.    public synchronized void DrawHour(int var1) {
  348.       this.DrawSevenSegments(((Component)this).getGraphics(), var1, 23, 5);
  349.    }
  350.  
  351.    public synchronized void DrawTenHour(int var1) {
  352.       this.DrawSevenSegments(((Component)this).getGraphics(), var1, 5, 5);
  353.    }
  354.  
  355.    public synchronized void DrawAMorPM(int var1) {
  356.       Graphics var2 = ((Component)this).getGraphics();
  357.       var2.setColor(this.LEDColour);
  358.       if (var1 == 1) {
  359.          var2.fillRect(4, 5, 2, 9);
  360.          var2.fillRect(4, 5, 6, 2);
  361.          var2.fillRect(4, 9, 6, 2);
  362.          var2.fillRect(10, 6, 2, 4);
  363.          var2.setColor(this.BackGround);
  364.          var2.fillRect(4, 20, 8, 10);
  365.       } else {
  366.          var2.fillRect(4, 22, 2, 8);
  367.          var2.fillRect(5, 21, 6, 2);
  368.          var2.fillRect(10, 22, 2, 8);
  369.          var2.fillRect(4, 25, 6, 2);
  370.          var2.setColor(this.BackGround);
  371.          var2.fillRect(4, 5, 8, 10);
  372.       }
  373.    }
  374.  
  375.    public synchronized void DrawColons() {
  376.       Graphics var1 = ((Component)this).getGraphics();
  377.       var1.setColor(this.LEDColour);
  378.       if (this.Mode == 0) {
  379.          var1.fillRect(55, 16, 10, 2);
  380.       } else {
  381.          var1.fillRect(39, 13, 2, 2);
  382.          var1.fillRect(39, 22, 2, 2);
  383.          var1.fillRect(77, 13, 2, 2);
  384.          var1.fillRect(77, 22, 2, 2);
  385.       }
  386.    }
  387.  
  388.    private synchronized void DrawSevenSegments(Graphics var1, int var2, int var3, int var4) {
  389.       switch (var2) {
  390.          case -1:
  391.             this.DrawSegment0Off(var1, var3, var4);
  392.             this.DrawSegment1Off(var1, var3, var4);
  393.             this.DrawSegment2Off(var1, var3, var4);
  394.             this.DrawSegment3Off(var1, var3, var4);
  395.             this.DrawSegment4Off(var1, var3, var4);
  396.             this.DrawSegment5Off(var1, var3, var4);
  397.             this.DrawSegment6Off(var1, var3, var4);
  398.             return;
  399.          case 0:
  400.             this.DrawSegment0On(var1, var3, var4);
  401.             this.DrawSegment1On(var1, var3, var4);
  402.             this.DrawSegment2On(var1, var3, var4);
  403.             this.DrawSegment3Off(var1, var3, var4);
  404.             this.DrawSegment4On(var1, var3, var4);
  405.             this.DrawSegment5On(var1, var3, var4);
  406.             this.DrawSegment6On(var1, var3, var4);
  407.             return;
  408.          case 1:
  409.             this.DrawSegment0Off(var1, var3, var4);
  410.             this.DrawSegment1Off(var1, var3, var4);
  411.             this.DrawSegment2On(var1, var3, var4);
  412.             this.DrawSegment3Off(var1, var3, var4);
  413.             this.DrawSegment4Off(var1, var3, var4);
  414.             this.DrawSegment5On(var1, var3, var4);
  415.             this.DrawSegment6Off(var1, var3, var4);
  416.             return;
  417.          case 2:
  418.             this.DrawSegment0On(var1, var3, var4);
  419.             this.DrawSegment1Off(var1, var3, var4);
  420.             this.DrawSegment2On(var1, var3, var4);
  421.             this.DrawSegment3On(var1, var3, var4);
  422.             this.DrawSegment4On(var1, var3, var4);
  423.             this.DrawSegment5Off(var1, var3, var4);
  424.             this.DrawSegment6On(var1, var3, var4);
  425.             return;
  426.          case 3:
  427.             this.DrawSegment0On(var1, var3, var4);
  428.             this.DrawSegment1Off(var1, var3, var4);
  429.             this.DrawSegment2On(var1, var3, var4);
  430.             this.DrawSegment3On(var1, var3, var4);
  431.             this.DrawSegment4Off(var1, var3, var4);
  432.             this.DrawSegment5On(var1, var3, var4);
  433.             this.DrawSegment6On(var1, var3, var4);
  434.             return;
  435.          case 4:
  436.             this.DrawSegment0Off(var1, var3, var4);
  437.             this.DrawSegment1On(var1, var3, var4);
  438.             this.DrawSegment2On(var1, var3, var4);
  439.             this.DrawSegment3On(var1, var3, var4);
  440.             this.DrawSegment4Off(var1, var3, var4);
  441.             this.DrawSegment5On(var1, var3, var4);
  442.             this.DrawSegment6Off(var1, var3, var4);
  443.             return;
  444.          case 5:
  445.             this.DrawSegment0On(var1, var3, var4);
  446.             this.DrawSegment1On(var1, var3, var4);
  447.             this.DrawSegment2Off(var1, var3, var4);
  448.             this.DrawSegment3On(var1, var3, var4);
  449.             this.DrawSegment4Off(var1, var3, var4);
  450.             this.DrawSegment5On(var1, var3, var4);
  451.             this.DrawSegment6On(var1, var3, var4);
  452.             return;
  453.          case 6:
  454.             this.DrawSegment0On(var1, var3, var4);
  455.             this.DrawSegment1On(var1, var3, var4);
  456.             this.DrawSegment2Off(var1, var3, var4);
  457.             this.DrawSegment3On(var1, var3, var4);
  458.             this.DrawSegment4On(var1, var3, var4);
  459.             this.DrawSegment5On(var1, var3, var4);
  460.             this.DrawSegment6On(var1, var3, var4);
  461.             return;
  462.          case 7:
  463.             this.DrawSegment0On(var1, var3, var4);
  464.             this.DrawSegment1Off(var1, var3, var4);
  465.             this.DrawSegment2On(var1, var3, var4);
  466.             this.DrawSegment3Off(var1, var3, var4);
  467.             this.DrawSegment4Off(var1, var3, var4);
  468.             this.DrawSegment5On(var1, var3, var4);
  469.             this.DrawSegment6Off(var1, var3, var4);
  470.             return;
  471.          case 8:
  472.             this.DrawSegment0On(var1, var3, var4);
  473.             this.DrawSegment1On(var1, var3, var4);
  474.             this.DrawSegment2On(var1, var3, var4);
  475.             this.DrawSegment3On(var1, var3, var4);
  476.             this.DrawSegment4On(var1, var3, var4);
  477.             this.DrawSegment5On(var1, var3, var4);
  478.             this.DrawSegment6On(var1, var3, var4);
  479.             return;
  480.          case 9:
  481.             this.DrawSegment0On(var1, var3, var4);
  482.             this.DrawSegment1On(var1, var3, var4);
  483.             this.DrawSegment2On(var1, var3, var4);
  484.             this.DrawSegment3On(var1, var3, var4);
  485.             this.DrawSegment4Off(var1, var3, var4);
  486.             this.DrawSegment5On(var1, var3, var4);
  487.             this.DrawSegment6Off(var1, var3, var4);
  488.             return;
  489.          default:
  490.       }
  491.    }
  492.  
  493.    private synchronized void DrawSegment0On(Graphics var1, int var2, int var3) {
  494.       var1.setColor(this.LEDColour);
  495.       this.DrawHorizontalLine(var1, var2 + 3, var3 + 1, 9);
  496.    }
  497.  
  498.    private synchronized void DrawSegment0Off(Graphics var1, int var2, int var3) {
  499.       var1.setColor(this.BackGround);
  500.       this.DrawHorizontalLine(var1, var2 + 3, var3 + 1, 9);
  501.    }
  502.  
  503.    private synchronized void DrawSegment3On(Graphics var1, int var2, int var3) {
  504.       var1.setColor(this.LEDColour);
  505.       this.DrawHorizontalLine(var1, var2 + 3, var3 + 12, 9);
  506.    }
  507.  
  508.    private synchronized void DrawSegment3Off(Graphics var1, int var2, int var3) {
  509.       var1.setColor(this.BackGround);
  510.       this.DrawHorizontalLine(var1, var2 + 3, var3 + 12, 9);
  511.    }
  512.  
  513.    private synchronized void DrawSegment6On(Graphics var1, int var2, int var3) {
  514.       var1.setColor(this.LEDColour);
  515.       this.DrawHorizontalLine(var1, var2 + 3, var3 + 23, 9);
  516.    }
  517.  
  518.    private synchronized void DrawSegment6Off(Graphics var1, int var2, int var3) {
  519.       var1.setColor(this.BackGround);
  520.       this.DrawHorizontalLine(var1, var2 + 3, var3 + 23, 9);
  521.    }
  522.  
  523.    private synchronized void DrawSegment1On(Graphics var1, int var2, int var3) {
  524.       var1.setColor(this.LEDColour);
  525.       this.DrawVerticalLine(var1, var2 + 1, var3 + 3, 9);
  526.    }
  527.  
  528.    private synchronized void DrawSegment1Off(Graphics var1, int var2, int var3) {
  529.       var1.setColor(this.BackGround);
  530.       this.DrawVerticalLine(var1, var2 + 1, var3 + 3, 9);
  531.    }
  532.  
  533.    private synchronized void DrawSegment2On(Graphics var1, int var2, int var3) {
  534.       var1.setColor(this.LEDColour);
  535.       this.DrawVerticalLine(var1, var2 + 12, var3 + 3, 9);
  536.    }
  537.  
  538.    private synchronized void DrawSegment2Off(Graphics var1, int var2, int var3) {
  539.       var1.setColor(this.BackGround);
  540.       this.DrawVerticalLine(var1, var2 + 12, var3 + 3, 9);
  541.    }
  542.  
  543.    private synchronized void DrawSegment4On(Graphics var1, int var2, int var3) {
  544.       var1.setColor(this.LEDColour);
  545.       this.DrawVerticalLine(var1, var2 + 1, var3 + 14, 9);
  546.    }
  547.  
  548.    private synchronized void DrawSegment4Off(Graphics var1, int var2, int var3) {
  549.       var1.setColor(this.BackGround);
  550.       this.DrawVerticalLine(var1, var2 + 1, var3 + 14, 9);
  551.    }
  552.  
  553.    private synchronized void DrawSegment5On(Graphics var1, int var2, int var3) {
  554.       var1.setColor(this.LEDColour);
  555.       this.DrawVerticalLine(var1, var2 + 12, var3 + 14, 9);
  556.    }
  557.  
  558.    private synchronized void DrawSegment5Off(Graphics var1, int var2, int var3) {
  559.       var1.setColor(this.BackGround);
  560.       this.DrawVerticalLine(var1, var2 + 12, var3 + 14, 9);
  561.    }
  562.  
  563.    private synchronized void DrawHorizontalLine(Graphics var1, int var2, int var3, int var4) {
  564.       var1.drawLine(var2 + 1, var3 - 1, var2 + var4 - 3, var3 - 1);
  565.       var1.drawLine(var2, var3, var2 + var4 - 1, var3);
  566.       var1.drawLine(var2 + 1, var3 + 1, var2 + var4 - 3, var3 + 1);
  567.    }
  568.  
  569.    private synchronized void DrawVerticalLine(Graphics var1, int var2, int var3, int var4) {
  570.       var1.drawLine(var2 - 1, var3 + 1, var2 - 1, var3 + var4 - 3);
  571.       var1.drawLine(var2, var3, var2, var3 + var4 - 1);
  572.       var1.drawLine(var2 + 1, var3 + 1, var2 + 1, var3 + var4 - 3);
  573.    }
  574.  
  575.    public void start() {
  576.       if (this.tickTock == null) {
  577.          this.tickTock = new Thread(this);
  578.          this.tickTock.start();
  579.       }
  580.  
  581.    }
  582.  
  583.    public void stop() {
  584.       if (this.tickTock != null) {
  585.          this.tickTock.stop();
  586.          this.tickTock = null;
  587.       }
  588.  
  589.    }
  590.  
  591.    public void run() {
  592.       while(true) {
  593.          try {
  594.             Thread.currentThread();
  595.             Thread.sleep((long)this.speed);
  596.          } catch (InterruptedException var1) {
  597.          }
  598.  
  599.          super.repaint();
  600.       }
  601.    }
  602. }
  603.