home *** CD-ROM | disk | FTP | other *** search
Java Source | 1997-03-05 | 2.5 KB | 125 lines |
- /*
- * @(#)Spinner.java 1.2 97/01/14 Jeff Dinkins
- *
- * Copyright (c) 1995-1997 Sun Microsystems, Inc. All Rights Reserved.
- *
- */
-
- import java.applet.*;
- import java.lang.*;
- import java.util.*;
- import java.awt.*;
-
- /**
- * Spinner - a class that creates a lightweight component that
- * shows a spinning wheel.
- *
- * Lightweight components can have "transparent" areas, meaning that
- * you can see the background of the container behind these areas.
- *
- */
- public class Spinner extends Component {
-
- float percentDone = 0;
- int totalTicks = 60;
- int currentTick = 0;
-
- SpinnerThread spinnerThread;
-
- /**
- * Constructs a Spinner
- */
- public Spinner() {
- setForeground(Color.gray);
- setForeground(Color.lightGray);
- }
-
- /**
- * paints the Spinner
- */
- public void paint(Graphics g) {
- int start_angle = 90;
- int done_angle = (int) (percentDone * 360);
-
- g.setColor(getBackground());
- g.fillArc(3, 3, getSize().width-8, getSize().height-8, 0, 360);
-
- g.setColor(getForeground());
- g.fillArc(3, 3, getSize().width-8, getSize().height-8, start_angle, done_angle);
-
- g.setColor(Color.black);
- g.drawArc(3, 3, getSize().width-8, getSize().height-8, 0, 360);
- }
-
- public void setCurrentTick(int tick) {
- currentTick = tick;
-
- if(currentTick > totalTicks) {
- percentDone = 1;
- } else if(currentTick == 0) {
- percentDone = 0;
- } else {
- percentDone = (float) currentTick / (float) totalTicks;
- }
-
- // Repaint might flicker a bit. To avoid this, you can use
- // double buffering (see the Gauge example).
- repaint();
- }
-
- public void startSpinning() {
- spinnerThread = new SpinnerThread(this);
- spinnerThread.start();
- }
-
- public void stopSpinning() {
- spinnerThread.stop();
- spinnerThread = null;
- }
-
- public void setTotalTicks(int tick) {
- totalTicks = tick;
- }
-
- public int getTotalTicks() {
- return totalTicks;
- }
-
- public int getCurrentTick() {
- return currentTick;
- }
-
-
- }
-
-
-
- /**
- * SpinnerThread: spins the wheel
- */
- class SpinnerThread extends Thread {
-
- Spinner spinner;
-
- SpinnerThread(Spinner spinner) {
- super("Spinner Thread");
- this.spinner = spinner;
- }
-
- public void run () {
- int i = spinner.getCurrentTick();
- while(true) {
- try {
- while (i-- > 0) {
- spinner.setCurrentTick(i);
- sleep(100);
- }
- } catch (java.lang.InterruptedException e) {
- // don't care if we are interrupted
- }
- i = spinner.getTotalTicks();
- }
- }
- }
-
-