package edu.school;

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

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JSpinner;
import javax.swing.JLabel;
import javax.swing.JButton;
import javax.swing.JTextArea;
import javax.swing.JScrollPane;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
	/**
	 * Информатика, 8 клас, издателство Просвета, 2017
	 * Автори: Светла Бойчева, Николина Николова, Елиза Стефанова, Антон Денев
	 * Урок 3.5. ТЕСТВАНЕ И ВЕРИФИКАЦИЯ НА ПРОГРАМА
	 * Задача: RxC001 моли свой приятел да му направи приложение Rocket, 
	 * което рисува ракета, която лети в небето и когато се издига от нея
	 * излиза огромен блясък. Иска освен това да може да се рисуват и малки,
	 * и големи, и огромни ракети.
	 * Версия 2. Коректно решение!
	 */
public class ShuttleForm extends JFrame {

	private JPanel contentPane;


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

	/**
	 * Create the frame.
	 */
	public ShuttleForm() {
		setTitle("\u0420\u0430\u043A\u0435\u0442\u0430");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 501);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);

		JSpinner spnZoom = new JSpinner();
		spnZoom.setBounds(66, 10, 29, 20);
		contentPane.add(spnZoom);

		JLabel lblZoom = new JLabel("Zoom:");
		lblZoom.setBounds(10, 13, 46, 14);
		contentPane.add(lblZoom);

		JScrollPane scrollPane = new JScrollPane();
		scrollPane.setBounds(10, 41, 414, 410);
		contentPane.add(scrollPane);

		JTextArea txtDrawPane = new JTextArea();
		scrollPane.setViewportView(txtDrawPane);

		JButton btnDraw = new JButton("Draw");
		btnDraw.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				txtDrawPane.setText("");
				int zoom = (int) spnZoom.getValue();
				zoom *= 2;// защото трябва символите на ред да са четен
				// брой в противен случай се получава разместване
				int slashes = 1;
				int symbolsPerRow = 12 + zoom;
				// 12 символа на ред - 4 реда
				// 14 символа на ред - 5 реда
				// 16 символа на ред - 6 реда
				// n символа на ред - n/2-2 реда
				
				// изчертаване на върха на ракетата
				for (int row = 0; row < symbolsPerRow / 2 - 2; row++) {
					int spaces = symbolsPerRow / 2 - (slashes + 1);
					for (int s = 0; s < spaces; s++)
						txtDrawPane.append("  ");
					for (int s = 0; s < slashes; s++)
						txtDrawPane.append("/ ");
					txtDrawPane.append("* * ");
					for (int s = 0; s < slashes; s++)
						txtDrawPane.append("\\ ");
					slashes++;
					txtDrawPane.append("\n");
				}
				
				// изчертаване на корпуса на ракетата
				for (int element = 0; element < 5; element++) {
					if (element % 2 == 0) {
						txtDrawPane.append("+");
						for (int i = 0; i < symbolsPerRow - 2; i++)
							txtDrawPane.append(i % 2 == 0 ? "=" : "*");
						txtDrawPane.append("+\n");
					} else {
						for (int row = 0; row < 6; row++) {
							for (int col = 0; col < symbolsPerRow; col++) {
								if (col == 0 || col == symbolsPerRow - 1)
									txtDrawPane.append("| ");
								else
									txtDrawPane.append(". ");
							}
							txtDrawPane.append("\n");
						}
					}
				}
				
				// изчертаване на пламъка

				slashes = 1;
				for (int row = 0; row < symbolsPerRow / 2 - 2; row++) {
					int spaces = symbolsPerRow / 2 - (slashes + 1);
					for (int s = 0; s < spaces; s++)
						txtDrawPane.append("  ");
					for (int s = 0; s < slashes; s++)
						txtDrawPane.append("/ ");
					txtDrawPane.append("* * ");
					for (int s = 0; s < slashes; s++)
						txtDrawPane.append("\\ ");
					slashes++;
					txtDrawPane.append("\n");
				}

			}
		});
		btnDraw.setBounds(105, 9, 89, 23);
		contentPane.add(btnDraw);

	}
}
