/*
 * LOGICAL-PARADOX.ORG
 * Copyright (C)2005 satoshi akabane(akabane@logical-paradox.org)
 * $Id: ConsolePanel.java,v 1.2 2006/02/15 16:23:59 rampil Exp $
 */
package org.logical_paradox.koike.tools.wf;

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

import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

import org.logical_paradox.common.swing.WindowPanel;
import org.logical_paradox.common.util.StringUtils;

/**
 * 単語検索パネル
 * どこにでも貼り付け可能
 * @author satoshi akabane@logical-paradox.org
 * @version $Revision: 1.2 $
 */
public class ConsolePanel extends WindowPanel implements ActionListener {
	/** シリアルバージョンUID */
	private static final long serialVersionUID = -4659981330698424976L;
	/** 単語入力欄 */
	private JTextField wordInputArea;
	/** 被検索ドキュメント入力欄 */
	private JTextArea documentInputArea;
	/** 検索結果表示欄 */
	private JTextArea searchResultArea;
	/** 「search」ボタン */
	private JButton doSearchButton;

	/**
	 * コンストラクタ
	 */
	public ConsolePanel() {
		init();
	}

	/**
	 * パネルを初期化する
	 */
	public void init() {
		// 検索パネルの作成
		JPanel searchPanel = new JPanel();
		searchPanel.setLayout(new BorderLayout());

		JPanel wordPanel = new JPanel();
		wordPanel.setLayout(new BorderLayout());
		wordInputArea = new JTextField();
		doSearchButton = new JButton("search");
		doSearchButton.addActionListener(this);

		wordPanel.add(wordInputArea, BorderLayout.CENTER);
		wordPanel.add(doSearchButton, BorderLayout.EAST);
		// 画面上部の単語入力欄と検索ボタンを配置
		searchPanel.add(wordPanel, BorderLayout.NORTH);
		// 文章貼り付け欄を配置
		documentInputArea = new JTextArea();
		searchPanel.add(new JScrollPane(documentInputArea), BorderLayout.CENTER);

		// Grid layoutとする
		setLayout(new GridLayout(2,1));

		searchResultArea = new JTextArea();
		searchResultArea.setEditable(false);

		// 検索パネルと検索結果表示欄を追加する
		add(searchPanel);
		add(new JScrollPane(searchResultArea));
	}

	/**
	 * 検索ボタン押下時のイベントハンドラ
	 * @param e イベントオブジェクト
	 */
	public void actionPerformed(ActionEvent e) {
		String word = wordInputArea.getText();
		String document = documentInputArea.getText();

		if(StringUtils.isEmpty(word) && StringUtils.isEmpty(document)) {
			return;
		}

		Integer[] pos = StringUtils.searchWordIndexes(document, word);

		StringBuffer sb = new StringBuffer("検索結果:\n\n");
		if(pos == null || pos.length == 0) {
			sb.append("該当なし");
		} else {
			for(int i = 0; i < pos.length; i++) {
				sb.append(pos[i].toString() + "\n");
			}
		}

		wordInputArea.setText("");
		searchResultArea.setText(sb.toString());
	}
}
