package bmsi.fsp;

import java.awt.*;
import java.awt.peer.*;
import java.awt.event.WindowEvent;

class FSFrame extends FSFramedWindow implements FramePeer {
  final static int ICONIFIED = 0;
  final static int NORMAL = 1;
  private int state = NORMAL;
  private MenuBar menu;

  FSFrame(Frame f,FSToolkit toolkit) { super(f,toolkit); }

  protected void initialize() {
    Frame frame = (Frame)target;
    String title = frame.getTitle();
    if (title != null)
      setTitle(title);
    if (!frame.isResizable())
      setResizable(false);
    MenuBar menu = frame.getMenuBar();
    if (menu != null) {
      if (menu.getPeer() == null)
	menu.addNotify();
      setMenuBar(menu);
    }
    super.initialize();
  }

  /** While most text terminals support icons via font download, we
   have no time for such foolishness :-) */
  public void setIconImage(Image img) { }

  public void setMenuBar(MenuBar mnu) {
    menu = mnu;
  }

  public void postKey(int k) {
    if (k == TI.KEY_OPTIONS + 256) {
      toolkit.setFocus((Focus)menu.getPeer());
      return;
    }
    super.postKey(k);
  }

  public void activate() {
    setState(NORMAL);
    super.activate();
  }

  // Java 2 stuff, but used internally in JDK 1.1 also
  public int getState() { return state; }

  public void setState(int i) {
    i &= 1;
    if (i != state) {
      state = i;
      if (state == ICONIFIED) {
        setVisible(false);
	deactivate();
	toolkit.theQueue.postEvent(
	  new WindowEvent((Window)target,WindowEvent.WINDOW_ICONIFIED));
      }
      else {
        setVisible(true);
	toolkit.theQueue.postEvent(
	  new WindowEvent((Window)target,WindowEvent.WINDOW_DEICONIFIED));
	super.activate();
      }
    }
  }
}
