package cc.ptt;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;

public class CountDownDemo {
    public static void main(String[] args) {
		JFrame frm = new JFrame("Demo for Java@ptt");
		frm.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		
		final JLabel messageBar = new JLabel("", JLabel.CENTER);
		messageBar.setBorder(BorderFactory.createLoweredBevelBorder());
		messageBar.setFont(messageBar.getFont().deriveFont(48f));
		frm.getContentPane().add(messageBar);
		
		final JButton start = new JButton("開始倒數 10 秒");
		frm.getContentPane().add(start, BorderLayout.SOUTH);
		final CountDown counter = new CountDown();
		counter.setTickListener(new CountDown.OnTickListener() {
			@Override
			public void onTick(int seconds) {
				// setText method is thread-safe
				messageBar.setText(String.format("%d 秒", seconds));
				if (seconds <= 0) {
					SwingUtilities.invokeLater(new Runnable() {
						public void run() {
							start.setEnabled(true);
						}
					});
				}
			}
		});
		start.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				start.setEnabled(false);
				counter.asyncStart(10);
//				counter.syncStart(10);
			}
		});
		
		frm.setSize(400, 400);
		frm.setLocationRelativeTo(null);
		frm.setVisible(true);
	}
}
