import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Random;

import javax.swing.*;

public class Manav {
	
	public static int urunSayisi = 9;

	public static Random r = new Random((4000)+500);

	public static JPanel anapanel;
	public static JPanel sepetPaneli = new JPanel();
	public static JFrame frame;
	
	public static String[] urunler = new String[urunSayisi];
	public static double[] fiyat = new double[urunSayisi];
	public static JLabel[] secilenUrun = new JLabel[urunSayisi];
	
	public static ArrayList<String> kasaListesi = new ArrayList<String>();
	public static ArrayList<JLabel> kasaListesiLabel = new ArrayList<JLabel>(); 

	public Manav() {
		
		urunler[0] = "Carlistonbiber";
		urunler[1] = "Domates";
		urunler[2] = "Havuc";
		urunler[3] = "Kivircik";
		urunler[4] = "Maydanoz";
		urunler[5] = "Patates";
		urunler[6] = "Patlican";
		urunler[7] = "Roka";
		urunler[8] = "Salatalik";
		
		for(int i = 0; i<urunSayisi; i++) secilenUrun[i] = new JLabel("");
		
		fiyat[0] = 15.90;
		fiyat[1] = 20.50;
		fiyat[2] = 17.60;
		fiyat[3] = 12.00; 
		fiyat[4] = 16.20;
		fiyat[5] = 15.50;
		fiyat[6] = 25.30;
		fiyat[7] = 10.90;
		fiyat[8] = 13.50;
		
		frame = new JFrame("Manav");
		frame.setLayout(null); 
		
		anapanel = new JPanel();
		anapanel.setLayout(null);
		anapanel.setBounds(0,0,1000,600);
		anapanel.setBackground(new Color(72, 86, 87));
		
		anapanel.add(urunPanel());
		anapanel.add(sepetPanel());
				
		frame.add(anapanel);
		
		frame.setSize(1000,600);
		frame.setResizable(true);
		frame.setLocationRelativeTo(null);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setVisible(true);
	
	}
	
