/**
 * LOGICAL-PARADOX.ORG b-tree library
 * Copyright (C)2004 satoshi akabane(akabane@logical-paradox.org)
 *
 * Release 1.0
 * ・初期パージョン
 */
package org.logical_paradox.common.btree.simulation.bts;

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

/**
 * ボタンなどのコンポーネントで発生したアクションのハンドラ
 * @author satoshi akabane@logical-paradox.org
 * @version 1.0
 */
public class BTSEventHandler implements ActionListener {
	private final BtreeSimulatorMainPanel mainPanel;

	/**
	 * コンストラクタ
	 * @param panel メインパネル
	 */
	public BTSEventHandler(BtreeSimulatorMainPanel panel) {
		mainPanel = panel;
	}
	/**
	 * 発生したイベントのハンドラメソッド
	 * @param event イベント
	 */
	public void actionPerformed(ActionEvent event) {
		Object src =event.getSource();
		if(src == mainPanel.getAddButton() || src == mainPanel.getTextField()) {
			onAdd();
		} else if(src == mainPanel.getChangeButton()) {
			onChange();
		} else if(src == mainPanel.getRemoveButton()) {
			onRemove();
		}
		// 入力欄をクリアする
		mainPanel.getTextField().setText("");
	}
	/**
	 * 「追加」ボタンがクリックされた際のイベントハンドラ
	 */
	public void onAdd() {
		try {
			String text = mainPanel.getTextField().getText().trim();
			if(text.length() > 0) {
				mainPanel.getDiagram().insert(text);
				System.out.println("追加");
				// 再描画要求
				mainPanel.repaint();
			}
		} catch(Exception e) {
			e.printStackTrace();
		}
	}
	/**
	 * 「変更」ボタンがクリックされた際のイベントハンドラ
	 */
	public void onChange() {
		System.out.println("変更");
	}
	/**
	 * 「削除」ボタンがクリックされた際のイベントハンドラ
	 */
	public void onRemove() {
		System.out.println("削除");
	}
}
