package edu.school.galery;

import java.awt.EventQueue;

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.JLabel;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Image;

import javax.swing.JScrollPane;
import javax.swing.ListModel;
import javax.swing.JList;
import javax.swing.JButton;
import javax.imageio.ImageIO;
import javax.swing.AbstractListModel;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;
import java.awt.event.ActionEvent;
import java.awt.Dimension;
/**
 * Информатика, 8 клас, издателство Просвета, 2017
 * Автори: Светла Бойчева, Николина Николова, Елиза Стефанова, Антон Денев
 * Урок 3.4.2.3. Работа с изображения
 * Задача: RxC001 много обича да пътува. След всяко пътешествие се връща с
 *  много снимки. За да запази впечатленията си, той се нуждае от
 *  дигитална фото-рамка, която да представя
 *  галерия от любимите му снимки.
 *  Създайте приложение, представляващо интерактивна галерия от снимки. 
 *  Приложението трябва да зарежда желаните снимки, описани
 *  чрез списък, и да ги представя във вид на слайдшоу.
 *  
 *  Вариант 1.
 */
public class GaleryForm extends JFrame {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private JPanel contentPane;

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

	/**
	 * Create the frame.
	 */
	public GaleryForm() {
		setTitle("\u0413\u0430\u043B\u0435\u0440\u0438\u044F");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 554, 373);
		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("", "[][30%][grow,right]", "[][grow][]"));

		JLabel lblPictures = new JLabel("\u0421\u043D\u0438\u043C\u043A\u0438");
		lblPictures.setFont(new Font("Tahoma", Font.BOLD, 12));
		lblPictures.setForeground(new Color(0, 102, 102));
		contentPane.add(lblPictures, "cell 0 0 2 1");

		JScrollPane scrlPaneImages = new JScrollPane();
		contentPane.add(scrlPaneImages, "cell 1 1,grow");

		JList<String> lstImages = new JList<String>();
		lstImages.setModel(new AbstractListModel<String>() {
			/**
			 * 
			 */
			private static final long serialVersionUID = 1L;
			String[] values = new String[] {"IMAG1452.jpg", "IMAG1455.jpg", "IMAG1458.jpg", "IMAG1488.jpg", "IMAG1491.jpg"};
			public int getSize() {
				return values.length;
			}
			public String getElementAt(int index) {
				return values[index];
			}
		});
		scrlPaneImages.setViewportView(lstImages);

		JPanel pnlPreview = new JPanel();
		pnlPreview.setPreferredSize(new Dimension(480, 270));
		pnlPreview.setSize(new Dimension(480, 270));
		pnlPreview.setBackground(new Color(255, 255, 255));
		contentPane.add(pnlPreview, "cell 2 1,grow");

		JButton btnShow = new JButton("\u041F\u043E\u043A\u0430\u0436\u0438");
		btnShow.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				Graphics g = pnlPreview.getGraphics();

				ListModel<String> model = lstImages.getModel();
				int size = model.getSize();
				
				final String PATH = "images/";
				Image img;

				for (int i = 0; i < size; i++) {
					try {
						String fileName = PATH + model.getElementAt(i);
						File imageFile = new File(fileName);
						img = ImageIO.read(imageFile);

						g.drawImage(img, 0, 0, null);
						
						Thread.sleep(1000);
						
					} catch (IOException e1) {
						e1.printStackTrace();
					} catch (InterruptedException e1) {
						e1.printStackTrace();
					}
				}

			}
		});
		contentPane.add(btnShow, "flowx,cell 1 2");

		JButton btnExit = new JButton("\u0418\u0437\u0445\u043E\u0434");
		btnExit.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				System.exit(0);
			}
		});
		contentPane.add(btnExit, "cell 2 2");
	}

}
