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

import javax.swing.*;

/**
	
	Java Blackbourd YouTube kanali.
	
	Ders : 056
	
	BorderLayout ve GridLayout kullanimi
	Takvim görüntüsü düzenleme ve haftanin gunlerini ekleme. Butun yil ile...
 	
*/

public class BorderLayoutGridLayoutTakvim extends JFrame implements ActionListener {

	String[] aylar = {"Boş...", "OCAK 2022 (7X7)", "ŞUBAT 2022 (7X7)", "MART 2022 (7X7)", "NİSAN 2022 (7X7)",
			"MAYIS 2022 (7X7)", "HAZİRAN 2022 (7X7)", "TEMMUZ 2022 (7X7)", "AĞUSTOS 2022 (7X7)", 
			"EYLÜL 2022 (7X7)", "EKİM 2022 (7X7)", "KASIM 2022 (7X7)", "ARALIK 2022 (7X7)"} ;
	
	JComboBox comboListe = new JComboBox(aylar);
	
	JLabel label = new JLabel("Açılış: Ay seç!");
	
	JPanel panel = new JPanel();
	
	public BorderLayoutGridLayoutTakvim()  {

		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("2022 Takvimi hafta gunleriyle. Java Blackboard [ 056 ]");
		setLocationRelativeTo(null); // Ekran ortasina ortalar.
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setVisible(true);
		
		
	}

	public void actionPerformed(ActionEvent e) {
		
		if(e.getSource() == comboListe) {
			
			JComboBox cb = (JComboBox) e.getSource();
			String madde = (String) cb.getSelectedItem();
			
			switch (madde) {
			
			case "OCAK 2022 (7X7)" : 
				
				label.setText("OCAK 2022");
				
				panel.removeAll();
				panel.setLayout(new GridLayout());
				panel.add(pastelRenkliPanel(1));
				
				add(panel);
				revalidate();
				
			break;
			
			case "ŞUBAT 2022 (7X7)" : 
				
				label.setText("ŞUBAT 2022");
				
				panel.removeAll();
				panel.setLayout(new GridLayout());
				panel.add(pastelRenkliPanel(2));
				
				add(panel);
				revalidate();
				
			break;
			
			case "MART 2022 (7X7)" : 
				
				label.setText("MART 2022");
				
				panel.removeAll();
				panel.setLayout(new GridLayout());
				panel.add(pastelRenkliPanel(3));
				
				add(panel);
				revalidate();
				
			break;
			
			case "NİSAN 2022 (7X7)" : 
				
				label.setText("NİSAN 2022");
				
				panel.removeAll();
				panel.setLayout(new GridLayout());
				panel.add(pastelRenkliPanel(4));
				
				add(panel);
				revalidate();
					
				break;
				
				case "MAYIS 2022 (7X7)" : 
				
				label.setText("MAYIS 2022");
				
				panel.removeAll();
				panel.setLayout(new GridLayout());
				panel.add(pastelRenkliPanel(5));
				
				add(panel);
				revalidate();
					
			break;
				
			case "HAZİRAN 2022 (7X7)": 
				
				label.setText("HAZİRAN 2022");
					
				panel.removeAll();
				panel.setLayout(new GridLayout());
				panel.add(pastelRenkliPanel(6));
				
				add(panel);
				revalidate();
					
			break;
				
			case "TEMMUZ 2022 (7X7)" : 
			
				label.setText("TEMMUZ 2022");
				
				panel.removeAll();
				panel.setLayout(new GridLayout());
				panel.add(pastelRenkliPanel(7));
					
				add(panel);
				revalidate();
						
			break;
					
			case "AĞUSTOS 2022 (7X7)" : 
				
				label.setText("AĞUSTOS 2022");
				
				panel.removeAll();
				panel.setLayout(new GridLayout());
				panel.add(pastelRenkliPanel(8));
					
				add(panel);
				revalidate();
						
			break;
					
			case "EYLÜL 2022 (7X7)" : 
				
				label.setText("EYLÜL 2022");
					
				panel.removeAll();
				panel.setLayout(new GridLayout());
				panel.add(pastelRenkliPanel(9));
					
				add(panel);
				revalidate();
						
			break;
					
			case "EKİM 2022 (7X7)" : 
				
				label.setText("EKİM 2022");
				
				panel.removeAll();
				panel.setLayout(new GridLayout());
				panel.add(pastelRenkliPanel(10));
					
				add(panel);
				revalidate();
						
			break;
					
			case "KASIM 2022 (7X7)" : 
				
				label.setText("KASIM 2022");
					
				panel.removeAll();
				panel.setLayout(new GridLayout());
				panel.add(pastelRenkliPanel(11));
					
				add(panel);
				revalidate();
						
			break;
				
			case "ARALIK 2022 (7X7)" : 
				
				label.setText("ARALIK 2022");
				
				panel.removeAll();
				panel.setLayout(new GridLayout());
				panel.add(pastelRenkliPanel(12));
				
				add(panel);
				revalidate();
					
			break;
										
			default : 
				
				label.setText("Olmayan bi'ay seçildi...");
				
				panel.removeAll();
				panel.setLayout(new GridLayout());
				panel.add(pastelRenkliPanel(-1));
				
				add(panel);
				revalidate();
			
			}
		}
		
	}
	
