/* File: AboutDialog.java
 * Author: Jason Gookins
 * Description: This class creates the "About Belief" popup dialog.
 */

import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.beans.PropertyVetoException;
import java.io.BufferedInputStream;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class AboutDialog extends JInternalFrame implements ActionListener
{
	/************************
	 ** Instance Variables **
	 ************************/

	private Belief belief;
	private JButton okayButton;



	/**********************
	 ** Main Constructor **
	 **********************/

	public AboutDialog(Belief belief)
	{
		super("About Belief", false, false, false, false);

		this.belief = belief;

		setPreferredSize(new Dimension(300, 250));

		JPanel dialogPanel = new JPanel(null);

		ImageIcon beeLeaf = loadBeeLeaf();
		JLabel imageLabel = new JLabel(beeLeaf, JLabel.CENTER);
		imageLabel.setBounds(10, 10, 127, 157);
		dialogPanel.add(imageLabel);

		JLabel infoLabel = new JLabel("<html>BeLIEF v0.1<br>WVU Modelling<br>Intelligence Lab<br>&copy;2008 GPL 3.0</html>", JLabel.CENTER);
		infoLabel.setBounds(160, 60, 100, 65);
		dialogPanel.add(infoLabel);

		okayButton = new JButton("OK");
		okayButton.setBounds(115, 180, 70, 30);
		okayButton.addActionListener(this);
		dialogPanel.add(okayButton);

		setContentPane(dialogPanel);

		putClientProperty("JInternalFrame.frameType", "optionDialog");

		Dimension size = getPreferredSize();
		Dimension rootSize = belief.getRootPane().getSize();

		setBounds((rootSize.width - size.width) / 2, (rootSize.height - size.height) / 2, size.width, size.height);

		pack();
		belief.getFirstEventPane().setVisible(true);
		setVisible(true);
		belief.getLayeredPane().add(this, new Integer(1));

		try
		{
			setSelected(true);
		}
		catch (PropertyVetoException ignored) { }
	}



	/*******************
	 ** Action Events **
	 *******************/

	public void actionPerformed(ActionEvent evt)
	{
		if (evt.getSource().equals(okayButton))
		{
			dispose();
			belief.getFirstEventPane().setVisible(false);
		}
	}



	/**********************
	 ** Instance Methods **
	 **********************/

	private ImageIcon loadBeeLeaf()
	{
		ImageIcon beeLeaf = null;

		try
		{
			BufferedInputStream imageStream = new BufferedInputStream(getClass().getResourceAsStream("Belief.jpg"));
			byte buffer[] = new byte[5656];
			int count = imageStream.read(buffer, 0, 5656);

			beeLeaf = new ImageIcon(Toolkit.getDefaultToolkit().createImage(buffer, 0, count));
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}

		return beeLeaf;
	}
}
