package edu.school.lines;

import java.awt.EventQueue;
import java.awt.Graphics;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import net.miginfocom.swing.MigLayout;
import java.awt.Color;
import javax.swing.border.LineBorder;

import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
/**
 * Информатика, 8 клас, издателство Просвета, 2017
 * Автори: Светла Бойчева, Николина Николова, Елиза Стефанова, Антон Денев
 * Урок 3.4.2.1. Компютърна  графика
 * Задача: Да се създаде приложение с ГПИ, което изчертава линиите 
 * от фигура, на която половината отсечки са с начало горния ляв ъгъл
 * на панела (0,0), а другата половина – долния десен
 * (w, h), където w е ширината, а h – височината на
 * панела. Вторите краища на отсечките съвпадат,
 * като разделят диагонала на n равни части.
 *  Броят на интервалите n, на които е разделен диагонала,
 * се въвежда от потребителя
 * 
 * Версия 1.
 */
public class DrawingsLines extends JFrame {


	private static final long serialVersionUID = 1L;
	private JPanel contentPane;
	private JPanel pnlCanvas;
	private JPanel pnlControl;
	private JButton btnDraw;
	private JLabel lblNumber;
	private JTextField txtN;

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

	/**
	 * Create the frame.
	 */
	public DrawingsLines() {
		setTitle("\u0413\u0440\u0430\u0444\u0438\u043A\u0430");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		contentPane = new JPanel();
		contentPane.setForeground(new Color(51, 102, 102));
		contentPane.setBackground(new Color(255, 255, 204));
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(new MigLayout("", "[35%][65%,grow]", "[grow]"));
		
		pnlControl = new JPanel();
		pnlControl.setBackground(new Color(255, 255, 153));
		pnlControl.setBorder(new LineBorder(new Color(102, 0, 0)));
		contentPane.add(pnlControl, "cell 0 0,grow");
		pnlControl.setLayout(new MigLayout("", "[][grow]", "[grow][bottom]"));
		
		btnDraw = new JButton("\u0427\u0435\u0440\u0442\u0435\u0436");
		btnDraw.setForeground(new Color(0, 0, 0));
		btnDraw.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				//Извличане на графиката
				Graphics g = pnlCanvas.getGraphics();
				
				//Извличане на ширината на панела
				int w = pnlCanvas.getWidth();
				//Извличане на височината на панела
				int h = pnlCanvas.getHeight();
			
				//Подготовка на цвят за чертане
				Color color = new Color(52,103,92);
				//Задаване на цвят за чертане
				g.setColor(color);
				
				int n = Integer.parseInt(txtN.getText());
				
				double dx = (double) w / n;
				double dy = (double) h / n;
				
				double x = 0;
				double y = h;
				
				for (int i = 0; i <= n; i++){
					g.drawLine(0, 0, (int) x, (int) y);
					g.drawLine(w, h, (int) x, (int) y);
					x += dx;
					y -= dy;
				}
			}
		});
		
		lblNumber = new JLabel("\u0418\u043D\u0442\u0435\u0440\u0432\u0430\u043B\u0438:");
		lblNumber.setVerticalAlignment(SwingConstants.BOTTOM);
		lblNumber.setHorizontalAlignment(SwingConstants.CENTER);
		lblNumber.setForeground(new Color(51, 102, 102));
		pnlControl.add(lblNumber, "cell 0 0,alignx trailing,aligny top");
		
		txtN = new JTextField();
		lblNumber.setLabelFor(txtN);
		txtN.setForeground(new Color(51, 102, 102));
		pnlControl.add(txtN, "cell 1 0,growx,aligny top");
		txtN.setColumns(10);
		pnlControl.add(btnDraw, "cell 0 1,aligny bottom");
		
		JButton btnExit = new JButton("\u0418\u0437\u0445\u043E\u0434");
		btnExit.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				System.exit(0);
			}
		});
		btnExit.setForeground(new Color(102, 0, 0));
		pnlControl.add(btnExit, "cell 1 1,aligny bottom");
		
		pnlCanvas = new JPanel();
		pnlCanvas.setForeground(new Color(102, 0, 0));
		pnlCanvas.setBackground(new Color(255, 255, 204));
		pnlCanvas.setBorder(new LineBorder(new Color(102, 0, 0)));
		contentPane.add(pnlCanvas, "cell 1 0,grow");
	}

}
