package junkutil.gui;

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;

import javax.swing.AbstractAction;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

/**
 * GUIをテストする。JUnitが使えないのでmain関数でテストする。
 * @author Hiroyuki Shiota
 */
public class GuiTest {
	private static LzFrame frame = new LzFrame("テスト", 320, 240);
	private static LzDialog dialog = new LzDialog(frame, "ダイアログ", 160, 120, true);

	/**
	 * （publicで、かつ、ActioinEventを引数に取る）コールバック関数
	 * @param e
	 */
	public void callback1(ActionEvent e) {
		JOptionPane.showMessageDialog(frame, "コールバックされました！");
	}

	/**
	 * テストを行う
	 */
	public void test() {
		LzMenu menu = new LzMenu();
		menu.addMenu("ファイル(F)/メッセージ(M),Ctrl+M", new AbstractAction() {
			public void actionPerformed(ActionEvent e) {
				JOptionPane.showMessageDialog(frame, "メッセージです！");
			}
		});
		menu.addMenu("ファイル(F)/ダイアログ(D),Ctrl+D", new AbstractAction() {
			public void actionPerformed(ActionEvent e) {
				dialog.setVisible(true);
				dialog.setEscapeToDispose(true);
			}
		});
		menu.addMenu("ファイル(F)/コールバック(C),Ctrl+C", new LzCallback(this, "callback1"));
		menu.addMenu("ファイル(F)/-"); //区切り線
		menu.addMenu("ファイル(F)/終了(Q),Ctrl+Q", new AbstractAction() {
			public void actionPerformed(ActionEvent e) {
				frame.setVisible(false);
				frame.dispose();
				System.exit(0);
			}
		});
		frame.setJMenuBar(menu.getMenuBar());

		//LzFixedTextFieldのテスト
		JPanel textPanel = new JPanel();
		textPanel.setLayout(new FlowLayout());
		textPanel.add(new LzFixedTextField(10, 8));
		frame.getContentPane().add(textPanel, BorderLayout.CENTER);

		frame.setEscapeToDispose(true);
		LzLookAndFeel.toSystem();
		LzLookAndFeel.update(menu.getMenuBar());
		LzLookAndFeel.update(frame);
		LzLookAndFeel.update(dialog);
		frame.setVisible(true);
	}

	/**
	 * メイン関数
	 * @param args
	 */
	public static void main(String[] args) {
		new GuiTest().test();
	}
}
