package edu.school.cafe;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JTextArea;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
import javax.swing.ImageIcon;
import java.awt.Font;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JScrollPane;

/**
 * Информатика, 8 клас, издателство Просвета, 2017
 * Автори: Светла Бойчева, Николина Николова, Елиза Стефанова, Антон Денев
 * Урок 3.2 2. Създаване на компютърна програма
 * Задача: Да се напише програма “Касов апарат”, която да предоставя 
 * възможност на потребителя (сервитьора) да маркира поръчани от
 * клиентите напитки и да издава фискален бон (касова бележка), 
 * когато се поиска сметката.
 * 
 * Вариант 1.
 */

public class Cafe extends JFrame {

	private JPanel contentPane;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					Cafe frame = new Cafe();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public Cafe() {
		setTitle("\u041A\u0430\u0441\u043E\u0432 \u0430\u043F\u0430\u0440\u0430\u0442");
		setResizable(false);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 527, 586);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);

		JScrollPane scrollPane = new JScrollPane();
		scrollPane.setBounds(10, 11, 490, 115);
		contentPane.add(scrollPane);

		JTextArea txtBill = new JTextArea();
		scrollPane.setViewportView(txtBill);
		txtBill.setText("----\u041A\u0430\u0441\u043E\u0432 \u0431\u043E\u043D----");

		JLabel lblPrice = new JLabel("0.0");
		lblPrice.setHorizontalAlignment(SwingConstants.RIGHT);
		lblPrice.setFont(new Font("Tahoma", Font.BOLD, 18));
		lblPrice.setBounds(364, 422, 63, 14);
		contentPane.add(lblPrice);

		JPanel panel = new JPanel();
		panel.setBounds(15, 137, 155, 180);
		contentPane.add(panel);
		panel.setLayout(null);

		JLabel lblTeaCounter = new JLabel("0");
		lblTeaCounter.setFont(new Font("Tahoma", Font.BOLD, 18));
		lblTeaCounter.setHorizontalAlignment(SwingConstants.RIGHT);
		lblTeaCounter.setBounds(108, 11, 37, 27);
		panel.add(lblTeaCounter);

		JLabel lblTea = new JLabel("\u0427\u0430\u0439");
		lblTea.setFont(new Font("Tahoma", Font.BOLD, 18));
		lblTea.setBounds(10, 11, 90, 27);
		panel.add(lblTea);

		JLabel label = new JLabel("");
		label.setBounds(10, 61, 90, 108);
		panel.add(label);
		label.setIcon(new ImageIcon(Cafe.class.getResource("/edu/school/cafe/images/111962090.jpg")));

		JButton btnTea = new JButton("+");

		btnTea.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				final double teaPrice = 0.80;// единична цена за чаша чай

				// преобразува стойността на lblTeaCounter от низ в цяло число
				int teaCount = Integer.parseInt(lblTeaCounter.getText());
				
				teaCount++;// увеличава броя на поръчаните чаши чай
				
				// записва в lblTeaCounter новия брой поръчани чаши чай
				lblTeaCounter.setText(String.format("%d", teaCount));

				// актуализираме текста в полето за касов бон да е
				// досегашният текст плюс текста, описващ новата поръчка
				txtBill.append(String.format("\n%s......................%.2fлв.", lblTea.getText(), teaPrice));

				// актуализира текущата сметка, като я превръща в число и
				// добавя към нея цената на поръчания чай
				double total = Double.parseDouble(lblPrice.getText().replace(',', '.'));
				total += teaPrice;
				
				// актуализира в lblPrice стойността на новата обща сума
				lblPrice.setText(String.format("%.2f", total).replace(',', '.'));
			}
		});

		btnTea.setBounds(104, 106, 41, 23);
		panel.add(btnTea);

		JPanel panel_1 = new JPanel();
		panel_1.setLayout(null);
		panel_1.setBounds(180, 137, 155, 180);
		contentPane.add(panel_1);

		JLabel lblCoffeeCounter = new JLabel("0");
		lblCoffeeCounter.setHorizontalAlignment(SwingConstants.RIGHT);
		lblCoffeeCounter.setFont(new Font("Tahoma", Font.BOLD, 18));
		lblCoffeeCounter.setBounds(108, 11, 37, 27);
		panel_1.add(lblCoffeeCounter);

		JLabel lblCoffee = new JLabel("\u041A\u0430\u0444\u0435");
		lblCoffee.setFont(new Font("Tahoma", Font.BOLD, 18));
		lblCoffee.setBounds(10, 11, 90, 27);
		panel_1.add(lblCoffee);

		JLabel label_4 = new JLabel("");
		label_4.setIcon(new ImageIcon(Cafe.class.getResource("/edu/school/cafe/images/114233497.jpg")));
		label_4.setBounds(10, 61, 90, 108);
		panel_1.add(label_4);

		JButton btnCoffee = new JButton("+");
		btnCoffee.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {

				final double coffeePrice = 1.55;// единична цена за чаша кафе

				// преобразува стойността на lblCoffeeCounter от низ в цяло  число
				int coffee = Integer.parseInt(lblCoffeeCounter.getText());
				
				coffee++;// увеличава броя на поръчаните чаши кафе
				
				// записва в lblCoffeeCounter новия брой поръчани чаши кафе
				lblCoffeeCounter.setText(String.format("%d", coffee));

				// актуализираме текста в полето за касов бон да е
				// досегашният текст плюс текста, описващ новата поръчка
				txtBill.append(String.format("\n%s...................%.2fлв.", lblCoffee.getText(), coffeePrice));

				// актуализира текущата сметка, като я превръща в число и
				// добавя към нея цената на поръчаната чаша кафе
				double total = Double.parseDouble(lblPrice.getText());
				total += coffeePrice;

				// актуализира в lblPrice стойността на новата обща сума
				lblPrice.setText(String.format("%.2f", total).replace(',', '.'));
			}
		});
		btnCoffee.setBounds(104, 106, 41, 23);
		panel_1.add(btnCoffee);

		JPanel panel_2 = new JPanel();
		panel_2.setLayout(null);
		panel_2.setBounds(345, 137, 155, 180);
		contentPane.add(panel_2);

		JLabel lblJuiceCounter = new JLabel("0");
		lblJuiceCounter.setHorizontalAlignment(SwingConstants.RIGHT);
		lblJuiceCounter.setFont(new Font("Tahoma", Font.BOLD, 18));
		lblJuiceCounter.setBounds(108, 11, 37, 27);
		panel_2.add(lblJuiceCounter);

		JLabel lblJuice = new JLabel("\u0421\u043E\u043A");
		lblJuice.setFont(new Font("Tahoma", Font.BOLD, 18));
		lblJuice.setBounds(10, 11, 90, 27);
		panel_2.add(lblJuice);

		JLabel label_7 = new JLabel("");
		label_7.setIcon(new ImageIcon(Cafe.class.getResource("/edu/school/cafe/images/136603694.jpg")));
		label_7.setBounds(10, 61, 90, 108);
		panel_2.add(label_7);

		JButton btnJuice = new JButton("+");
		btnJuice.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				
				final double juicePrice = 3.15;// единична цена за чаша сок
				
				// преобразува стойността на lblJuiceCounter от низ в цяло число
				int juice = Integer.parseInt(lblJuiceCounter.getText());
				
				juice++;// увеличава броя на поръчаните чаши сок
				
				// записва в lblJuiceCounter новия брой поръчани чаши сок
				lblJuiceCounter.setText(String.format("%d", juice));

				// актуализираме текста в полето за касов бон да е
				// досегашният текст плюс текста, описващ новата поръчка
				txtBill.append(String.format("\n%s......................%.2fлв.", lblJuice.getText(), juicePrice));

				// актуализира текущата сметка, като я превръща в число и
				// добавя към нея цената на поръчаната чаша сок
				double total = Double.parseDouble(lblPrice.getText());
				total += juicePrice;
				
				// актуализира в lblPrice стойността на новата обща сума
				lblPrice.setText(String.format("%.2f", total).replace(',', '.'));

			}
		});
		btnJuice.setBounds(104, 106, 41, 23);
		panel_2.add(btnJuice);

		JPanel panel_3 = new JPanel();
		panel_3.setLayout(null);
		panel_3.setBounds(181, 328, 155, 180);
		contentPane.add(panel_3);

		JLabel lblSoftDrinkCounter = new JLabel("0");
		lblSoftDrinkCounter.setHorizontalAlignment(SwingConstants.RIGHT);
		lblSoftDrinkCounter.setFont(new Font("Tahoma", Font.BOLD, 18));
		lblSoftDrinkCounter.setBounds(108, 10, 37, 27);
		panel_3.add(lblSoftDrinkCounter);

		JLabel lblSoftDrink = new JLabel("\u0411\u0435\u0437\u0430\u043B\u043A\u043E\u0445\u043E\u043B\u043D\u043E");
		lblSoftDrink.setFont(new Font("Tahoma", Font.BOLD, 15));
		lblSoftDrink.setBounds(10, 11, 118, 27);
		panel_3.add(lblSoftDrink);

		JLabel label_10 = new JLabel("");
		label_10.setIcon(new ImageIcon(Cafe.class.getResource("/edu/school/cafe/images/166867496.jpg")));
		label_10.setBounds(10, 61, 90, 108);
		panel_3.add(label_10);

		JButton btnSoftDrink = new JButton("+");
		btnSoftDrink.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				final double softDrinkPrice = 1.65;	 // единична цена за чаша безалкохолно
				
				// преобразува стойността на lblSoftDrinkCounter от низ в цяло число				
				int softDrink = Integer.parseInt(lblSoftDrinkCounter.getText());
				
				softDrink++;// увеличава броя на поръчаните чаши безалкохолно
				
				// записва в lblSoftDrinkCounter новия брой поръчани чаши безалкохолно			
				lblSoftDrinkCounter.setText(String.format("%d", softDrink));
				
				
				// актуализираме текста в полето за касов бон да е
				// досегашният текст плюс текста, описващ новата поръчка
				txtBill.append(String.format("\n%s..%.2fлв.", lblSoftDrink.getText(), softDrinkPrice));
				
				// актуализира текущата сметка, като я превръща в число и
				// добавя към нея цената на поръчаната чаша безалкохолно				
				double total = Double.parseDouble(lblPrice.getText());
				total += softDrinkPrice;
				
				// актуализира в lblPrice стойността на новата обща сума
				lblPrice.setText(String.format("%.2f", total).replace(',', '.'));
			}
		});
		btnSoftDrink.setBounds(104, 106, 41, 23);
		panel_3.add(btnSoftDrink);

		JPanel panel_4 = new JPanel();
		panel_4.setLayout(null);
		panel_4.setBounds(16, 328, 155, 180);
		contentPane.add(panel_4);

		JLabel lblCocoaCounter = new JLabel("0");
		lblCocoaCounter.setHorizontalAlignment(SwingConstants.RIGHT);
		lblCocoaCounter.setFont(new Font("Tahoma", Font.BOLD, 18));
		lblCocoaCounter.setBounds(108, 11, 37, 27);
		panel_4.add(lblCocoaCounter);

		JLabel lblCocoa = new JLabel("\u041A\u0430\u043A\u0430\u043E");
		lblCocoa.setFont(new Font("Tahoma", Font.BOLD, 18));
		lblCocoa.setBounds(10, 11, 90, 27);
		panel_4.add(lblCocoa);

		JLabel label_13 = new JLabel("");
		label_13.setIcon(new ImageIcon(Cafe.class.getResource("/edu/school/cafe/images/165674582.jpg")));
		label_13.setBounds(10, 61, 90, 108);
		panel_4.add(label_13);

		JButton btnCocoa = new JButton("+");
		btnCocoa.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				
				final double cocoaPrice = 2.80;	// единична цена за чаша какао
				
				// преобразува стойността на lblCocoaCounter от низ в цяло число			
				int cocoa = Integer.parseInt(lblCocoaCounter.getText());
				
				cocoa++;// увеличава броя на поръчаните чаши какао
				
				// записва в lblCocoaCounter новия брой поръчани чаши какао				
				lblCocoaCounter.setText(String.format("%d", cocoa));

				// актуализираме текста в полето за касов бон да е
				// досегашният текст плюс текста, описващ новата поръчка
				txtBill.append(String.format("\n%s..................%.2fлв.", lblCocoa.getText(), cocoaPrice));

				// актуализира текущата сметка, като я превръща в число и
				// добавя към нея цената на поръчаната чаша какао
				double total = Double.parseDouble(lblPrice.getText());
				total += cocoaPrice;

				// актуализира в lblPrice стойността на новата обща сума
				lblPrice.setText(String.format("%.2f", total).replace(',', '.'));

			}
		});
		btnCocoa.setBounds(104, 106, 41, 23);
		panel_4.add(btnCocoa);

		JLabel lblTotal = new JLabel("\u041E\u0431\u0449\u0430 \u0441\u0443\u043C\u0430:");
		lblTotal.setFont(new Font("Tahoma", Font.BOLD, 18));
		lblTotal.setBounds(364, 372, 118, 39);
		contentPane.add(lblTotal);

		JLabel lblCurrency = new JLabel("\u043B\u0432.");
		lblCurrency.setHorizontalAlignment(SwingConstants.LEFT);
		lblCurrency.setFont(new Font("Tahoma", Font.BOLD, 18));
		lblCurrency.setBounds(437, 422, 42, 14);
		contentPane.add(lblCurrency);

		JButton btnReset = new JButton("\u041D\u043E\u0432\u0430 \u0441\u043C\u0435\u0442\u043A\u0430");

		btnReset.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				lblPrice.setText("0.0");
				lblCocoaCounter.setText("0");
				lblTeaCounter.setText("0");
				lblJuiceCounter.setText("0");
				lblCoffeeCounter.setText("0");
				lblSoftDrinkCounter.setText("0");
				txtBill.setText("----Касов бон----");
			}
		});

		btnReset.setBounds(364, 463, 136, 39);
		contentPane.add(btnReset);

	}
}
