/* 
primo programma di prova
questo programma  vi insegnerà
creare un form nella GUI 
*/

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.sql.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
class SwingDemo1 { 



	
	SwingDemo1 () {

		String DB_URL = "jdbc:mysql://127.0.0.1:3306/marco";
		String USER = "root";
		String PASS = "AmUnAKTRA76@";

		
		// Crea un nuovo contenitore JFrame"Una semplice swing application"
		JFrame jfr = new JFrame("Una semplice swing application");
		
		//jfr.setBouds(100,100,100,100);
				
		//Fornisce le dimensioni iniziali
		jfr.setSize(800,600);

		//Fornisce la posizione sullo schermo
		jfr.setLocation(200,200);

		//Termina il programma quando l'utente chiude la finestra
		jfr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	
		//Crea una label che conterra' tutti gli elementi
		JLabel jlab = new JLabel("Hello world this is me");

		//La aggiungo al form
		jlab.setLocation(10,10);
		jlab.setSize(800,600);
		jfr.add(jlab);

        // 1. Creazione componenti
        JTextField campoTesto = new JTextField(20); // 20 colonne di larghezza
        campoTesto.setSize(200,20);
		campoTesto.setLocation(10,30);
		
        // 1. Creazione componenti
        JTextField campoTesto1 = new JTextField(20); // 20 colonne di larghezza
        campoTesto1.setSize(200,20);
		campoTesto1.setLocation(10,60);

		JComboBox combo = new JComboBox();
		combo.setSize(200,20);
		combo.setLocation(10,100);

		
		JButton bottone = new JButton("Saluta");
		bottone.setSize(100,60);
		bottone.setLocation(10,150);

		JTextField campoTesto3 = new JTextField(20); // 20 colonne di larghezza
        campoTesto3.setSize(200,20);
		campoTesto3.setLocation(10,220);

		JButton bottone2 = new JButton("Memorizza");
		bottone2.setSize(100,60);
		bottone2.setLocation(10,300);
	
		//aggiunta action lister per il bottone
		bottone.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent ae) {
				campoTesto1.setText(campoTesto.getText()+" Pippo");
			}
		});
		
		combo.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
			// Recupera l'oggetto selezionato
			campoTesto1.setText("Zio "+(String)combo.getSelectedItem());
			}
		});


		try {		
		Connection conn = DriverManager.getConnection(DB_URL,USER,PASS);
        Statement stmt = conn.createStatement();
        ResultSet rs = stmt.executeQuery("SELECT * FROM tab1;");
			System.out.println("Connessione al database riuscita!");
			 // Processa il ResultSet
            while (rs.next()) {
                // Esempio di lettura dati:
                combo.addItem(rs.getString("nome")); //,Integer.parseInt(rs.getString("id")));
            }
		} catch (SQLException e) {
			System.err.println("Errore di connessione al database:");
            e.printStackTrace();
		}

		//aggiunta action lister per il bottone
		bottone2.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent ae) {
		//		//campoTesto1.setText(campoTesto.getText()+" Pippo");
		//		try {		
		//		Connection conn = DriverManager.getConnection(DB_URL,USER,PASS);
		//		Statement stmt = conn.createStatement();
				String sql = "INSERT INTO tab1 (nome) VALUES ( ? );";
		//		}
						
			String sql2 = "INSERT INTO tab1 (nome) VALUES ( ? );";
		
			try (Connection con = DriverManager.getConnection(DB_URL,USER,PASS);
				PreparedStatement pstmt = con.prepareStatement(sql2)) {

				// Impostazione dei parametri
				pstmt.setString(1,campoTesto.getText()); // Primo '?'

				// Esecuzione dell'inserimento
				int righeInserite = pstmt.executeUpdate();
				System.out.println("Righe inserite: " + righeInserite);

			} catch (SQLException e) {
				e.printStackTrace();
			}



			}
		});



// 2. Aggiunta componenti al pannellino label non al frame 

        jlab.add(campoTesto);
		jlab.add(campoTesto1);
 		jlab.add(combo);
		jlab.add(bottone);
		jlab.add(campoTesto3);
		jlab.add(bottone2);
	
		// visualizza il frame
		jfr.setVisible(true);

	}

	// chiamata a main
	public static void main(String args[]) {
		// Crea una frame sul thread di esecuzione
		SwingUtilities.invokeLater(new Runnable() {
			public void run ()	{
				new SwingDemo1();
			}
		});
	}

}