import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;

public class BorderLayoutSehirResimleri {

	public static JFrame frame;
	public static JPanel panelMerkez;
	public static JPanel panelDogu;
	
	public BorderLayoutSehirResimleri() {
		frame = new JFrame("BorderLayout Sehir Resimleri JScrollPane | Java Blackboard [122]");
		
		BorderLayout borderLayout = new BorderLayout();
		borderLayout.setHgap(15);
		borderLayout.setVgap(15);
		
		frame.setLayout(borderLayout);
		
		JPanel panelKuzey = new JPanel();
		
		panelKuzey.setPreferredSize(new Dimension(100, 100));
		panelKuzey.setBackground(new Color(75, 191, 115));
		
		panelKuzey.add(baslikPaneli());
		
		JPanel panelGuney = new JPanel();
		panelGuney.setPreferredSize(new Dimension(50, 50));
		panelGuney.setBackground(new Color(175, 191, 115));
		
		panelDogu = new JPanel();
		panelDogu.setLayout(new FlowLayout());
		panelDogu.setPreferredSize(new Dimension(250, 250));
		panelDogu.setBackground(new Color(217, 94, 50));
		
		JPanel panelBati = new JPanel();
		panelBati.setPreferredSize(new Dimension(190, 10));
		panelBati.setBackground(new Color(245, 222, 131));
		
		panelBati.add(butonPaneli());
		
		JLabel labelInfo = new JLabel("Sehir Bilgileri");
		JLabel labelResim = new JLabel("Sehir Fotografi");
		
		panelMerkez = new JPanel();
		// PanelMerkez JPanel'inin boyutunu ayarlayalım
		panelMerkez.setPreferredSize(new Dimension(550, 600)); // İstediğiniz boyutu verebilirsiniz
		panelMerkez.setLayout(new FlowLayout());
		panelMerkez.setBackground(new Color(242, 184, 75));
		
		panelMerkez.add(labelInfo);
		panelDogu.add(labelResim);
		
		// JScrollPane'i oluşturup panelMerkez'e ekleyelim
		JScrollPane scrollPane = new JScrollPane(panelMerkez);
		scrollPane.setPreferredSize(panelMerkez.getPreferredSize()); // Boyutları eşleştirelim

		// JScrollPane'in taşma davranışını ayarlayalım
		scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
		scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
		
		frame.add(panelKuzey, BorderLayout.NORTH);
		frame.add(panelGuney, BorderLayout.SOUTH);
		frame.add(panelDogu, BorderLayout.EAST);
		frame.add(panelBati, BorderLayout.WEST);
		
		
	//	frame.add(panelMerkez, BorderLayout.CENTER);

		// JScrollPane'i frame'e ekleyin
		frame.add(scrollPane, BorderLayout.CENTER);
		
		frame.setSize(1024, 768);
        frame.setLocationRelativeTo(null);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setResizable(true);
        frame.setVisible(true);
	}

	public static JPanel baslikPaneli() {
		
		int genislik = 700;
		
		JPanel panel = new JPanel();
		panel.setLayout(new FlowLayout());
		panel.setPreferredSize(new Dimension(genislik, 100));
		
		// Panelin arka plan rengini saydam yapalim.
	    panel.setOpaque(false);
       
		JLabel label = new JLabel();
		label.setFont(new Font("Helvetica", Font.BOLD, 50));
		label.setPreferredSize(new Dimension(genislik, 100));
		label.setText("Sehirler Info");
	
		// Yatay ve dikey hizalamayı ayarla
        label.setHorizontalAlignment(JLabel.CENTER);
        label.setVerticalAlignment(JLabel.CENTER);
		
		panel.add(label);
		
		return panel;
	}
	
