
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.io.*;
import java.util.Scanner;

public class Persontester extends JFrame
{
  private JTextField fnavn, enavn;
  private JButton settInn, vis;
  private JTextArea utskrift;
  private Personmengde mengde;
  private String filnavn = "navneliste.txt";

  public Persontester()
  {
    super( "Personmengde" );
    fnavn = new JTextField( 20 );
    enavn = new JTextField( 20 );
    JPanel navnepanel = new JPanel();
    navnepanel.add( new JLabel( "Fornavn" ) );
    navnepanel.add( fnavn );
    navnepanel.add( new JLabel( "Etternavn" ) );
    navnepanel.add( enavn );

    settInn = new JButton( "Sett inn" );
    vis = new JButton( "Vis mengde" );
    Knappelytter lytter = new Knappelytter();
    settInn.addActionListener( lytter );
    vis.addActionListener( lytter );
    JPanel knappepanel = new JPanel();
    knappepanel.add( settInn );
    knappepanel.add( vis );
    utskrift = new JTextArea( 10, 50 );
    Container c = getContentPane();
    c.add( navnepanel, BorderLayout.NORTH );
    c.add( new JScrollPane( utskrift ), BorderLayout.CENTER );
    c.add( knappepanel, BorderLayout.SOUTH );
    mengde = new Personmengde();
    lesFil();
    pack();
    setVisible( true );
  }

  public void lesFil()
  {
  	BufferedReader innfil = null;
  	try
  	{
  		innfil = new BufferedReader(
  				new FileReader(filnavn));
  		String navn = null;
  		do
  		{
  			navn = innfil.readLine();
  			if (navn != null)
  			{
  				Scanner leser = new Scanner( navn );
    	    leser.useDelimiter("[,\\s]+");
    	    String etternavn = null;
    	    if (leser.hasNext())
    	    	etternavn = leser.next();
    	    String fornavn = null;
    	    if (leser.hasNext())
    	    	fornavn = leser.next();
    	    if ( etternavn != null && fornavn != null)
    	    	mengde.settInn(new Person(fornavn, etternavn));
    	    leser.close();
  			}
  		} while (navn != null);
  		innfil.close();
  	}
  	catch (FileNotFoundException fnf)
  	{
  		JOptionPane.showMessageDialog(this,"Manglende fil",
  				"Finner ikke fil " + filnavn,
  				JOptionPane.WARNING_MESSAGE);
  	}
  	catch (IOException ioe)
  	{
  		JOptionPane.showMessageDialog(this,"Filproblem",
  				"Problem med å lese fra fil " + filnavn,
  				JOptionPane.WARNING_MESSAGE);
  	}
  }

  public void skrivFil()
  {
  	mengde.skrivFil(filnavn);
  }

  public void settInnPerson()
  {
    String fornavn = fnavn.getText();
    String etternavn = enavn.getText();
    if ( !fornavn.equals( "" ) && !etternavn.equals( "" ) )
    {
      mengde.settInn(new Person(fornavn, etternavn));
      fnavn.setText( "" );
      enavn.setText( "" );
      fnavn.requestFocus();
    }
    else
      JOptionPane.showMessageDialog( this,
                                     "Både fornavn og etternavn må skrives!" );
  }

  public void skrivUtListe()
  {
    utskrift.setText( mengde.toString() );
  }

  private class Knappelytter implements ActionListener
  {
    public void actionPerformed( ActionEvent e )
    {
      if ( e.getSource() == settInn )
        settInnPerson();
      else if ( e.getSource() == vis )
        skrivUtListe();
    }
  }
}