import java.io.*;
import javax.swing.*;
import java.awt.event.*;
import java.math.BigDecimal;
import java.util.*;
import static java.awt.BorderLayout.*;


public class CarrelloFrame extends JFrame implements Observer {
  private Carrello carrello;
  private File carrelloFile;
  private DefaultListModel listModel = new DefaultListModel();
  private JList listaArticoli = new JList(listModel);
  private JPanel totalePanel = new JPanel();
  private JLabel totLabel = new JLabel("Totale euro:");
  private JTextField campoTotale;
  
  
  public CarrelloFrame(Carrello carr) {
    super("Carrello spesa");
    carrello = carr;
    campoTotale = new JTextField(carrello.totaleSpesa().toString());
    JButton bottone = new JButton("Togli articolo"); 
    totalePanel.add(totLabel);
    totalePanel.add(campoTotale);
    totalePanel.add(bottone);
    add(listaArticoli, NORTH);
    add(totalePanel, SOUTH);
    setBounds(300,300,400,400);
    carrello.addObserver(this);
    bottone.addActionListener(bottoneListener);
    listaArticoli.addKeyListener(keyListener);  
  }
  
  private ActionListener bottoneListener =
    new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        int i = listaArticoli.getSelectedIndex();
        if(i != -1) carrello.eliminaArticolo(i);
      }
    };
    
  private KeyListener keyListener =   
    new KeyAdapter() {
      public void keyReleased(KeyEvent kev) {
        int i = listaArticoli.getSelectedIndex();
        if(kev.getKeyCode() == KeyEvent.VK_DELETE && i != -1)
          carrello.eliminaArticolo(i);
      }
    };  

  public void update(Observable o, Object arg) {
    campoTotale.setText(carrello.totaleSpesa().toString());
    if(arg instanceof String)
    listModel.addElement((String)arg);
    else {
      Integer i = (Integer)arg;
      listModel.removeElementAt(i);
    }
  }
          
}