/**
 * 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.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.MouseEvent;

import javax.swing.JComponent;
import javax.swing.event.MouseInputListener;

/**
 * B-tree構造図を描画するためのキャンパスコンポーネント
 * @author satoshi akabane@logical-paradox.org
 * @version 1.0
 */
public class DiagramCanvas extends JComponent implements MouseInputListener {
	public static final int DEFAULT_WIDTH = 500;
	public static final int DEFAULT_HEIGHT = 400;

	protected int width;
	protected int height;

	/**
	 * デフォルトコンストラクタ
	 * サイズ指定なしなので，デフォルトのサイズでキャンバスを作成する
	 */
	public DiagramCanvas() {
		setPreferredSize(new Dimension(DiagramCanvas.DEFAULT_WIDTH, DiagramCanvas.DEFAULT_HEIGHT));
	}
	/**
	 * このキャンバスの描画領域を返す
	 * @return 描画領域
	 */
	public Graphics getGraphics() {
		return getGraphics();
	}
	/**
	 * キャンバスを描画する
	 * 
	 * @param g グラフィックリージョン
	 */
	public void paint(Graphics g) {
		super.paint(g);

		// まずは背景を描画する
		drawBackground(g);
	}
	/**
	 * キャンバスの背景を描画する
	 * @param g グラフィックリージョン
	 */
	protected void drawBackground(Graphics g) {
		g.setColor(Color.WHITE);
		g.fillRect(0, 0, getWidth(), getHeight());

		g.setColor(Color.black);
	}
	/**
	 * キャンバス内でマウスがプレスされた場合のイベントハンドラ
	 * プレスされた位置を特定し，必要であればページまたはキーを選択する
	 * 
	 * @param event マウスイベント
	 */
	public void mousePressed(MouseEvent event) {
		// TODO ここにマウスプレスのイベントハンドラを記述する
	}
	/*
	 * 実装の必要のないイベントハンドラメソッド群
	 */
	public void mouseClicked(MouseEvent arg0) {
	}
	public void mouseReleased(MouseEvent arg0) {
	}
	public void mouseEntered(MouseEvent arg0) {
	}
	public void mouseExited(MouseEvent arg0) {
	}
	public void mouseDragged(MouseEvent arg0) {
	}
	public void mouseMoved(MouseEvent arg0) {
	}
}