	public static JPanel butonPaneli() {
		
		JPanel panel = new JPanel();
		panel.setLayout(new FlowLayout());
		panel.setPreferredSize(new Dimension(190, 500));
		panel.setOpaque(false); // Zemin rengini transparan yap.
		
		JButton butonIstanbul = new JButton("Istanbul");
		butonIstanbul.setSize(100, 25);
		
		JButton butonAfyon = new JButton("Afyonkarahisar");
		butonAfyon.setSize(100, 25);
		
		JButton butonAnkara = new JButton("Ankara");
		butonAnkara.setSize(100, 25);
		
		panel.add(butonIstanbul);
		panel.add(butonAfyon);
		panel.add(butonAnkara);
		
		butonIstanbul.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
            	
            	panelDogu.removeAll();
                panelDogu.add(sehirFotografi("istanbul.jpg"));
                panelDogu.revalidate();
                
            	panelMerkez.removeAll();
            	
            	// JFrame'in arka plan rengini degistirmek istersek.
            //	Color bordoRGB = new Color(115, 23, 2);
            //	frame.getContentPane().setBackground(bordoRGB);
                
             // Merkez bölgesinin arka plan rengini mavi yap
            	Color maviRGB = new Color(48, 155, 222);
                panelMerkez.setBackground(maviRGB);
                
                panelMerkez.add(sehirIsmi("Istanbul"));
                panelMerkez.add(sehirPlakaKod("34", "(212) (216)"));
                panelMerkez.add(sehirNufus("15.907.951"));
                panelMerkez.add(sehirYuzolcumu("5,461 km²"));
                panelMerkez.add(sehirIlceSayisi("39"));
                                
                panelMerkez.revalidate();  // Merkez Panel yeniden cagiriliyor.
                   
                
            }
        });
		
		butonAfyon.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
            	
            	panelDogu.removeAll();
                panelDogu.add(sehirFotografi("afyonkarahisar.jpg"));
                panelDogu.revalidate();
                
            	panelMerkez.removeAll();
            	
            	// JFrame'in arka plan rengini degistirmek istersek.
            	Color sariRGB = new Color(242, 190, 92);
            //	frame.getContentPane().setBackground(sariRGB);
                
             // Merkez bölgesinin arka plan rengini yesil yap
            	Color yesilRGB = new Color(48, 140, 88);
                panelMerkez.setBackground(yesilRGB);
                
                panelMerkez.add(sehirIsmi("Afyonkarahisar"));
                panelMerkez.add(sehirPlakaKod("03", "(272)"));
                panelMerkez.add(sehirNufus("747.555"));
                panelMerkez.add(sehirYuzolcumu("14.230,00 km²"));
                panelMerkez.add(sehirIlceSayisi("17"));
                
                panelMerkez.revalidate();
            }
        });
		
		butonAnkara.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
            	
            	panelDogu.removeAll();
                panelDogu.add(sehirFotografi("ankara.jpg"));
                panelDogu.revalidate();
                
            	panelMerkez.removeAll();
            	
            	// JFrame'in arka plan rengini degistirmek istersek.
            	Color sariRGB = new Color(242, 190, 92);
            //	frame.getContentPane().setBackground(sariRGB);
                
             // Merkez bölgesinin arka plan rengini Kirmizimsi yap
            	Color kirmizimsiRGB = new Color(242, 93, 7);
                panelMerkez.setBackground(kirmizimsiRGB);
                
                panelMerkez.add(sehirIsmi("Ankara"));
                panelMerkez.add(sehirPlakaKod("06", "(312)"));
                panelMerkez.add(sehirNufus("5.782.285"));
                panelMerkez.add(sehirYuzolcumu("25.706,00 km²"));
                panelMerkez.add(sehirIlceSayisi("25"));
                
                panelMerkez.revalidate();
            }
        });
		
		return panel;
	}
	
	public static JPanel sehirIsmi(String sehirAd) {
		
		JPanel panel = new JPanel();
		panel.setPreferredSize(new Dimension(540, 100));
		panel.setBackground(new Color(204, 234, 252));
		
	//	panel.setOpaque(false);
	       
		JLabel label = new JLabel();
		label.setFont(new Font("Helvetica", Font.BOLD, 70));
		label.setPreferredSize(new Dimension(540, 100));
		label.setText(sehirAd);
		
		// Yatay ve dikey hizalamayı ayarla
        label.setHorizontalAlignment(JLabel.CENTER);
        label.setVerticalAlignment(JLabel.CENTER);
		
		panel.add(label);
		
		
		return panel;
		
	}
	
	public static JPanel sehirPlakaKod(String plaka, String telefonKodu) {
		
		JPanel panel = new JPanel();
		panel.setPreferredSize(new Dimension(540, 100));
		panel.setBackground(new Color(221, 252, 204));
		
	//	panel.setOpaque(false);
	       
		JLabel label = new JLabel();
		label.setFont(new Font("Helvetica", Font.BOLD, 70));
		label.setPreferredSize(new Dimension(540, 100));
		label.setText(plaka + " - " + telefonKodu);
		
		// Yatay ve dikey hizalamayı ayarla
        label.setHorizontalAlignment(JLabel.CENTER);
        label.setVerticalAlignment(JLabel.CENTER);
		
		panel.add(label);
		
		
		return panel;
		
	}
	
	public static JPanel sehirNufus(String sehirPopulasyon) {
		
		JPanel panel = new JPanel();
		panel.setPreferredSize(new Dimension(540, 100));
		panel.setBackground(new Color(252, 232, 204));
		
	//	panel.setOpaque(false);
	       
		JLabel label = new JLabel();
		label.setFont(new Font("Helvetica", Font.BOLD, 90));
		label.setPreferredSize(new Dimension(540, 100));
		label.setText(sehirPopulasyon);
		
		// Yatay ve dikey hizalamayı ayarla
        label.setHorizontalAlignment(JLabel.CENTER);
        label.setVerticalAlignment(JLabel.CENTER);
		
		panel.add(label);
		
		
		return panel;
		
	}
	
	public static JPanel sehirYuzolcumu(String sehirAlan) {
		
		JPanel panel = new JPanel();
		panel.setPreferredSize(new Dimension(540, 100));
		panel.setBackground(new Color(252, 217, 252));
		
	//	panel.setOpaque(false);
	       
		JLabel label = new JLabel();
		label.setFont(new Font("Helvetica", Font.BOLD, 80));
		label.setPreferredSize(new Dimension(540, 100));
		label.setText(sehirAlan);
		
		// Yatay ve dikey hizalamayı ayarla
        label.setHorizontalAlignment(JLabel.CENTER);
        label.setVerticalAlignment(JLabel.CENTER);
		
		panel.add(label);
		
		
		return panel;
		
	}
	
	public static JPanel sehirIlceSayisi(String sehirIlce) {
		
		JPanel panel = new JPanel();
		panel.setPreferredSize(new Dimension(540, 100));
		panel.setBackground(new Color(253, 244, 231));
		
	//	panel.setOpaque(false);
	       
		JLabel label = new JLabel();
		label.setFont(new Font("Helvetica", Font.BOLD, 100));
		label.setPreferredSize(new Dimension(540, 100));
		label.setText(sehirIlce);
		
		// Yatay ve dikey hizalamayı ayarla
        label.setHorizontalAlignment(JLabel.CENTER);
        label.setVerticalAlignment(JLabel.CENTER);
		
		panel.add(label);
		
		
		return panel;
		
	}
	
	public static JLabel sehirFotografi(String resimDosyasi) {
		
	//	ImageIcon ile resmi yükleyin
	    ImageIcon imageIcon = new ImageIcon("src/images/" + resimDosyasi);

	// 	ImageIcon'i JLabel içinde gösteren bir JLabel oluşturun
	    JLabel label = new JLabel(imageIcon);
	    
	    // Eğer resmi JLabel içinde boyutlandırmak istiyorsanız, aşağıdaki kodu kullanabilirsiniz:
	    // Bizim örnegimizde boyutlandirmaya gerek duymuyoruz.
	    // Görüntü yeterli.
	    
	// 	label.setPreferredSize(new Dimension(100, 100)); // Genişlik ve yükseklik ayarları

			
		return label;
	}
	
	public static void main(String[] args) {
		
		new BorderLayoutSehirResimleri();

	}

}
