diff --git a/jdk/src/share/demo/applets/Clock/Clock.java b/jdk/src/share/demo/applets/Clock/Clock.java index 4c86ad3319d..ea698ff503e 100644 --- a/jdk/src/share/demo/applets/Clock/Clock.java +++ b/jdk/src/share/demo/applets/Clock/Clock.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -29,24 +29,28 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* - */ -import java.util.*; -import java.awt.*; -import java.applet.*; -import java.text.*; +import java.applet.Applet; +import java.awt.Color; +import java.awt.Font; +import java.awt.Graphics; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Locale; + /** * Time! * * @author Rachel Gollub - * @modified Daniel Peek replaced circle drawing calculation, few more changes + * @author Daniel Peek replaced circle drawing calculation, few more changes */ +@SuppressWarnings("serial") 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 + 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 @@ -55,11 +59,11 @@ public class Clock extends Applet implements Runnable { private Color numberColor; // Color of second hand and numbers private int xcenter = 80, ycenter = 55; // Center position + @Override 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()); + 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); @@ -68,26 +72,29 @@ public class Clock extends Applet implements Runnable { try { setBackground(new Color(Integer.parseInt(getParameter("bgcolor"), - 16))); + 16))); } catch (NullPointerException e) { } catch (NumberFormatException e) { } try { handColor = new Color(Integer.parseInt(getParameter("fgcolor1"), - 16)); + 16)); } catch (NullPointerException e) { } catch (NumberFormatException e) { } try { numberColor = new Color(Integer.parseInt(getParameter("fgcolor2"), - 16)); + 16)); } catch (NullPointerException e) { } catch (NumberFormatException e) { } - resize(300,300); // Set clock window size + resize(300, 300); // Set clock window size } - // Paint is the main part of the program + /** + * Paint is the main part of the program + */ + @Override public void update(Graphics g) { int xh, yh, xm, ym, xs, ys; int s = 0, m = 10, h = 10; @@ -119,10 +126,12 @@ public class Clock extends Applet implements Runnable { 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); + 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"); @@ -136,12 +145,12 @@ public class Clock extends Applet implements Runnable { g.drawString(lastdate, 5, 125); } if (xm != lastxm || ym != lastym) { - g.drawLine(xcenter, ycenter-1, lastxm, lastym); - g.drawLine(xcenter-1, ycenter, lastxm, 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); + g.drawLine(xcenter, ycenter - 1, lastxh, lastyh); + g.drawLine(xcenter - 1, ycenter, lastxh, lastyh); } // Draw date and hands @@ -149,73 +158,83 @@ public class Clock extends Applet implements Runnable { 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; + 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; } + @Override 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.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); + 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); + 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); } + @Override public void start() { timer = new Thread(this); timer.start(); } + @Override public void stop() { timer = null; } + @Override + @SuppressWarnings("SleepWhileHoldingLock") public void run() { Thread me = Thread.currentThread(); while (timer == me) { try { - Thread.currentThread().sleep(100); + Thread.sleep(100); } catch (InterruptedException e) { } repaint(); } } + @Override public String getAppletInfo() { return "Title: A Clock \n" - + "Author: Rachel Gollub, 1995 \n" - + "An analog clock."; + + "Author: Rachel Gollub, 1995 \n" + + "An analog clock."; } + @Override 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."} + { "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; }