	public static JPanel urunPanel() {
		
		JPanel urunPaneli = new JPanel();
		urunPaneli.setBounds(10,10,530,540);
		urunPaneli.setBackground(new Color(247, 178, 104));
		urunPaneli.setLayout(null);
		
		JButton[] urunButon = new JButton[9];
		
		int indexx = 0;
		int indexy = 0;
		
		for(int i = 0; i<9; i++) urunButon[i] = new JButton(); 
		
		for(int i = 0; i<9; i++) {
			
			urunButon[i].setIcon(new ImageIcon(new ImageIcon("src/images/images_"+urunler[i].toLowerCase()+".jpg").getImage().getScaledInstance(125, 125, Image.SCALE_DEFAULT)));
			urunButon[i].setVerticalTextPosition(AbstractButton.BOTTOM);
			urunButon[i].setHorizontalTextPosition(AbstractButton.CENTER);
			
			urunButon[i].setText(urunler[i].toUpperCase());
			urunButon[i].setHorizontalAlignment(SwingConstants.CENTER);
				  
			urunButon[i].setFont(new Font("Arial", Font.BOLD, 15));
			urunButon[i].setForeground(new Color(45, 65, 5));
		        
			urunButon[i].setBounds(20+(170*(indexx%3)), 20+(170*indexy), 150, 160);
				
			urunPaneli.add(urunButon[i]);
			
			urunButon[i].addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent olay) {
					
					String urunIsmi = olay.getActionCommand();
					
					double gramaj = 0.0;
					int urunID;
					
					double tutar;
					DecimalFormat tutarFormat;
					String tutarString;
					
					switch(urunIsmi) {
					
					case "CARLISTONBIBER" : 
						
						urunID = 0;
						gramaj = terazi();
						
						tutar = fiyat[urunID] * gramaj;
						tutarFormat = new DecimalFormat("#.##");
						tutarString = tutarFormat.format(tutar);
					
						tutar = Double.parseDouble(tutarString);
						
				//		System.out.println(urunler[urunID] + " seçildi.");
				//		System.out.println("Fiyat : " + fiyat[urunID] + " Agirlik : " + gramaj);
				//		System.out.println("Toplam : " + tutar);
						
						kasaListesi.add(urunler[urunID] + " [ " + fiyat[urunID] + " X " + gramaj + " ] = " + tutar + " TL");
						
						for (int q = 0; q < kasaListesi.size(); q++)
						{
							
							kasaListesiLabel.add(new JLabel());
							kasaListesiLabel.get(q).setText(kasaListesi.get(q));
							
							kasaListesiLabel.get(q).setBounds(30, 115+(q*20), 400, 25);
							
							sepetPaneli.add(kasaListesiLabel.get(q));
							
						}
						
						break;
				         
				    case "DOMATES" : 
				    	
				    	urunID = 1;
						gramaj = terazi();
						
						tutar = fiyat[urunID] * terazi();
						tutarFormat = new DecimalFormat("#.##");
						tutarString = tutarFormat.format(tutar);
					
						tutar = Double.parseDouble(tutarString);
						
						kasaListesi.add(urunler[urunID] + " [ " + fiyat[urunID] + " X " + gramaj + " ] = " + tutar + " TL");
						
						for (int q = 0; q < kasaListesi.size(); q++)
						{
							
							kasaListesiLabel.add(new JLabel());
							kasaListesiLabel.get(q).setText(kasaListesi.get(q));
							
							kasaListesiLabel.get(q).setBounds(30, 115+(q*20), 400, 25);
							
							sepetPaneli.add(kasaListesiLabel.get(q));
							
						}
						
						break;
				         
				    case "HAVUC" : 
				    	
				    	urunID = 2;
						gramaj = terazi();
						
						tutar = fiyat[urunID] * terazi();
						tutarFormat = new DecimalFormat("#.##");
						tutarString = tutarFormat.format(tutar);
					
						tutar = Double.parseDouble(tutarString);
						
						kasaListesi.add(urunler[urunID] + " [ " + fiyat[urunID] + " X " + gramaj + " ] = " + tutar + " TL");
						
						for (int q = 0; q < kasaListesi.size(); q++)
						{
							
							kasaListesiLabel.add(new JLabel());
							kasaListesiLabel.get(q).setText(kasaListesi.get(q));
							
							kasaListesiLabel.get(q).setBounds(30, 115+(q*20), 400, 25);
							
							sepetPaneli.add(kasaListesiLabel.get(q));
							
						}
						
						break;
				         
				    case "KIVIRCIK" : 
				    	
				    	urunID = 3;
						gramaj = terazi();
						
						tutar = fiyat[urunID] * terazi();
						tutarFormat = new DecimalFormat("#.##");
						tutarString = tutarFormat.format(tutar);
					
						tutar = Double.parseDouble(tutarString);
						
						kasaListesi.add(urunler[urunID] + " [ " + fiyat[urunID] + " X " + gramaj + " ] = " + tutar + " TL");
						
						for (int q = 0; q < kasaListesi.size(); q++)
						{
							
							kasaListesiLabel.add(new JLabel());
							kasaListesiLabel.get(q).setText(kasaListesi.get(q));
							
							kasaListesiLabel.get(q).setBounds(30, 115+(q*20), 400, 25);
							
							sepetPaneli.add(kasaListesiLabel.get(q));
							
						}
						
						break;
				         
				    case "MAYDANOZ" : 
				    	
				    	urunID = 4;
						gramaj = terazi();
						
						tutar = fiyat[urunID] * terazi();
						tutarFormat = new DecimalFormat("#.##");
						tutarString = tutarFormat.format(tutar);
					
						tutar = Double.parseDouble(tutarString);
						
						kasaListesi.add(urunler[urunID] + " [ " + fiyat[urunID] + " X " + gramaj + " ] = " + tutar + " TL");
						
						for (int q = 0; q < kasaListesi.size(); q++)
						{
							
							kasaListesiLabel.add(new JLabel());
							kasaListesiLabel.get(q).setText(kasaListesi.get(q));
							
							kasaListesiLabel.get(q).setBounds(30, 115+(q*20), 400, 25);
							
							sepetPaneli.add(kasaListesiLabel.get(q));
							
						}
						
						break;
				        
				    case "PATATES" : 
				    	
				    	urunID = 5;
						gramaj = terazi();
						
						tutar = fiyat[urunID] * terazi();
						tutarFormat = new DecimalFormat("#.##");
						tutarString = tutarFormat.format(tutar);
					
						tutar = Double.parseDouble(tutarString);
						
						kasaListesi.add(urunler[urunID] + " [ " + fiyat[urunID] + " X " + gramaj + " ] = " + tutar + " TL");
						
						for (int q = 0; q < kasaListesi.size(); q++)
						{
							
							kasaListesiLabel.add(new JLabel());
							kasaListesiLabel.get(q).setText(kasaListesi.get(q));
							
							kasaListesiLabel.get(q).setBounds(30, 115+(q*20), 400, 25);
							
							sepetPaneli.add(kasaListesiLabel.get(q));
							
						}
						
						break;
				         
				    case "PATLICAN" :
				    	
				    	urunID = 6;
						gramaj = terazi();
						
						tutar = fiyat[urunID] * terazi();
						tutarFormat = new DecimalFormat("#.##");
						tutarString = tutarFormat.format(tutar);
					
						tutar = Double.parseDouble(tutarString);
						
						kasaListesi.add(urunler[urunID] + " [ " + fiyat[urunID] + " X " + gramaj + " ] = " + tutar + " TL");
						
						for (int q = 0; q < kasaListesi.size(); q++)
						{
							
							kasaListesiLabel.add(new JLabel());
							kasaListesiLabel.get(q).setText(kasaListesi.get(q));
							
							kasaListesiLabel.get(q).setBounds(30, 115+(q*20), 400, 25);
							
							sepetPaneli.add(kasaListesiLabel.get(q));
							
						}
						
						break;
				         
				    case "ROKA" : 
				    	
				    	urunID = 7;
						gramaj = terazi();
						
						tutar = fiyat[urunID] * terazi();
						tutarFormat = new DecimalFormat("#.##");
						tutarString = tutarFormat.format(tutar);
					
						tutar = Double.parseDouble(tutarString);
						
						kasaListesi.add(urunler[urunID] + " [ " + fiyat[urunID] + " X " + gramaj + " ] = " + tutar + " TL");
						
						for (int q = 0; q < kasaListesi.size(); q++)
						{
							
							kasaListesiLabel.add(new JLabel());
							kasaListesiLabel.get(q).setText(kasaListesi.get(q));
							
							kasaListesiLabel.get(q).setBounds(30, 115+(q*20), 400, 25);
							
							sepetPaneli.add(kasaListesiLabel.get(q));
							
						}
						
						break;
				         
				    case "SALATALIK" : 
				    	
				    	urunID = 8;
						gramaj = terazi();
						
						tutar = fiyat[urunID] * terazi();
						tutarFormat = new DecimalFormat("#.##");
						tutarString = tutarFormat.format(tutar);
					
						tutar = Double.parseDouble(tutarString);
						
						kasaListesi.add(urunler[urunID] + " [ " + fiyat[urunID] + " X " + gramaj + " ] = " + tutar + " TL");
						
						for (int q = 0; q < kasaListesi.size(); q++)
						{
							
							kasaListesiLabel.add(new JLabel());
							kasaListesiLabel.get(q).setText(kasaListesi.get(q));
							
							kasaListesiLabel.get(q).setBounds(30, 115+(q*20), 400, 25);
							
							sepetPaneli.add(kasaListesiLabel.get(q));
							
						}
						
						break;
						
					}
				
					anapanel.add(sepetPanel());
					
					anapanel.revalidate(); // For Java 1.7 or above :)
					anapanel.repaint();
					
					}
				});
				
			indexx++;
			if((indexx%3) == 0) indexy++;
			
		}
		
		return urunPaneli;
	
	}
	
	public static JPanel sepetPanel() {
		
		
		sepetPaneli.setBounds(550,10,435,540);
		sepetPaneli.setBackground(new Color(242, 204, 99));
		sepetPaneli.setLayout(null);
		
		JLabel logo = new JLabel(new ImageIcon(new ImageIcon("src/images/greengrocerlogo.png").getImage().getScaledInstance(415, 100, Image.SCALE_DEFAULT)));
	 	logo.setBounds(10,10,415,100);
		
		sepetPaneli.add(logo);
		
	//	System.out.println("Kasa Listesi : " + kasaListesi);	// Test amaçli console çiktisi için...
																// maç ArrayList'e eklenen ürünleri görmek.
																// Daha sonra JLabel ile sepetPanel'e eklenecek.
		
		
		
		sepetPaneli.repaint();
								
		return sepetPaneli;
	}
	
	public static double terazi() {

		double agirlik = 0.0;
		
		agirlik = (r.nextDouble()*4.5)+0.5;		// 500 Gr. ile 5000 Gr. arasi bi agirlik ayarliyoruz.
												// 4.376300693703864 küsurat kismi 3 basamak ayarlanacak.
		
		DecimalFormat gramajFormat = new DecimalFormat("#.###");
		String agirlikString = gramajFormat.format(agirlik);
	
		agirlik = Double.parseDouble(agirlikString);
		
		return agirlik;
		
	}
	
}
