import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

import javax.swing.*;

public class KayitFormu {

	public KayitFormu() {
	
		JFrame frame = new JFrame("Kayit Formu | Java Blackboard [105]");
		frame.setLayout(null);
		
		JPanel panel = new JPanel();
		panel.setLayout(null);
		panel.setBackground(new Color(217, 133, 30));
		panel.setBounds(25, 25, 450, 500);
		
		panel.add(form());
		
		frame.add(panel);
		
		frame.getContentPane().setBackground(new Color(89, 39, 10));
		frame.setSize(500, 570);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setLocationRelativeTo(null);
		frame.setResizable(false);
		frame.setVisible(true);
		
	}
	
	public static JPanel form() {
		
		JPanel formPaneli = new JPanel();
		formPaneli.setLayout(null);
		formPaneli.setBackground(new Color(242, 219, 174));
		formPaneli.setBounds(50, 50, 350, 400);
		
		int satir = 0;
		int startX = 20;
		int startY = 20;
		int x = startX;
		int y = startY;
		int labelGenislik = 80;
		int tfGenislik = 200;
		int yukseklik = 20;
		int farkX = 0;
		int farkY = 20;
		
		JLabel isimLabel = new JLabel("Isim :");
		isimLabel.setHorizontalAlignment(JLabel.RIGHT);
		isimLabel.setBounds(x, y, labelGenislik, yukseklik); 
		
		x = x + labelGenislik + farkX;
		
		JTextField isimTF = new JTextField("Isminizi yaziniz.");
		isimTF.setBounds(x, y, tfGenislik, yukseklik); 
		
		satir++;
		x = startX;
		y = startY + ((yukseklik + farkY) * satir);
		
		JLabel soyadLabel = new JLabel("Soyad :");
		soyadLabel.setHorizontalAlignment(JLabel.RIGHT);
		soyadLabel.setBounds(x, y, labelGenislik, yukseklik); 
		
		x = x + labelGenislik + farkX;
		
		JTextField soyadTF = new JTextField("Soyadinizi yaziniz.");
		soyadTF.setBounds(x, y, tfGenislik, yukseklik); 
		
		satir++;
		x = startX;
		y = startY + ((yukseklik + farkY) * satir);
		
		JLabel dogumLabel = new JLabel("Dogum Yili :");
		dogumLabel.setHorizontalAlignment(JLabel.RIGHT);
		dogumLabel.setBounds(x, y, labelGenislik, yukseklik); 
		
		x = x + labelGenislik + farkX;
		
		String[] yilListesi = new String[56];
		
		for(int i=0 ; i<yilListesi.length ; i++) {
			int yil = 1950+i;
			yilListesi[i] = Integer.toString(yil);
		}
		
		JComboBox yilCB = new JComboBox(yilListesi);
		yilCB.setBounds(x, y, tfGenislik, yukseklik); 
		
		satir++;
		x = startX;
		y = startY + ((yukseklik + farkY) * satir);
		
		JLabel mailLabel = new JLabel("Email :");
		mailLabel.setHorizontalAlignment(JLabel.RIGHT);
		mailLabel.setBounds(x, y, labelGenislik, yukseklik); 
		
		x = x + labelGenislik + farkX;
		
		JTextField mailTF = new JTextField("Emailinizi yaziniz.");
		mailTF.setBounds(x, y, tfGenislik, yukseklik); 
		
		satir++;
		x = startX;
		y = startY + ((yukseklik + farkY) * satir);
		
		JLabel telefonLabel = new JLabel("Telefon :");
		telefonLabel.setHorizontalAlignment(JLabel.RIGHT);
		telefonLabel.setBounds(x, y, labelGenislik, yukseklik); 
		
		x = x + labelGenislik + farkX;
		
		JTextField telefonTF = new JTextField("Telefonunuzu yaziniz.");
		telefonTF.setBounds(x, y, tfGenislik, yukseklik); 
		
		satir++;
		x = startX;
		y = startY + ((yukseklik + farkY) * satir);
		
		JLabel sehirLabel = new JLabel("Şehir :");
		sehirLabel.setHorizontalAlignment(JLabel.RIGHT);
		sehirLabel.setBounds(x, y, labelGenislik, yukseklik); 
		
		x = x + labelGenislik + farkX;
		
		String[] sehirListesi = {"Istanbul", "Adana", "Adıyaman",
				"Diyarbakır", "Elazığ", "Gaziantep", "Hatay",
				"Kilis", "Malatya", "Osmaniye", "Şanlıurfa" };
		
		JComboBox sehirCB = new JComboBox(sehirListesi);
		sehirCB.setBounds(x, y, tfGenislik, yukseklik); 
		
		satir++;
		x = startX;
		y = startY + ((yukseklik + farkY) * satir);
		
		JLabel mezunLabel = new JLabel("Mezuniyet :");
		mezunLabel.setHorizontalAlignment(JLabel.RIGHT);
		mezunLabel.setBounds(x, y, labelGenislik, yukseklik); 
		
		x = x + labelGenislik + farkX;
		
		String[] mezunListesi = {"Ilk Okul", "Orta Okul", "Lise", "Üniversite" };
		
		JComboBox mezunCB = new JComboBox(mezunListesi);
		mezunCB.setBounds(x, y, tfGenislik, yukseklik); 
		
		satir++;
		x = startX;
		y = startY + ((yukseklik + farkY) * satir);
		
		JButton kaydetButonu = new JButton("Keydet");
		kaydetButonu.setBounds(x+180,y+20, 100, yukseklik);
		
		kaydetButonu.addActionListener(new ActionListener() {
		    @Override
		    public void actionPerformed(ActionEvent e) {
		       
		    	File dosya = new File("src" + File.separator + "data" + File.separator + "kayit.txt");  // src/data/kayit.txt
		    	try {
		    	    FileWriter yazici = new FileWriter(dosya, true);
		    	    // True parametresi, dosyanın sonuna ekleme yapacağını belirtir
		    	    // Ekleme yapmak yerine, dosyayı temizlemek istiyorsanız false olarak ayarlamalısınız
		    	    
		    	    BufferedWriter yaz = new BufferedWriter(yazici);
		    	    // Verileri blok halinde yazmak için bir BufferedWriter kullanıyoruz
		    	    // Bu, daha hızlı ve daha verimli bir yazma işlemi sağlar
		    	    
		    	    String isim = isimTF.getText();
		    	    String soyad = soyadTF.getText();
		    	    String dogumYili = (String) yilCB.getSelectedItem();
		    	    String mail = mailTF.getText();
		    	    String telefon = telefonTF.getText();
		    	    String sehir = (String) sehirCB.getSelectedItem();
		    	    
		    	    yaz.write(isim + "," + soyad + "," + dogumYili + "," + mail + "," + telefon + "," + sehir + "\n");

		            yaz.close();
		            
		            JOptionPane.showMessageDialog(null, "Kayıt başarıyla tamamlanmıştır.", "Kayıt Bildirimi", 0);
		            
		    	} catch (IOException ex) {
		    	    ex.printStackTrace();
		    	}

		    }
		});

		
		formPaneli.add(isimLabel);
		formPaneli.add(isimTF);
		
		formPaneli.add(soyadLabel);
		formPaneli.add(soyadTF);
		
		formPaneli.add(dogumLabel);
		formPaneli.add(yilCB);
		
		formPaneli.add(mailLabel);
		formPaneli.add(mailTF);
		
		formPaneli.add(telefonLabel);
		formPaneli.add(telefonTF);
		
		formPaneli.add(sehirLabel);
		formPaneli.add(sehirCB);
		
		formPaneli.add(mezunLabel);
		formPaneli.add(mezunCB);
		
		formPaneli.add(kaydetButonu);
		
		return formPaneli;
		
	}

}
