import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
// DatabaseMusica
    	
public class DatabaseMusica extends JFrame implements ActionListener{
  public JButton salvaButton=new JButton("Salva"); 
    public JButton delButton=new JButton("Cancella");
    public JTextField titolo; // casella di input per il titolo
    public JTextField artista; //casella di input per il nome dell'artista
    public JTextField anno; // casella per l'anno
    public JRadioButton rock; 
    public JRadioButton jazz;
    public JRadioButton pop;
    public JRadioButton classica;
    public JComboBox supporto;
    public String info; // vedi testo				
    public String music;// vedi testo
    public JList brani;
    public DefaultListModel modello;
    private JButton aggiungi; // pulsante per aggiungere brani al JComboBox
    private JButton elimina; // pulsante per eliminare i brani dal JComboBox
    private ButtonGroup gruppo;
      public DatabaseMusica(){
         // costruttore
         setSize(500,400); // dimensiona il frame
         setTitle("Database Musica"); // titolo del frame
         // chiusura del frame    
         addWindowListener(new WindowAdapter(){
           public void WindowClosing(WindowEvent e){
           System.exit(0);
          }});
         /* Costruzione del LAYOUT del frame. Si utilizza il GridBagLayout */

         Container contentPane = getContentPane();
	   aggiungi=new JButton("Aggiungi");		
	   gruppo=new ButtonGroup();
         rock=new JRadioButton("rock",true);
         jazz=new JRadioButton("jazz",true);
         pop=new JRadioButton("pop",true);
         classica=new JRadioButton("classica",true);
         gruppo.add(rock);              
         gruppo.add(jazz);
         gruppo.add(pop);
         gruppo.add(classica);
         JLabel supportpol=new JLabel("supporto",JLabel.LEFT);
         supporto=new JComboBox();
         supporto.setEditable(true);
         supporto.addItem("CD");
         supporto.addItem("Vinile");
         supporto.addItem("Cassette");
         JLabel artistal=new JLabel("Artista",JLabel.LEFT);
         JLabel titolol=new JLabel("Titolo",JLabel.LEFT);
         JLabel supportol=new JLabel("supporto",JLabel.LEFT);
         salvaButton.addActionListener(this);             
         delButton.addActionListener(this);
         titolo=new JTextField(30);                
         artista=new JTextField(30);
         JLabel annol=new JLabel("anno",JLabel.LEFT);
         anno=new JTextField(4);
	   modello=new DefaultListModel();
	   brani=new JList(modello);
	   JScrollPane scrollPane = new JScrollPane(brani);
         JLabel branil=new JLabel("brani",JLabel.LEFT);
	   elimina=new JButton("Elimina");
	   aggiungi.addActionListener(this);				
	   elimina.addActionListener(this);
         GridBagLayout layout = new GridBagLayout();
         contentPane.setLayout(layout);
         GridBagConstraints constraints = new GridBagConstraints();
	   constraints.weightx = 0;
	   constraints.weighty = 0; 
	   constraints.fill = GridBagConstraints.EAST;		      
	   add(titolol, constraints, 0, 0, 1, 1);			
	   add(titolo, constraints, 1, 0, 1, 1);
	   add(artistal, constraints, 0, 1, 1, 1);				
	   add(artista, constraints, 1, 1, 1, 1);
	   add(supportol, constraints, 0, 2, 1, 1);
	   add(supporto, constraints, 1, 2, 1, 1);				
	   add(annol, constraints, 0, 3, 1, 1);		
	   add(anno, constraints, 1, 3, 1, 1);
	   add(rock, constraints, 0, 4, 1, 1);
	   add(jazz, constraints, 1, 4, 1, 1);
	   add(pop, constraints, 0, 5, 1, 1);
	   add(classica, constraints, 1, 5, 1, 1);
	   add(branil, constraints, 0, 6, 1, 1);
	   add(scrollPane, constraints, 1, 6, 1, 1);
         add(aggiungi, constraints, 0, 7, 1, 1);
	   add(elimina, constraints, 1, 7, 1, 1);
         add(salvaButton, constraints, 0, 8, 1, 1);
	   add(delButton, constraints, 1, 8, 1, 1);							
				
      }

      public void actionPerformed(ActionEvent evt){
        Object source=evt.getSource(); // sorgente che ha generato l'evento 
	  String nuovo;
        if(source==salvaButton){
          // è stato premuto il pulsante salva  
          // Si costruiscono le stringhe music e info 
	    music="";
	    info=titolo.getText(); 
	    info+=";"+artista.getText();
	    info+=";"+anno.getText();
	    if (rock.isSelected()) info+=";rock";
	    if (jazz.isSelected()) info+=";jazz";
	    if (pop.isSelected()) info+=";pop";
	    if (classica.isSelected()) info+=";classica";
	    info+=";"+supporto.getSelectedItem();
          System.out.println(info);
	    for(int i=0;i<modello.getSize();i++){
	      music+=modello.getElementAt(i)+"#";
	     }
	    System.out.println(music);																				
        }
	  if(source==delButton){
          // è stato premuto il pulsante cancella 
          // tutti gli oggetti vengono riportati nello stato iniziale (default)
          rock.setSelected(true);
          titolo.setText("");// cancella la casella titolo                       
          artista.setText("");// cancella la casella artista
          anno.setText("");// cancella la casella anno
          // rimuove i brani dall'elenco
	    for(int i=0;i<modello.getSize();i++){
	      modello.removeElement(modello.getElementAt(i));
	    }			
        }
	  if(source==aggiungi){
          /* è stato premuto il tasto aggiungi:
		 viene visualizzato la finestra di dialogo JOptionPane.showInputDialog
             che consentirà di aggiungere un brano all'elenco dei brani 
         */ 
           
	    nuovo=JOptionPane.showInputDialog("Inserisci brano");
	    modello.addElement(nuovo);
          supporto.addItem(supporto.getSelectedItem());
	   }
	   if(source==elimina){
           // è stato premuto il tasto elimina
           // elimina il brano selezionato dall'elenco dei brani 
	     modello.removeElement(brani.getSelectedValue());
	   }		
       }	
	
	public void add(Component c, GridBagConstraints constraints, int x, int y, int w, int h){  
        constraints.gridx = x;//posizione colonna
        constraints.gridy = y;//posizione riga
        constraints.gridwidth = w;//lunghezza colonne
        constraints.gridheight = h;//lunghezza righe
        getContentPane().add(c, constraints);
	}

  public static void main(String[] args){
    JFrame frame = new DatabaseMusica(); // crea l'oggetto frame istanza della classe test6
    frame.show(); // visualizza il frame  
  }
}


