package bmsi.fsp;

import java.awt.*;
import java.awt.event.*;
import bmsi.awt.SuperListener;

/** Test basic window operations for FS AWT implementation.
   @author Stuart D. Gathman
   Copyright (C) 2000 Business Management Systems, Inc.
 */

public class testfs extends Frame implements KeyListener {
  private String msg = "Hello World!";

  public void center() {
    Dimension s = getToolkit().getScreenSize();  
    Dimension d = getSize();
    setLocation((s.width - d.width)/2,(s.height - d.height)/2);
  }

  private static int cnt;

  public testfs() {
    super("Test FSFrame #" + ++cnt);
    add(new Label("North",Label.CENTER),"North");
    add(new Label("South",Label.CENTER),"South");
    add(new Label("East"),"East");
    add(new Label("West"),"West");
    pack();
    center();
    SuperListener s = new SuperListener(this);
    s.listenTo(this);
  }

  public void setSize(Dimension s) {
    super.setSize(s);
    validate();
  }

  public void paint(Graphics g) {
    Rectangle r = getBounds();
    FontMetrics fm = g.getFontMetrics();
    int w = fm.stringWidth(msg);
    int h = fm.getHeight();
    g.drawString(msg,(r.width - w)/2,(r.height + h)/2);
  }

  public void keyPressed(KeyEvent e) {
  }

  public void keyTyped(KeyEvent e) {
    Point p = getLocation();
    Dimension s = getSize();
    switch (e.getKeyChar()) {
    case 'j': p.y += 5; setLocation(p); break;
    case 'k': p.y -= 5; setLocation(p); break;
    case 'h': p.x -= 5; setLocation(p); break;
    case 'l': p.x += 5; setLocation(p); break;
    case 'J': s.height += 5; setSize(s); break;
    case 'K': s.height -= 5; setSize(s); break;
    case 'H': s.width -= 5; setSize(s); break;
    case 'L': s.width += 5; setSize(s); break;
    case 'n': main(null); break;
    case 'q': System.exit(0);
    case 'c': dispose(); break;
    case 'b': toBack(); break;
    }
  }

  public void keyReleased(KeyEvent e) { }

  public static void main(String[] argv) {
    testfs f = new testfs();
    f.show();
    f.requestFocus();
  }
}
