diff options
Diffstat (limited to 'testautomation/global/input/java/Clock.java')
-rwxr-xr-x | testautomation/global/input/java/Clock.java | 227 |
1 files changed, 227 insertions, 0 deletions
diff --git a/testautomation/global/input/java/Clock.java b/testautomation/global/input/java/Clock.java new file mode 100755 index 000000000000..d99baaf603a7 --- /dev/null +++ b/testautomation/global/input/java/Clock.java @@ -0,0 +1,227 @@ +/* + * Copyright (c) 2004 Sun Microsystems, Inc. All Rights Reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * -Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * -Redistribution in binary form must reproduct the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the distribution. + * + * Neither the name of Sun Microsystems, Inc. or the names of contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * This software is provided "AS IS," without a warranty of any kind. ALL + * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING + * ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE + * OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND ITS LICENSORS SHALL NOT + * BE LIABLE FOR ANY DAMAGES OR LIABILITIES SUFFERED BY LICENSEE AS A RESULT + * OF OR RELATING TO USE, MODIFICATION OR DISTRIBUTION OF THE SOFTWARE OR ITS + * DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST + * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, + * INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY + * OF LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE SOFTWARE, EVEN + * IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + * + * You acknowledge that Software is not designed, licensed or intended for + * use in the design, construction, operation or maintenance of any nuclear + * facility. + */ + +/* + * @(#)Clock.java 1.13 03/12/19 + */ + +import java.util.*; +import java.awt.*; +import java.applet.*; +import java.text.*; + +/** + * Time! + * + * @author Rachel Gollub + * @modified Daniel Peek replaced circle drawing calculation, few more changes + */ +public class Clock extends Applet implements Runnable { + private volatile Thread timer; // The thread that displays clock + private int lastxs, lastys, lastxm, + lastym, lastxh, lastyh; // Dimensions used to draw hands + private SimpleDateFormat formatter; // Formats the date displayed + private String lastdate; // String to hold date displayed + private Font clockFaceFont; // Font for number display on clock + private Date currentDate; // Used to get date to display + private Color handColor; // Color of main hands and dial + private Color numberColor; // Color of second hand and numbers + private int xcenter = 80, ycenter = 55; // Center position + + public void init() { + int x,y; + lastxs = lastys = lastxm = lastym = lastxh = lastyh = 0; + formatter = new SimpleDateFormat ("EEE MMM dd hh:mm:ss yyyy", + Locale.getDefault()); + currentDate = new Date(); + lastdate = formatter.format(currentDate); + clockFaceFont = new Font("Serif", Font.PLAIN, 14); + handColor = Color.blue; + numberColor = Color.darkGray; + + try { + setBackground(new Color(Integer.parseInt(getParameter("bgcolor"), + 16))); + } catch (NullPointerException e) { + } catch (NumberFormatException e) { + } + try { + handColor = new Color(Integer.parseInt(getParameter("fgcolor1"), + 16)); + } catch (NullPointerException e) { + } catch (NumberFormatException e) { + } + try { + numberColor = new Color(Integer.parseInt(getParameter("fgcolor2"), + 16)); + } catch (NullPointerException e) { + } catch (NumberFormatException e) { + } + resize(300,300); // Set clock window size + } + + // Paint is the main part of the program + public void update(Graphics g) { + int xh, yh, xm, ym, xs, ys; + int s = 0, m = 10, h = 10; + String today; + + currentDate = new Date(); + + formatter.applyPattern("s"); + try { + s = Integer.parseInt(formatter.format(currentDate)); + } catch (NumberFormatException n) { + s = 0; + } + formatter.applyPattern("m"); + try { + m = Integer.parseInt(formatter.format(currentDate)); + } catch (NumberFormatException n) { + m = 10; + } + formatter.applyPattern("h"); + try { + h = Integer.parseInt(formatter.format(currentDate)); + } catch (NumberFormatException n) { + h = 10; + } + + // Set position of the ends of the hands + xs = (int) (Math.cos(s * Math.PI / 30 - Math.PI / 2) * 45 + xcenter); + ys = (int) (Math.sin(s * Math.PI / 30 - Math.PI / 2) * 45 + ycenter); + xm = (int) (Math.cos(m * Math.PI / 30 - Math.PI / 2) * 40 + xcenter); + ym = (int) (Math.sin(m * Math.PI / 30 - Math.PI / 2) * 40 + ycenter); + xh = (int) (Math.cos((h*30 + m / 2) * Math.PI / 180 - Math.PI / 2) * 30 + + xcenter); + yh = (int) (Math.sin((h*30 + m / 2) * Math.PI / 180 - Math.PI / 2) * 30 + + ycenter); + + // Get the date to print at the bottom + formatter.applyPattern("EEE MMM dd HH:mm:ss yyyy"); + today = formatter.format(currentDate); + + g.setFont(clockFaceFont); + // Erase if necessary + g.setColor(getBackground()); + if (xs != lastxs || ys != lastys) { + g.drawLine(xcenter, ycenter, lastxs, lastys); + g.drawString(lastdate, 5, 125); + } + if (xm != lastxm || ym != lastym) { + g.drawLine(xcenter, ycenter-1, lastxm, lastym); + g.drawLine(xcenter-1, ycenter, lastxm, lastym); + } + if (xh != lastxh || yh != lastyh) { + g.drawLine(xcenter, ycenter-1, lastxh, lastyh); + g.drawLine(xcenter-1, ycenter, lastxh, lastyh); + } + + // Draw date and hands + g.setColor(numberColor); + g.drawString(today, 5, 125); + g.drawLine(xcenter, ycenter, xs, ys); + g.setColor(handColor); + g.drawLine(xcenter, ycenter-1, xm, ym); + g.drawLine(xcenter-1, ycenter, xm, ym); + g.drawLine(xcenter, ycenter-1, xh, yh); + g.drawLine(xcenter-1, ycenter, xh, yh); + lastxs = xs; lastys = ys; + lastxm = xm; lastym = ym; + lastxh = xh; lastyh = yh; + lastdate = today; + currentDate = null; + } + + public void paint(Graphics g) { + g.setFont(clockFaceFont); + // Draw the circle and numbers + g.setColor(handColor); + g.drawArc(xcenter-50, ycenter-50, 100, 100, 0, 360); + g.setColor(numberColor); + g.drawString("9", xcenter-45, ycenter+3); + g.drawString("3", xcenter+40, ycenter+3); + g.drawString("12", xcenter-5, ycenter-37); + g.drawString("6", xcenter-3, ycenter+45); + + // Draw date and hands + g.setColor(numberColor); + g.drawString(lastdate, 5, 125); + g.drawLine(xcenter, ycenter, lastxs, lastys); + g.setColor(handColor); + g.drawLine(xcenter, ycenter-1, lastxm, lastym); + g.drawLine(xcenter-1, ycenter, lastxm, lastym); + g.drawLine(xcenter, ycenter-1, lastxh, lastyh); + g.drawLine(xcenter-1, ycenter, lastxh, lastyh); + } + + public void start() { + timer = new Thread(this); + timer.start(); + } + + public void stop() { + timer = null; + } + + public void run() { + Thread me = Thread.currentThread(); + while (timer == me) { + try { + Thread.currentThread().sleep(100); + } catch (InterruptedException e) { + } + repaint(); + } + } + + public String getAppletInfo() { + return "Title: A Clock \n" + + "Author: Rachel Gollub, 1995 \n" + + "An analog clock."; + } + + public String[][] getParameterInfo() { + String[][] info = { + {"bgcolor", "hexadecimal RGB number", + "The background color. Default is the color of your browser."}, + {"fgcolor1", "hexadecimal RGB number", + "The color of the hands and dial. Default is blue."}, + {"fgcolor2", "hexadecimal RGB number", + "The color of the second hand and numbers. Default is dark gray."} + }; + return info; + } +} |