summaryrefslogtreecommitdiff
path: root/java/gjt/StateButton.java
diff options
context:
space:
mode:
authorpjain <pjain@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1997-04-07 18:12:58 +0000
committerpjain <pjain@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1997-04-07 18:12:58 +0000
commit28fdfa0225c92310a6f0d60f0cf8c334380e0828 (patch)
treeba4b0a7a26bf46ea298496a434496695db55bdc1 /java/gjt/StateButton.java
parent9c4a1450aec6c149f6491194a48f34a57ed4c39b (diff)
downloadATCD-28fdfa0225c92310a6f0d60f0cf8c334380e0828.tar.gz
Added gjt to CVS
Diffstat (limited to 'java/gjt/StateButton.java')
-rw-r--r--java/gjt/StateButton.java45
1 files changed, 45 insertions, 0 deletions
diff --git a/java/gjt/StateButton.java b/java/gjt/StateButton.java
new file mode 100644
index 00000000000..6de20a76f98
--- /dev/null
+++ b/java/gjt/StateButton.java
@@ -0,0 +1,45 @@
+package gjt;
+
+import java.awt.Image;
+
+/**
+ * An ImageButton that cycles through a series of images. The
+ * image advances to the next image in the series every time
+ * the button is activated.<p>
+ *
+ * Note that the cycling is actually performed by the buttons'
+ * controller - a StateButtonController.<p>
+ *
+ * @version 1.0, Apr 1 1996
+ * @author David Geary
+ * @see ImageButton
+ * @see StateButtonController
+ * @see gjt.test.StateButtonTest
+ */
+public class StateButton extends ImageButton {
+ private Image[] images;
+ private int state = 0;
+ private int numStates;
+
+ public StateButton(Image[] images) {
+ super(images[0]);
+
+ this.images = images;
+ numStates = images.length;
+ setController(new StateButtonController(this));
+ waitForImages();
+ }
+ public Image nextImage() {
+ if(state + 1 < numStates) state++;
+ else state = 0;
+
+ return images[state];
+ }
+ public int state() {
+ return state;
+ }
+ private void waitForImages() {
+ for(int i=0; i < images.length; ++i)
+ Util.waitForImage(this, images[i]);
+ }
+}