import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;

import javax.swing.*;
import javax.swing.border.BevelBorder;
import javax.swing.border.TitledBorder;

public class HeapJFrame extends JFrame {
	HeapView hv;
	Heap heap = new Heap();
	JTextField elemField;
	JButton addBt, rmBt, qtBt;
	public HeapJFrame() throws MalformedURLException {
		super.setTitle("Heap");
		Container cp = getContentPane();
		setSize(515, 440);
		//cp.setBackground(Color.GRAY);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		cp.setLayout(new BorderLayout());
		hv = new HeapView(heap);
		hv.setBounds(8, 12, 324, 330);
		JPanel mb=new JPanel();
		mb.setSize(350, 300);
		mb.setBorder(new TitledBorder(new BevelBorder(BevelBorder.LOWERED),"Tree"));
		mb.setLayout(new BorderLayout());
		mb.add(hv,BorderLayout.CENTER);
		JPanel mb2 =new JPanel();
		mb2.setLayout(new GridLayout(1,5));
		mb2.setBorder(new TitledBorder(new BevelBorder(BevelBorder.RAISED)));
		elemField = new JTextField("element");
		mb2.add(elemField);
		ImageIcon ai = new ImageIcon(new URL("file:/" + new File("add.gif").getAbsoluteFile()));
		addBt = new JButton("add", ai);
		mb2.add(addBt);
		ImageIcon ri = new ImageIcon(new URL("file:/" + new File("remove.gif").getAbsoluteFile()));
		rmBt = new JButton("removeMin", ri);
		mb2.add(rmBt);
		ImageIcon ei = new ImageIcon(new URL("file:/" + new File("exit.gif").getAbsoluteFile()));
		qtBt = new JButton("Exit", ei);
		mb2.add(qtBt);
		cp.add(mb,BorderLayout.CENTER);
		cp.add(mb2,BorderLayout.SOUTH);
		addListener();
		setVisible(true);
	}
	private void addListener() {
		addBt.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				try {
					heap.add(Integer.parseInt(elemField.getText()));
					elemField.setText("");
					hv.drawHeap();
				} catch (NumberFormatException e) {
					JOptionPane.showMessageDialog(
						new JFrame(),
						"You must enter integer value !!",
						"ERROR",
						JOptionPane.ERROR_MESSAGE);
				}
			}
		});
		rmBt.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				if (heap.size() > 0) {
					elemField.setText(Integer.toString(heap.removeMin()));
					hv.drawHeap();
				}
			}
		});
		qtBt.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				System.exit(0);
			}
		});
	}
	public static void main(String[] args) throws MalformedURLException {
		new HeapJFrame();
	}
}
