package gjt.test;
import java.applet.Applet;
import java.awt.*;
import gjt.Border;
import gjt.Box;
import gjt.EtchedBorder;
import gjt.ImageButton;
import gjt.ThreeDBorder;
/**
* Creates 10 bordered Components:
*
* - A Canvas (click in canvas to depress/raise the border).
*
- A Label with an etched out border.
*
- A TextField with an inset 3D border.
*
- A CheckBox with a default border.
*
- A List with a raised 3D border.
*
- A Choice with an etched in border.
*
- A Box with a raised 3D border.
*
- An ImageButton with a thick, red border.
*
- An AWT Button with a cyan border.
*
- A TextArea with a blue default-width border.
*
*
* @version 1.0, April 25, 1996
* @author David Geary
* @see gjt.test.UnitTest
* @see gjt.Border
* @see gjt.ThreeDBorder
* @see gjt.EtchedBorder
*/
public class BorderTest extends UnitTest {
public String title() {
return "Border Test";
}
public Panel centerPanel() {
return new BorderTestPanel(this);
}
}
class BorderTestPanel extends Panel {
TextField tf = new TextField(
"Inset TextField: border 5 pixels, gap 5 pixels ");
ThreeDBorder threeDBorder;
EtchedBorder etchedLabel;
Border border;
public BorderTestPanel(Applet applet) {
setLayout(new FlowLayout(FlowLayout.CENTER, 10, 10));
add(new BorderedCanvas());
add(etchedLabel =
new EtchedBorder(new Label("Etched Label")));
add(threeDBorder = new ThreeDBorder(tf, 5, 5));
add(new Border(new Checkbox("Check Me Out")));
add(makeThreeDBorderedList ());
add(makeEtchedBorderedChoice ());
add(makeThreeDBorderedCheckboxes());
add(makeBorderedImageButton (applet));
add(makeBorderedAWTButton ());
add(makeBorderedTextArea ());
threeDBorder.inset();
etchedLabel.etchedOut();
}
private Border makeThreeDBorderedList() {
List list = new List(10, true);
list.addItem("One");
list.addItem("Two");
list.addItem("Three");
list.addItem("Four");
list.addItem("Five");
list.addItem("Six");
list.addItem("Seven");
list.addItem("Eight");
list.addItem("Nine");
list.addItem("Ten");
list.addItem("Eleven");
list.addItem("Twelve");
list.addItem("Thirteen");
list.addItem("Fourteen");
list.addItem("Fiveteen");
list.addItem("Sixteen");
list.addItem("Seventeen");
list.addItem("Eightteen");
list.addItem("Nineteen");
list.addItem("Twenty");
return new ThreeDBorder(list);
}
private Border makeEtchedBorderedChoice() {
Choice choice = new Choice();
choice.addItem("Toadies");
choice.addItem("SilverChair");
choice.addItem("Rug Burns");
choice.addItem("Cracker");
choice.addItem("Seven Mary Three");
choice.addItem("Dishwalla");
choice.addItem("Blues Traveler");
choice.addItem("BottleRockets");
choice.addItem("SpaceHog");
return new EtchedBorder(choice);
}
private Border makeBorderedImageButton(Applet applet) {
Image snail;
Border border;
snail = applet.getImage(applet.getCodeBase(),
"gifs/snail.gif");
border = new Border(new ImageButton(snail), 10);
border.setLineColor(Color.red);
return border;
}
private Border makeBorderedAWTButton() {
Button button;
Border cyanBorder, blackBorder;
button = new Button("Button Inside Two Borders");
cyanBorder = new Border(button, 7);
cyanBorder.setLineColor(Color.cyan);
blackBorder = new Border(cyanBorder);
return blackBorder;
}
private Border makeThreeDBorderedCheckboxes() {
Panel panel = new Panel();
Box box = new Box(panel, "Options");
CheckboxGroup group = new CheckboxGroup();
panel.setLayout(new GridLayout(3,0));
panel.add(new Checkbox("bordered", group, false));
panel.add(new Checkbox("transparent", group, false));
panel.add(new Checkbox("continuous", group, true));
return new ThreeDBorder(box, 4);
}
private Border makeBorderedTextArea() {
Border border;
border = new Border(
new TextArea("Blue Bordered TextArea", 5, 30));
border.setLineColor(Color.blue);
return border;
}
}
class BorderedCanvas extends ThreeDBorder {
public BorderedCanvas() {
super(new TestCanvas());
}
public boolean mouseDown(Event event, int x, int y) {
if(isRaised()) paintInset ();
else paintRaised();
return true;
}
}
class TestCanvas extends Canvas {
private boolean centeredShowing = false;
private String centered = new String ("Red Centered Text");
public void paint(Graphics g) {
String canvas = "Canvas";
String click = "Click Me";
Dimension size = size();
FontMetrics fm = g.getFontMetrics();
g.drawString(canvas, (size.width/2) -
(fm.stringWidth(canvas)/2),
fm.getHeight() - fm.getDescent());
g.drawString(click, (size.width/2) -
(fm.stringWidth(click)/2),
size.height - fm.getHeight() +
fm.getAscent());
if(centeredShowing == true) {
g.setColor(Color.red);
g.drawString(centered,
size.width/2-(fm.stringWidth(centered)/2),
size.height/2 - (fm.getHeight()/2) +
fm.getAscent());
}
}
public Dimension preferredSize() {
FontMetrics fm = getGraphics().getFontMetrics();
return new Dimension(fm.stringWidth(centered)+10, 100);
}
public boolean mouseUp(Event event, int x, int y) {
if(centeredShowing == false) centeredShowing = true;
else centeredShowing = false;
repaint();
return true;
}
}