package edu.school.cylinder;

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

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.JTextArea;
import java.awt.Font;
import java.awt.Color;
import java.awt.SystemColor;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.ImageIcon;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class CylinderVolume extends JFrame {

	private JPanel contentPane;
	private JTextField txtHeight;
	private JTextField txtRadius;

	/**
	 * Информатика, 8 клас, изадтелство Просвета, 2017 
	 * Автори: Светла Бойчева, Николина Николова, Елиза Стефанова, Антон Денев 
	 * 3.5. ТЕСТВАНЕ И ВЕРИФИКАЦИЯ НА ПРОГРАМА 
	 * Урок: Тестване и верификация на програма –  упражнение 
	 * Задача: RxC001 моли свой приятел да му направи приложение
	 * Cylinder, което да пресмята обема на прав цилиндър по зададени височина и
	 * радиус на основата. Получил е готовото приложение, но не е доволен.
	 * Помогнете да се открият и отстранят проблемите.
	 * 
	 * Версия 2. Коректно решение!
	 */

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

	/**
	 * Create the frame.
	 */
	public CylinderVolume() {
		setTitle("\u041E\u0431\u0435\u043C \u043D\u0430 \u0446\u0438\u043B\u0438\u043D\u0434\u044A\u0440");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 237);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);

		JLabel lblHeight = new JLabel(
				"\u0412\u0438\u0441\u043E\u0447\u0438\u043D\u0430 \u043D\u0430 \u0446\u0438\u043B\u0438\u043D\u0434\u044A\u0440\u0430:");
		lblHeight.setBounds(10, 36, 152, 14);
		contentPane.add(lblHeight);

		txtHeight = new JTextField();
		txtHeight.setBounds(172, 33, 86, 20);
		contentPane.add(txtHeight);
		txtHeight.setColumns(10);

		JLabel lblRadius = new JLabel(
				"\u0420\u0430\u0434\u0438\u0443\u0441 \u043D\u0430 \u043E\u0441\u043D\u043E\u0432\u0430\u0442\u0430:");
		lblRadius.setBounds(10, 61, 139, 14);
		contentPane.add(lblRadius);

		txtRadius = new JTextField();
		txtRadius.setBounds(172, 58, 86, 20);
		contentPane.add(txtRadius);
		txtRadius.setColumns(10);

		JLabel lblHeightMeasureUnit = new JLabel("\u0441\u043C.");
		lblHeightMeasureUnit.setBounds(268, 36, 46, 14);
		contentPane.add(lblHeightMeasureUnit);

		JLabel lblRadiusMeasureUnit = new JLabel("\u0441\u043C.");
		lblRadiusMeasureUnit.setBounds(268, 61, 46, 14);
		contentPane.add(lblRadiusMeasureUnit);

		JLabel lblResultDescription = new JLabel("\u041E\u0431\u0435\u043C\u044A\u0442 \u0435:");
		lblResultDescription.setBounds(64, 152, 66, 14);
		contentPane.add(lblResultDescription);

		JLabel lblResult = new JLabel("");
		lblResult.setBounds(140, 152, 127, 14);
		contentPane.add(lblResult);

		JLabel lblImage = new JLabel("");
		lblImage.setIcon(new ImageIcon(CylinderVolume.class.getResource("/edu/school/cylinder/images/Picture2.png")));
		lblImage.setBounds(287, 11, 137, 176);
		contentPane.add(lblImage);

		JButton btnCalculate = new JButton("\u041F\u0440\u0435\u0441\u043C\u0435\u0442\u043D\u0438");
		btnCalculate.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				
				// Проверка дали въведеното реално число за височина 
				// съдържа десетична запетая 
				// и заместването й с десетична точка
				String heightText = txtHeight.getText();			
				if (heightText.contains(","))
				{
					heightText = heightText.replace(",", ".");
				}
				
				// Проверка дали въведеното реално число за височина 
				// съдържа десетична запетая 
				// и заместването й с десетична точка				
				String raduisText = txtRadius.getText();				
				if (raduisText.contains(","))
				{
					raduisText = raduisText.replace(",", ".");
				}
				// Преобразуване на височината и радиуса от тип низ
				// в числови стойности				
				double cylinderHeight = Double.parseDouble(heightText);
				double cylinderRadius = Double.parseDouble(raduisText);
				
                //пресмятане на обема на цилиндъра
				double result = cylinderHeight * cylinderRadius * cylinderRadius * Math.PI;
				
				// Форматиране на резултата в число с точност 3 знака след десетичната точка
				lblResult.setText(String.format("%.3f куб. см.", result));
			}
		});
		btnCalculate.setBounds(29, 100, 102, 23);
		contentPane.add(btnCalculate);

		JButton btnReset = new JButton("\u0418\u0437\u0447\u0438\u0441\u0442\u0438");
		btnReset.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				txtHeight.setText("");
				txtRadius.setText("");
				lblResult.setText("");
			}
		});
		btnReset.setBounds(141, 100, 102, 23);
		contentPane.add(btnReset);

	}
}
