package gjt.test; import java.awt.*; import java.applet.*; import gjt.Bargauge; /** * An array of either horizontal or vertical animated bargauges. * The orientation of the bargauges is controlled by a parameter * passed into the applet.

* * * Warning: An AWT bug causes this test to be a gluttenous * consumer of resources (especially under Win95). A mouse down * will halt the animation thread along with its consumption of * resources.

* * * @version 1.0, April 25, 1996 * @author David Geary * @see gjt.test.UnitTest * @see gjt.Bargauge */ public class BargaugeTest extends UnitTest { private Bargauge[] gauges = new Bargauge[10]; private Thread animatorThread; private boolean running; public String title() { return "Bargauge Test"; } public Panel centerPanel() { return new BargaugeTestPanel( gauges, getParameter("orientation")); } public boolean mouseDown(Event event, int x, int y) { if(running == true) { animatorThread.suspend(); running = false; } else { animatorThread.resume (); running = true; } return true; } public void start() { super.start(); animatorThread = new BargaugeAnimator(gauges); animatorThread.start(); running = true; } public void stop() { super.stop(); animatorThread.suspend(); running = false; } } class BargaugeTestPanel extends Panel { public BargaugeTestPanel(Bargauge[] gauges, String orient) { Panel bargaugePanel = new Panel(); setLayout(new BorderLayout()); add("North", new Label("Mouse Down Starts/Stops",Label.CENTER)); add("Center", bargaugePanel); bargaugePanel.add(new BargaugeGridPanel(gauges,orient)); } } class BargaugeGridPanel extends Panel { private Dimension preferredSize = new Dimension(200, 250); public BargaugeGridPanel(Bargauge[] gauges, String orient) { Bargauge nextGauge; Color color = Color.gray; if("horizontal".equals(orient)) setLayout(new GridLayout(gauges.length,0,5,5)); else setLayout(new GridLayout(0,gauges.length,5,5)); for(int i=0; i < gauges.length; ++i) { switch(i) { case 1: color = Color.darkGray; break; case 2: color = Color.blue; break; case 3: color = Color.magenta; break; case 4: color = Color.yellow; break; case 5: color = Color.green; break; case 6: color = Color.cyan; break; case 7: color = Color.orange; break; case 8: color = Color.pink; break; case 9: color = Color.red; break; case 10: color = Color.yellow; break; } nextGauge = new Bargauge(color); gauges[i] = nextGauge; add(nextGauge); } } public Dimension preferredSize() { return preferredSize; } public Dimension minimumSize () { return preferredSize; } } class BargaugeAnimator extends Thread { private Bargauge[] gauges; private boolean firstAnimation = true; public BargaugeAnimator(Bargauge[] gauges) { this.gauges = gauges; } public void run() { int count = gauges.length; while(true) { try { Thread.currentThread().sleep(500,0); } catch(InterruptedException e) { } for(int i=0; i < count; ++i) { gauges[i].setFillPercent(Math.random() * 100); gauges[i].fill(); if(firstAnimation) System.out.println(gauges[i].toString()); } firstAnimation = false; } } }