import java.awt.event.*;
import java.awt.*;

public class CSortMenuBar extends MenuBar implements ActionListener
{
	private Frame		m_SortFrame; 		// m_SortFrame ist das Frame, das durch den Beenden-Punkt beendet wird.
	private Menu 		m_SortMenu;		// m_SortMenu ist das Pulldownmenue.
	private CSortCanvas 	m_SortCanvas;		// m_SortCanvas ist das CSortCanvas, in dem die Sortierung ausgefuehrt werden soll.
	private Label		m_SortierMethode;	// m_SortMethode der Label, auf dem die aktuelle Sortiermethode ausgegeben werden soll.

	public CSortMenuBar(CSortCanvas _SCanvas, Frame _SFrame, Label _SMethode)
	{
		super();
		m_SortCanvas = _SCanvas;
		m_SortFrame = _SFrame;
		m_SortierMethode = _SMethode;
		m_SortMenu = new Menu("Sortieren");

		m_SortMenu.addActionListener(this);

		m_SortMenu.add("Quicksort");
		m_SortMenu.add("Bubblesort");
		m_SortMenu.add("Selectionsort");
		m_SortMenu.add("Insertionsort");
		m_SortMenu.add("Heapsort");
		m_SortMenu.add("Mergesort");
		m_SortMenu.add("Beenden");
		add(m_SortMenu);
	}

	private void SortStart(CSortAlg SortAlg)
	{
		m_SortCanvas.setSort(SortAlg);
		m_SortCanvas.init();
		m_SortCanvas.StartSort();
	}

	public void actionPerformed(ActionEvent e)
	{
		String cmd = e.getActionCommand();
		if(cmd.equals("Quicksort"))
		{
			m_SortierMethode.setText("Quicksort");
			m_SortierMethode.repaint();
			CQuicksortAlg Sort = new CQuicksortAlg();
			SortStart(Sort);
		}
		if(cmd.equals("Bubblesort"))
		{
			m_SortierMethode.setText("Bubbleort");
			m_SortierMethode.repaint();
			CBubblesortAlg Sort = new CBubblesortAlg();
			SortStart(Sort);
 
		}
		if(cmd.equals("Selectionsort"))
		{
			m_SortierMethode.setText("Selectionsort");
			m_SortierMethode.repaint();
			CSelectionsortAlg Sort = new CSelectionsortAlg();
			SortStart(Sort);
		}
		if(cmd.equals("Insertionsort"))
		{
			m_SortierMethode.setText("Insertionsort");
			m_SortierMethode.repaint();
			CInsertionsortAlg Sort = new CInsertionsortAlg();
			SortStart(Sort);
		}
		if(cmd.equals("Heapsort"))
		{
			m_SortierMethode.setText("Heapsort");
			m_SortierMethode.repaint();
			CHeapsortAlg Sort = new CHeapsortAlg();
			SortStart(Sort);
		}
		if(cmd.equals("Mergesort"))
		{
			m_SortierMethode.setText("Mergesort");
			m_SortierMethode.repaint();
			CMergesortAlg Sort = new CMergesortAlg();
			SortStart(Sort);
		}
		if(cmd.equals("Beenden"))
		{
			m_SortFrame.dispose();
			System.exit(0);
		}
	}
	
}