KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > java2d > AnimatingSurface


1 /*
2  * @(#)AnimatingSurface.java 1.9 05/11/17
3  *
4  * Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions are met:
8  *
9  * -Redistribution of source code must retain the above copyright notice, this
10  * list of conditions and the following disclaimer.
11  *
12  * -Redistribution in binary form must reproduce the above copyright notice,
13  * this list of conditions and the following disclaimer in the documentation
14  * and/or other materials provided with the distribution.
15  *
16  * Neither the name of Sun Microsystems, Inc. or the names of contributors may
17  * be used to endorse or promote products derived from this software without
18  * specific prior written permission.
19  *
20  * This software is provided "AS IS," without a warranty of any kind. ALL
21  * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING
22  * ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
23  * OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN MIDROSYSTEMS, INC. ("SUN")
24  * AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE
25  * AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS
26  * DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST
27  * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL,
28  * INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY
29  * OF LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE,
30  * EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
31  *
32  * You acknowledge that this software is not designed, licensed or intended
33  * for use in the design, construction, operation or maintenance of any
34  * nuclear facility.
35  */

36
37 /*
38  * @(#)AnimatingSurface.java 1.9 05/11/17
39  */

40
41
42 package java2d;
43
44 import java.awt.*;
45
46
47 /**
48  * Demos that animate extend this class.
49  */

50 public abstract class AnimatingSurface extends Surface implements Runnable JavaDoc {
51
52     public Thread JavaDoc thread;
53
54     public abstract void step(int w, int h);
55
56     public abstract void reset(int newwidth, int newheight);
57
58
59     public void start() {
60         if (thread == null && !dontThread) {
61             thread = new Thread JavaDoc(this);
62             thread.setPriority(Thread.MIN_PRIORITY);
63             thread.setName(name + " Demo");
64             thread.start();
65         }
66     }
67
68
69     public synchronized void stop() {
70         if (thread != null) {
71             thread.interrupt();
72         }
73         thread = null;
74         notifyAll();
75     }
76
77
78     public void run() {
79
80         Thread JavaDoc me = Thread.currentThread();
81
82         while (thread == me && !isShowing() || getSize().width == 0) {
83             try {
84                 thread.sleep(200);
85             } catch (InterruptedException JavaDoc e) { }
86         }
87
88         while (thread == me) {
89             repaint();
90             try {
91                 thread.sleep(sleepAmount);
92             } catch (InterruptedException JavaDoc e) { }
93         }
94         thread = null;
95     }
96 }
97
Popular Tags