import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class FrameKodu {

	public FrameKodu() {
		
		JFrame frame = new JFrame("068 JFrame Kodu Hazirla!");
		frame.setLayout(null);
		
		Color background = new Color(32, 57, 89);
		
		JPanel panel = new JPanel();
		panel.setLayout(null);
		panel.setBounds(100, 100, 824, 545);
		
		int baslangicX = 50;
		int baslangicY = 30;
		
		int x = baslangicX;
		int y = baslangicY;
		
		int genislik = 225;
		int yukseklik = 30;
		
		int fark = yukseklik+5;
		
		//JFrame degisken ismini aliyoruz.
		JLabel label_VARIABLE = new JLabel("JFrame degisken ismi?");
		label_VARIABLE.setBounds(x, y, genislik, yukseklik);
		
		x = x + genislik;
		
		JTextField field_VARIABLE = new JTextField("frame");
		field_VARIABLE.setBounds(x, y, genislik, yukseklik);
		
		x = baslangicX;
		y = y + fark;
		
		//JFrame baslik.
		JLabel label_TITLE = new JLabel("JFrame basligi nedir?");
		label_TITLE.setBounds(x, y, genislik, yukseklik);
		
		x = x + genislik;
		
		JTextField field_TITLE = new JTextField("068 JFrame Kodu");
		field_TITLE.setBounds(x, y, genislik, yukseklik);
		
		x = baslangicX;
		y = y + fark;
		
		//Layout Managers aliyoruz.
		JLabel label_LAYOUT = new JLabel("setLayout()");
		label_LAYOUT.setBounds(x, y, genislik, yukseklik);
		
		x = x + genislik;
		
		String[] layoutManager= new String[9];

		layoutManager[0] = "null";
		layoutManager[1] = "BorderLayout";
		layoutManager[2] = "BoxLayout";
		layoutManager[3] = "CardLayout";
		layoutManager[4] = "FlowLayout";
		layoutManager[5] = "GridBagLayout";
		layoutManager[6] = "GridLayout";
		layoutManager[7] = "GroupLayout";
		layoutManager[8] = "SpringLayout";
		
		JComboBox combo_LAYOUT=new JComboBox(layoutManager);    
		combo_LAYOUT.setBounds(x, y, genislik, yukseklik);    
	    
		x = baslangicX;
		y = y + fark;
				
		
		//Background rengini aliyoruz.
		JLabel label_BG = new JLabel("getContentPane().setBackground()");
		label_BG.setBounds(x, y, genislik, yukseklik);
		
		x = x + genislik;
		
		JTextField field_BG = new JTextField("242, 203, 5");
		field_BG.setBounds(x, y, genislik, yukseklik);
		
		x = baslangicX;
		y = y + fark;
		
		//Ölçüsünü aliyoruz.
		JLabel label_SIZE = new JLabel("Frame ölçüsü?");
		label_SIZE.setBounds(x, y, genislik, yukseklik);
		
		x = x + genislik;
		
		JTextField field_SIZE = new JTextField("1024, 768");
		field_SIZE.setBounds(x, y, genislik, yukseklik);
		
		x = baslangicX;
		y = y + fark;
		
		//CloseOperation aliyoruz.
		JLabel label_CLOSE = new JLabel("setDefaultCloseOperation()");
		label_CLOSE.setBounds(x, y, genislik, yukseklik);
		
		x = x + genislik;
		
		String[] closeItems= new String[4];

		closeItems[0] = "DO_NOTHING_ON_CLOSE";
		closeItems[1] = "HIDE_ON_CLOSE";
		closeItems[2] = "DISPOSE_ON_CLOSE";
		closeItems[3] = "EXIT_ON_CLOSE";


		JComboBox combo_CLOSE=new JComboBox(closeItems);    
		combo_CLOSE.setBounds(x, y, genislik, yukseklik);    
	    
		x = baslangicX;
		y = y + fark;
		
		//Location aliyoruz.
		JLabel label_LOCATION = new JLabel("setLocationRelativeTo()");
		label_LOCATION.setBounds(x, y, genislik, yukseklik);
		
		x = x + genislik;
		
		JTextField field_LOCATION = new JTextField("null");
		field_LOCATION.setBounds(x, y, genislik, yukseklik);
		
		x = baslangicX;
		y = y + fark;
		
		//setResizable aliyoruz.
		JLabel label_RESIZE = new JLabel("setResizable();");
		label_RESIZE.setBounds(x, y, genislik, yukseklik);
		
		x = x + genislik;
		
		String[] resize= new String[2];

		resize[0] = "true";
		resize[1] = "false";
		
		JComboBox combo_RESIZE=new JComboBox(resize);    
		combo_RESIZE.setBounds(x, y, genislik, yukseklik);   
		
		x = baslangicX;
		y = y + fark;
		
		//setVizible aliyoruz.
		JLabel label_VISIBLE = new JLabel("setVisible();");
		label_VISIBLE.setBounds(x, y, genislik, yukseklik);
		
		x = x + genislik;
		
		String[] visible= new String[2];

		visible[0] = "true";
		visible[1] = "false";
		
		JComboBox combo_VISIBLE=new JComboBox(visible);    
		combo_VISIBLE.setBounds(x, y, genislik, yukseklik);   
		
		x = x + 100;  // Butonun yerini biraz daha saga kaydisiyoruz.
		y = y + fark;
		
		//JButton ekliyoruz.
		JButton button_SHOWTHECODE = new JButton("Show The Code");
		button_SHOWTHECODE.setBounds(x, y, 120, yukseklik);  // Butonun genisligini 120 ayarladik.
		
		button_SHOWTHECODE.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent event) {
				
				String frameName = field_VARIABLE.getText();
				String frameTitle = field_TITLE.getText();
				String frameLayout = (String) combo_LAYOUT.getSelectedItem();
				String frameBackgroundColor = field_BG.getText();
				String frameSize = field_SIZE.getText();
				String frameClose = (String) combo_CLOSE.getSelectedItem();
				String frameLocation = field_LOCATION.getText();
				String frameResize = (String) combo_RESIZE.getSelectedItem();
				String frameVisible = (String) combo_VISIBLE.getSelectedItem();
				
				System.out.println("JFrame " + frameName + " = new JFrame(\"" + frameTitle + "\");");
				System.out.println(frameName + ".setLayout("+frameLayout+");");
				System.out.println(frameName + ".getContentPane().setBackground(new Color("+frameBackgroundColor+"));");
				System.out.println(frameName + ".setSize(" + frameSize + ");");
				System.out.println(frameName + ".setDefaultCloseOperation(JFrame." + frameClose + ");");
				System.out.println(frameName + ".setLocationRelativeTo("+ frameLocation +");");
				System.out.println(frameName + ".setResizable(" + frameResize + ");");
				System.out.println(frameName + ".setVisible(" + frameVisible + ");");
			}
		});

		panel.add(label_VARIABLE);
		panel.add(field_VARIABLE);
		
		panel.add(label_TITLE);
		panel.add(field_TITLE);
		
		panel.add(label_LAYOUT);
		panel.add(combo_LAYOUT);
		
		panel.add(label_BG);
		panel.add(field_BG);
		
		panel.add(label_SIZE);
		panel.add(field_SIZE);
		
		panel.add(label_CLOSE);
		panel.add(combo_CLOSE);
		
		panel.add(label_LOCATION);
		panel.add(field_LOCATION);
		
		panel.add(label_RESIZE);
		panel.add(combo_RESIZE);
		
		panel.add(label_VISIBLE);
		panel.add(combo_VISIBLE);
		
		panel.add(button_SHOWTHECODE);
		
		frame.add(panel);
		
		frame.getContentPane().setBackground(background);
		frame.setSize(1024, 768);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  // https://docs.oracle.com/javase/tutorial/uiswing/components/frame.html
		frame.setLocationRelativeTo(null);
		frame.setResizable(false);
		frame.setVisible(true);
		
	}

}
