01: /*
02: * @(#)AnimatingSurface.java 1.8 04/07/26
03: *
04: * Copyright (c) 2004 Sun Microsystems, Inc. All Rights Reserved.
05: *
06: * Redistribution and use in source and binary forms, with or without
07: * modification, are permitted provided that the following conditions are met:
08: *
09: * -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.8 04/07/26
39: */
40:
41: package org.cougaar.core.qos.frame.visualizer;
42:
43: import org.cougaar.core.service.ThreadService;
44: import org.cougaar.core.thread.Schedulable;
45:
46: import java.awt.*;
47:
48: public abstract class AnimatingSurface extends Surface implements
49: Runnable {
50:
51: public Schedulable thread;
52:
53: public abstract void step(int w, int h);
54:
55: public abstract void reset(int newwidth, int newheight);
56:
57: public void start(ThreadService tsvc) {
58: if (thread == null && !dontThread) {
59: thread = tsvc.getThread(this , this , name);
60: thread.schedule(0);
61: }
62: }
63:
64: public synchronized void stop() {
65: if (thread != null)
66: thread.cancel();
67: }
68:
69: public void run() {
70: if (getSize().width == 0) {
71: thread.schedule(200);
72: } else {
73: if (isShowing())
74: repaint();
75: else {
76: Dimension d = getSize();
77: step(d.width, d.height);
78: }
79: thread.schedule(sleepAmount);
80: }
81: }
82: }
|