/*
 * $Id$
 * Copyright (c) 2006 LOGICAL-PARADOX.ORG
 */
package org.logical_paradox.koike.tools.console;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.PrintWriter;

import javax.swing.JScrollPane;
import javax.swing.JTextField;

import org.logical_paradox.common.swing.WindowPanel;

/**
 * テスト用の検索コンソールパネル
 * @author satoshi akabane@logical-paradox.org
 * @versiop $Revision$
 */
public class KoikeToolPanel extends WindowPanel implements ActionListener {
	/** シリアルバージョンUID */
	private static final long serialVersionUID = -5293441283401557530L;

	public static final int PANEL_WIDTH = 320;
	public static final int PANEL_HEIGHT = 240;


	/** アプリケーションパック */
	private final ApplicationPack app;
	/** テキスト入力フィールド */
	private JTextField jtf;
	private SimpleConsoleJTextPane jtp = null;
	protected PrintWriter pw = null;

	/**
	 * コンストラクタ．
	 * @param pack アプリケーションパック
	 */
	public KoikeToolPanel(ApplicationPack pack) {
		app = pack;
		init();
	}
	/**
	 * パネルを初期化する．
	 */
	@Override
	protected void init() {
		setLayout(new BorderLayout());
		jtf = new JTextField("");
		jtf.setFont(new Font("ＭＳ ゴシック",Font.PLAIN,12));
		jtf.addActionListener(this);

		jtp = new SimpleConsoleJTextPane();
		pw = jtp.getWriter();

		jtp.setEditable(false);
		jtp.setPreferredSize(new Dimension(PANEL_WIDTH, PANEL_HEIGHT));
		jtp.setFont(new Font("ＭＳ ゴシック",Font.PLAIN,12));

		add(new JScrollPane(jtp), BorderLayout.CENTER);
		add(jtf, BorderLayout.SOUTH);

		// アプリケーションの初期化処理
		app.setWriter(pw);
		app.setJTextPane(jtp);
		if(app != null) {
			try {
				app.init();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		validate();
		setVisible(true);
	}
	/**
	 * アクションイベントハンドラ．
	 * @param e イベントオブジェクト
	 */
	public void actionPerformed(ActionEvent e) {
		try {
			if(e.getSource() == jtf) {
				if(app != null) {
					app.cbTextField(jtf);
				}
			}
		} catch(Exception exp) {
			exp.printStackTrace(pw);
		}
	}
}
