package junkutil.gui;

import java.awt.Color;
import java.awt.Toolkit;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.JPanel;
import javax.swing.JWindow;

/**
 * JWindowを継承したクラス
 * @author Hiroyuki Shiota
 */
public class LzWindow extends JWindow {

	public static double screenx = Toolkit.getDefaultToolkit().getScreenSize().getWidth();
	public static double screeny = Toolkit.getDefaultToolkit().getScreenSize().getHeight();

	/**
	 * メインパネル
	 */
	private JPanel mainPanel;

	/**
	 * 右クリックで終了させるためのアダプター
	 */
	private MouseAdapter rightClickAdapter = new MouseAdapter() {
		public void mouseClicked(MouseEvent e) {
			super.mouseClicked(e);
			if (e.getButton() == MouseEvent.BUTTON3) {
				dispose();
			}
		}
	};

	/**
	 * コンストラクタ
	 */
	public LzWindow() {
		this(640, 480, (int)(Math.random()*(screenx-640)), (int)(Math.random()*(screeny-480)));
	}

	/**
	 * コンストラクタ
	 * @width
	 * @height
	 */
	public LzWindow(int width, int height) {
		this(width, height, (int)(Math.random()*(screenx-width)), (int)(Math.random()*(screeny-height)));
	}

	/**
	 * コンストラクタ
	 * @width
	 * @height
	 * @x
	 * @y
	 */
	public LzWindow(int width, int height, int x, int y) {
		setSize(width, height);
		setLocation(x, y);
		mainPanel = new JPanel();
		getContentPane().add(mainPanel);
	}

	/**
	 * メインパネルを取得する
	 * @return
	 */
	public JPanel getMainPanel() {
		return mainPanel;
	}

	/**
	 * 右クリックで終了するようにする
	 * @param b
	 */
	public void setRightClickToDispose(boolean b) {
		if (b) {
			MouseListener [] list = mainPanel.getMouseListeners();
			for (int i = 0; i < list.length; i++) {
				if (list[i] == rightClickAdapter) return;
			}
			mainPanel.addMouseListener(rightClickAdapter);
		} else {
			mainPanel.removeMouseListener(rightClickAdapter);
		}
	}

	/**
	 * このクラスを返す
	 * @return
	 */
	public LzWindow getThis() {
		return this;
	}

	/**
	 * 小さなテスト
	 * @param args
	 *
	public static void main(String[] args) {
		LzWindow window = new LzWindow(200, 60);
		window.setRightClickToDispose(true);
		window.setBackground(Color.BLACK);
		window.getMainPanel().setBackground(Color.BLACK);
		window.setVisible(true);
	}
	 */
}
