001 /*
002 * cs101 ColorField utility
003 * $Id: ColorField.java,v 1.1.1.1 2002/06/05 21:56:32 root Exp $
004 *
005 * Developed for "Rethinking CS101", a project of Lynn Andrea Stein's AP Group.
006 * For more information, see <a href="http://www.ai.mit.edu/projects/cs101/">the
007 * CS101 homepage</a> or email <las@ai.mit.edu>.
008 *
009 * Copyright (C) 1996 Massachusetts Institute of Technology.
010 * Please do not redistribute without obtaining permission.
011 */
012
013 package cs101.awt;
014
015 import java.awt.*;
016
017 /**
018 * cs101.awt.ColorField provides a colored rectangle that operates
019 * as an awt.component.<p>
020 *
021 * The color field is setup to have two different states represented
022 * by two different colors. The field can be of any size or color.
023 *
024 * <P>Copyright (c) 1998 Massachusetts Institute of Technolgoy
025 *
026 * @author Todd C. Parnell, tparnell@ai.mit.edu
027 * @author Joshua R. Brown, reuben@ai.mit.edu
028 * @version $Id: ColorField.java,v 1.1.1.1 2002/06/05 21:56:32 root Exp $
029 */
030 public class ColorField extends Canvas {
031
032 /** determines the color of the field */
033 protected boolean state;
034 /** size of the field */
035 protected Dimension dim;
036 /** color when state == true */
037 protected Color trueColor;
038 /** color when state == false */
039 protected Color falseColor;
040
041 // ColorField()
042 /**
043 * Constructs a rectangular color field with default values
044 * for all attibutes.
045 * <br>
046 * o Initial state = false <br>
047 * o Dimension = 25 X 25 <br>
048 * o Color when state is true = green <br>
049 * o Color when state is false = red <br>
050 */
051 public ColorField() {
052 this(false, new Dimension(25,25), Color.green, Color.red);
053 }
054
055 // ColorField(boolean, Dimension, Color, Color)
056 /**
057 * Constructs a rectangular colorfield with the passed
058 * attributes.
059 *
060 * @param initState The initial state of the color field.
061 * @param dim The dimensions of the color field.
062 * @param trueColor The color of the field when the state is true.
063 * @param falseColor The color of the field when the state is false.
064 */
065 public ColorField(boolean initState, Dimension dim,
066 Color trueColor, Color falseColor) {
067 this.state = initState;
068 this.dim = dim;
069 this.trueColor = trueColor;
070 this.falseColor = falseColor;
071 }
072
073 // changeState(boolean)
074 /**
075 * Changes the state of the color field to the value passed in.
076 *
077 * Changing the state of the field will cause the field to repainted
078 * in the appropriate color. If the state is unchanged nothing happens.
079 *
080 * @param newState The new state of the color field.
081 */
082 public void changeState(boolean newState) {
083 if (state != newState) {
084 this.state = newState;
085 this.repaint();
086 }
087 }
088
089 /**
090 * Draws the color field on the screen in it's current state
091 *
092 * @param g The graphics context to paint into.
093 */
094 public void paint(Graphics g) {
095 // draw the outline
096 g.setColor(Color.black);
097 g.drawRect(0,0,this.dim.width-1,this.dim.height-1);
098
099 // draw the field
100 if (this.state)
101 g.setColor(this.trueColor);
102 else
103 g.setColor(this.falseColor);
104 g.fillRect(2,2,this.dim.width-3,this.dim.height-3);
105
106 }
107
108 /**
109 * Called by this object's container
110 * to determine the minimum space required by this object.
111 *
112 * @return the minimum size of the object
113 */
114 public Dimension getMinimumSize() {
115 return new Dimension(this.dim.width,this.dim.height);
116 }
117
118 /**
119 * Called by this object's container
120 * to determine the minimum space required by this object.
121 *
122 * @return the prefered size of the object
123 */
124 public Dimension getPreferredSize() {
125 return new Dimension(this.dim.width,this.dim.height);
126 }
127
128 }
129
130 /* Comments:
131 *
132 * History:
133 * $Log: ColorField.java,v $
134 * Revision 1.1.1.1 2002/06/05 21:56:32 root
135 * CS101 comes to Olin finally.
136 *
137 * Revision 1.4 1998/07/24 17:06:27 tparnell
138 * Placate new javadoc behavior
139 *
140 * Revision 1.3 1998/07/22 18:18:34 tparnell
141 * migration from cs101.util to cs101.*
142 *
143 * Revision 1.2 1998/06/03 18:50:49 tparnell
144 * migration from Java 1.0 to Java 1.1. used deprecated APIs
145 *
146 * Revision 1.1 1998/03/13 22:18:10 tparnell
147 * Import from server crash. I think the src and class files match up.
148 *
149 * Revision 1.4 1996/08/01 18:26:19 reuben
150 * More javadoc tweaking (hopefully the final pass)
151 *
152 * Revision 1.3 1996/08/01 16:18:21 reuben
153 * Fixed javadoc problem with return
154 *
155 * Revision 1.2 1996/07/25 18:27:41 reuben
156 * Added all kinds of comments.
157 * Compiled and tested.
158 *
159 */
160
161
162
163
164
165
166
167