package org.prevayler.demos.demo2.gui;
import org.prevayler.Prevayler;
import org.prevayler.foundation.Cool;
import javax.swing.*;
import java.text.DateFormat;
import java.text.SimpleDateFormat;

public class BankFrame extends JFrame {
  private static final long serialVersionUID=936051923275473259L;
  private final Prevayler _prevayler;
  public BankFrame(  Prevayler prevayler){
    super("Bank");
    _prevayler=prevayler;
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    JDesktopPane desktop=new JDesktopPane();
    setContentPane(desktop);
    new AllAccountsFrame(prevayler,desktop);
    desktop.add(new RobustnessFrame());
    desktop.add(new MatchFrame(prevayler));
    setBounds(40,40,550,420);
    setVisible(true);
    refreshClock();
  }
  private void refreshClock(){
    Thread clockRefresher=new Thread(){
      public void run(){
        while (true) {
          DateFormat format=new SimpleDateFormat("hh:mm:ss");
          setTitle("Bank - " + format.format(_prevayler.clock().time()));
          Cool.sleep(500);
        }
      }
    }
;
    clockRefresher.setDaemon(true);
    clockRefresher.start();
  }
private static class RobustnessFrame extends JInternalFrame {
    private static final long serialVersionUID=-3548833894524605027L;
    RobustnessFrame(){
      super("Robustness Reminder",false,false,false,true);
      setContentPane(Box.createVerticalBox());
      addLine(" You can kill this process at any time. ");
      addLine(" When you run the application again, ");
      addLine(" you will see that nothing was lost. ");
      setBackground(new java.awt.Color(204,204,204));
      setBounds(300,300,235,90);
      setVisible(true);
    }
    private void addLine(    String line){
      JLabel label=new JLabel(line);
      label.setAlignmentX(0.5f);
      getContentPane().add(label);
    }
  }
}
