package edu.school.drake;

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

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import java.awt.Color;
import javax.swing.JLabel;
import java.awt.Font;
import javax.swing.JList;
import javax.swing.JButton;
import javax.swing.AbstractListModel;
import javax.swing.DefaultListModel;

import java.awt.ComponentOrientation;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
/**
 * Информатика, 8 клас, издателство Просвета, 2017
 * Автори: Светла Бойчева, Николина Николова, Елиза Стефанова, Антон Денев
 * Урок 3.6.2.1. Сума и произведение на елементите на едномерен масив
 * Задача:Направете приложение Drake, в което след
 * като бъдат въведени стойности на параметрите на уравнението на Дрейк, да изчислява
 * броя на извънземните разумни цивилизации,
 * търсещи контакт.
 * 
 * Вариант 1.
 */
public class DrakeFrame extends JFrame {

	private JPanel contentPane;
	private JLabel lblNewLabel;
	

	private JList<String> lstParameters;
	private JButton btnNewButton;
	private JButton button;
	private JLabel lblDrake;
	
	
	//стойности на параметрите на уравнението на Дрейк
	double[] drake = {10, 0.5, 2.0, 1.0, 0.01, 0.01, 10000};	

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

	/**
	 * Create the frame.
	 */
	public DrakeFrame() {
		setTitle("\u0423\u0440\u0430\u0432\u043D\u0435\u043D\u0438\u0435 \u043D\u0430 \u0414\u0440\u0435\u0439\u043A");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 382, 318);
		contentPane = new JPanel();
		contentPane.setBackground(new Color(0, 0, 102));
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		lblNewLabel = new JLabel("\u041F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u0438");
		lblNewLabel.setForeground(Color.WHITE);
		lblNewLabel.setFont(new Font("Tahoma", Font.BOLD, 14));
		lblNewLabel.setBounds(10, 11, 123, 37);
		contentPane.add(lblNewLabel);
		
		JLabel label = new JLabel("\u0421\u0442\u043E\u0439\u043D\u043E\u0441\u0442\u0438");
		label.setForeground(Color.WHITE);
		label.setFont(new Font("Tahoma", Font.BOLD, 14));
		label.setBounds(100, 11, 123, 37);
		contentPane.add(label);
		
		JList<String> list = new JList<String>();
		list.setModel(new AbstractListModel<String>() {
			String[] values = new String[] {"  R*", "  fp", "  ne", "  fl", "  fi", "  fc", "  L"};
			public int getSize() {
				return values.length;
			}
			public String getElementAt(int index) {
				return values[index];
			}
		});
		list.setFont(new Font("Times New Roman", Font.ITALIC, 14));
		list.setBounds(10, 47, 80, 138);
		contentPane.add(list);
		
		lstParameters = new JList<String>();
		lstParameters.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
		lstParameters.setFont(new Font("Tahoma", Font.PLAIN, 14));
		lstParameters.setBounds(100, 46, 100, 138);
		contentPane.add(lstParameters);
		
		btnNewButton = new JButton("\u0412\u044A\u0432\u0435\u0434\u0438");
		btnNewButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				// инициализиране на модел и записване в него на
				// стойностите на масива с параметрите на уравнението на Дрейк
				DefaultListModel<String> model = new DefaultListModel<String>();
				for (int i = 0; i < drake.length; i++) {
					String message = String.format("%.2f",drake[i]);
					model.add(i, message);
				}

				// извеждане на стойностите от модела в списъчното поле
				lstParameters.setModel(model);
			}
		});
		btnNewButton.setFont(new Font("Tahoma", Font.PLAIN, 14));
		btnNewButton.setBounds(220, 48, 141, 47);
		contentPane.add(btnNewButton);
		
		button = new JButton("\u041F\u0440\u0435\u0441\u043C\u0435\u0442\u043D\u0438");
		button.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				
				// Намиране на произведението на стойностите на
				// елементите на масива чрез последователно обхождане
				// Акумулираното произведение се записва в product
				double product = 1.0;
				for (int i = 0; i < drake.length; i++) {
					product *= drake[i];
				}

				//форматиране на резултата с точност до втори знак след десетичната запетая
				String message = String.format("%.2f", product);
				lblDrake.setText(message);
			}
		});
		button.setFont(new Font("Tahoma", Font.PLAIN, 14));
		button.setBounds(220, 106, 141, 47);
		contentPane.add(button);
		
		lblDrake = new JLabel("");
		lblDrake.setForeground(Color.YELLOW);
		lblDrake.setFont(new Font("Tahoma", Font.BOLD, 14));
		lblDrake.setBounds(10, 232, 351, 37);
		contentPane.add(lblDrake);
		
		JLabel label_2 = new JLabel("\u0411\u0440\u043E\u0439 \u0440\u0430\u0437\u0443\u043C\u043D\u0438 \u0446\u0438\u0432\u0438\u043B\u0438\u0437\u0430\u0446\u0438\u0438, \u0442\u044A\u0440\u0441\u0435\u0449\u0438 \u043A\u043E\u043D\u0442\u0430\u043A\u0442:");
		label_2.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);
		label_2.setForeground(Color.YELLOW);
		label_2.setFont(new Font("Tahoma", Font.BOLD, 14));
		label_2.setBounds(10, 198, 360, 37);
		contentPane.add(label_2);
	}

}
