import java.awt.*;
import java.awt.event.*;
import java.util.Random;

import javax.swing.*;

/**
	
	Java Blackbourd YouTube kanali.
	Ders : 054
	
	BorderLayout ve GridLayout kullanimi
	Takvim görüntüsü düzenleme örnegi.
 	
*/

public class BorderLayoutAyTakvimi extends JFrame implements ActionListener {

	String[] liste = {"Boş...", "OCAK 2022 (6X7)", "ŞUBAT 2022 (6X7)", "MART 2022 (6X7)", "NİSAN 2022 (6X7)"};
	JComboBox comboListe = new JComboBox(liste);
	
	JLabel label = new JLabel("Boş...");
	
	JPanel panel = new JPanel();
	
	public BorderLayoutAyTakvimi()  {

		setLayout(new BorderLayout());
		
		comboListe.setSelectedIndex(0);
		comboListe.addActionListener(this);
		
		label.setVerticalAlignment(JLabel.CENTER);
		label.setHorizontalAlignment(JLabel.CENTER);
		label.setFont(new Font("Verdana", Font.BOLD, 59));
		label.setPreferredSize(new Dimension(150, 150));
		
		add(comboListe, BorderLayout.NORTH);
		add(label, BorderLayout.SOUTH);
		add(panel, BorderLayout.CENTER);
		
		setSize(1024, 768);
		setTitle("OCAK 2022 Takvim görünümü. Java Blackboard [ 054 ]");
		setLocationRelativeTo(null); // Ekran ortasina ortalar.
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setVisible(true);
		
		
	}

	public void actionPerformed(ActionEvent e) {
		
		if(e.getSource() == comboListe) {
			
			Random r = new Random();
			String kelime = "";
			
			JComboBox cb = (JComboBox) e.getSource();
			String madde = (String) cb.getSelectedItem();
			
			switch (madde) {
			
			case "OCAK 2022 (6X7)" : 
				
				label.setText("OCAK 2022");
				
				panel.removeAll();
				panel.setLayout(new GridLayout(6,7));
				
				for(int i=1; i<=42 ; i++) {
					panel.add(pastelRenkliPanel(i, 202201, ""));
				}
				
				add(panel);
				
				revalidate();
				
			break;
			
			case "ŞUBAT 2022 (6X7)" : 
				
				label.setText("ŞUBAT 2022 (6X7)");
				
				panel.removeAll();
				panel.setLayout(new GridLayout(6,7));
				
				
				
				add(panel);
				
				revalidate();
				
				
			break;
			
			case "MART 2022 (6X7)" : 
				
				label.setText("MART 2022 (6X7)");
				
				panel.removeAll();
				panel.setLayout(new GridLayout(6,7));
				
				
				
				add(panel);
				
				revalidate();
				
				
			break;
			
			case "NİSAN 2022 (6X7)" : 
				
				label.setText("NİSAN 2022 (6X7)");
				
				panel.removeAll();
				panel.setLayout(new GridLayout(6,7));
				
				
				
				add(panel);
				
				revalidate();
				
					
				break;
							
			default : 
				
				label.setText("Olmayan bi'madde seçildi...");
			
				panel.removeAll();
				panel.setLayout(new GridLayout(6,7));
				
				for(int i=1; i<=42 ; i++) {
					panel.add(pastelRenkliPanel(i, -1, ""));
				}
				
				add(panel);
				
				revalidate();
			
			}
		}
		
	}
	
	public static JPanel pastelRenkliPanel(int sayi, int harf, String kelime) {
		
		char yatay = '\u2550'; // ═
		char dikey = '\u2551'; // ║
		char kose1 = '\u2554'; // ╔
		char kose2 = '\u2557'; // ╗
		char kose3 = '\u255A'; // ╚
		char kose4 = '\u255D'; // ╝
		
		Random r = new Random();
		
		JLabel label = new JLabel();
		
		if (harf == 0) {
			
			label.setText(""+sayi);
			
		}
		
		if (harf == 202201) {
			
			if (sayi <= 5) label.setText("");
			
			if (sayi >= 6) label.setText(""+(sayi-5));
			
			if (sayi >= 37) label.setText("");
			
		}
		
		if (harf == -1) {
			
			label.setText("");
			
		} 
		
		if (harf == 5) {
			
			char a = kelime.charAt(0);
			char b = kelime.charAt(1);
			char c = kelime.charAt(2);
			char d = kelime.charAt(3);
			char e = kelime.charAt(4);
			
			if (sayi == 1) label.setText(""+kose1);
			if (sayi >= 2 && sayi <=8) label.setText(""+yatay);
			
			if (sayi == 10 || sayi == 19 || sayi == 28) label.setText(""+dikey);
			if (sayi == 18 || sayi == 27 || sayi == 36) label.setText(""+dikey);
			
			if (sayi == 9) label.setText(""+kose2);
			if (sayi == 37) label.setText(""+kose3);
			if (sayi == 45) label.setText(""+kose4);
			
			if (sayi == 21) label.setText(""+a); 
			if (sayi == 22) label.setText(""+b); 
			if (sayi == 23) label.setText(""+c);
			if (sayi == 24) label.setText(""+d); 
			if (sayi == 25) label.setText(""+e);
			
			if (sayi >= 38 && sayi <=44) label.setText(""+yatay);
		
		}
		
		
		
		Color[] renkler = new Color[20];
		
		renkler[0] = new Color(242, 182, 128); 
		renkler[1] = new Color(217, 206, 197);
		renkler[2] = new Color(255, 212, 218);
		renkler[3] = new Color(236, 255, 195);
		renkler[4] = new Color(164, 242, 255);
		renkler[5] = new Color(206, 232, 205);
		renkler[6] = new Color(180, 200, 230);
		renkler[7] = new Color(240, 219, 178);
		renkler[8] = new Color(169, 217, 217);
		renkler[9] = new Color(248, 200, 255); 
		renkler[10] = new Color(170, 179, 191);
		renkler[11] = new Color(242, 212, 194);
		renkler[12] = new Color(191, 189, 186);
		renkler[13] = new Color(186, 242, 160);
		renkler[14] = new Color(242, 206, 230);
		renkler[15] = new Color(226, 200, 227);
		renkler[16] = new Color(232, 255, 230);
		renkler[17] = new Color(232, 225, 255);
		renkler[18] = new Color(207, 180, 221);
		renkler[19] = new Color(0, 59, 6);  // yesil, label rengi olarak kullandik.
		
		JPanel panel = new JPanel();
		panel.setLayout(new GridLayout());
		panel.setBackground(renkler[r.nextInt(19)]); // 18 e kadar olan renkler[] kullanilir
		
		label.setForeground(renkler[19]); // yesil renk
		label.setVerticalAlignment(JLabel.CENTER);
		label.setHorizontalAlignment(JLabel.CENTER);
		label.setFont(new Font("Verdana", Font.BOLD, 72));
		label.setPreferredSize(new Dimension(150, 150));
	//	label.setBounds(10,10,100,50);
		
		panel.add(label);
		
		return panel;
	}

}