	public JPanel pastelRenkliPanel(int ay) {
		
		String[] aylar = new String[13]; // 12 ay var ama bir tane de SIFIRIMIZ var o da Bos.. için
		aylar[0] = "Bos...";
		aylar[1] = "OCAK";
		aylar[2] = "SUBAT";
		aylar[3] = "MART";
		aylar[4] = "NISAN";
		aylar[5] = "MAYIS";
		aylar[6] = "HAZIRAN";
		aylar[7] = "TEMMUZ";
		aylar[8] = "AGUSTOS";
		aylar[9] = "EYLÜL";
		aylar[10] = "EKIM";
		aylar[11] = "KASIM";
		aylar[12] = "ARALIK";
		
		String[] gunler = new String[7];
		gunler[0] = "Pazartesi";
		gunler[1] = "Salı";
		gunler[2] = "Çarşamba";
		gunler[3] = "Perşembe";
		gunler[4] = "Cuma";
		gunler[5] = "Cumartesi";
		gunler[6] = "Pazar";
		
		int[] gunAdedi = new int[13]; // 12 ay var ama bir tane de SIFIRIMIZ var o da Bos.. için
		gunAdedi[0] = 0;
		gunAdedi[1] = 31;
		gunAdedi[2] = 28;
		gunAdedi[3] = 31;
		gunAdedi[4] = 30;
		gunAdedi[5] = 31;
		gunAdedi[6] = 30;
		gunAdedi[7] = 31;
		gunAdedi[8] = 31;
		gunAdedi[9] = 30;
		gunAdedi[10] = 31;
		gunAdedi[11] = 30;
		gunAdedi[12] = 31;
		
		int[] ayinIlkGunu = new int[13]; // 12 ay var ama bir tane de SIFIRIMIZ var o da Bos.. için
		ayinIlkGunu[0] = 0;
		ayinIlkGunu[1] = 6;
		ayinIlkGunu[2] = 2;
		ayinIlkGunu[3] = 2;
		ayinIlkGunu[4] = 5;
		ayinIlkGunu[5] = 7;
		ayinIlkGunu[6] = 3;
		ayinIlkGunu[7] = 5;
		ayinIlkGunu[8] = 1;
		ayinIlkGunu[9] = 4;
		ayinIlkGunu[10] = 6;
		ayinIlkGunu[11] = 2;
		ayinIlkGunu[12] = 4;
		
		Color[] renkler = new Color[10];
		
		renkler[0] = new Color(242, 234, 228); 	// gun acik renk
		renkler[1] = new Color(217, 210, 204); 	// gun koyu renk
		renkler[2] = new Color(115, 108, 99);  	// gun yazi rengi
		renkler[3] = new Color(213, 229, 242);	// Ay acik renk
		renkler[4] = new Color(163, 186, 217);	// Ay koyu renk
		renkler[5] = new Color(34, 47, 64);		// Ay sayilar
		renkler[6] = new Color(224, 198, 215); 	// Bos açik renk
		renkler[7] = new Color(204, 161, 180); 	// Bos koyu renk
		renkler[8] = new Color(255, 238, 88);	// Acik Sari
		renkler[9] = new Color(251, 192, 45); 	// Koyu sari
		
		JPanel panel = new JPanel();
		panel.setLayout(new GridLayout(7,7));
		
		JPanel[] hucrePanel = new JPanel[49];
		for (int i=0; i<49; i++ ) {
			hucrePanel[i] = new JPanel();
			hucrePanel[i].setLayout(new BorderLayout());
		}
		
		JLabel[] label = new JLabel[49];
		for (int i=0; i<49; i++ ) label[i] = new JLabel();
		
		for (int i=0; i<49; i++ ) {
		
			if (ay==-1) {  // Olmayan ay seçildiyse -1 geliyor parametre olarak...
				
				if (i<7) { 
					
					// Olmayan Ay seçimi için Haftanin gunlerini ekliyoruz ilk satira.
					
					label[i].setText(gunler[i]);;
					label[i].setForeground(renkler[2]);
					
					label[i].setFont(new Font("Verdana", Font.PLAIN, 19));
					
					hucrePanel[i].setBackground(i%2 == 0 ? renkler[1] : renkler[0]);
				
				} else {  
					
					// Diger bütün bos gunlerini ekliyoruz.
					
					label[i].setText("");
					
					hucrePanel[i].setBackground(i%2 == 0 ? renkler[7] : renkler[6]);
					
					
				}
			} else if (i<7) { 
				
				// Haftanin gunlerini ekliyoruz ilk satira.
				
				label[i].setText(gunler[i]);;
				label[i].setForeground(renkler[2]);
				
				label[i].setFont(new Font("Verdana", Font.PLAIN, 19));
				
				hucrePanel[i].setBackground(i%2 == 0 ? renkler[1] : renkler[0]);
			
			} else if (i<=(7+ayinIlkGunu[ay])-2 || (i>=(gunAdedi[ay]+7+ayinIlkGunu[ay])-1)) {  
				
				// Ayin basindaki ve sonundaki bos gunlerini ekliyoruz.
				
				label[i].setText("");
				
				hucrePanel[i].setBackground(i%2 == 1 ? renkler[3] : renkler[4]);
				
				
			}  else if (i>(7+ayinIlkGunu[ay]) || i<=(gunAdedi[ay]+7+ayinIlkGunu[ay]) ) {
				
				// Ayin kendi gunlerini ekliyoruz.
				
				int x = 7+ayinIlkGunu[ay]-2;
				
				label[i].setText(""+(i-x));
				label[i].setFont(new Font("Verdana", Font.BOLD, 51));
			
				hucrePanel[i].setBackground(i%2 == 1 ? renkler[3] : renkler[4]);
				
				
			} 
			
			label[i].setPreferredSize( new Dimension(100,70) );
			label[i].setHorizontalAlignment( SwingConstants.CENTER );
			hucrePanel[i].add(label[i], BorderLayout.CENTER);
			
			hucrePanel[i].add(label[i]);
		}
		
		for (int i=0; i<49; i++) panel.add(hucrePanel[i]);
		
		return panel;
	}

}





