
import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;
import java.net.*;
import java.util.Vector;
import java.io.*;

/**
 * Ein Applet, welches Daten vom Server nachlädt und 
 * anzeigt.
 * @author  Mark Donnermeyer
 */
public class AppletGetData extends java.applet.Applet implements ActionListener {
    
    Vector names;
    Button nextButton, prevButton;
    TextField name;
    int index = 0;
    
    public void init() {

        setBackground(Color.white);

        Panel buttons = new Panel(new FlowLayout(FlowLayout.CENTER));
        nextButton = new Button("weiter");
        prevButton = new Button("zurück");
        nextButton.setActionCommand("next");
        nextButton.addActionListener(this);
        prevButton.setActionCommand("prev");
        prevButton.addActionListener(this);
        buttons.add(prevButton);
        buttons.add(nextButton);

        name = new TextField();
        name.setEnabled(false);
        setLayout(new BorderLayout());
        add("Center", name);
        add("South", buttons);
        
        URL baseUrl, datenUrl;
        baseUrl = getCodeBase();
        try {
            // URL aus Parameter lesen und seinen Inhalt
            // in einen Vector schreiben
            datenUrl = new URL(baseUrl, getParameter("url"));
            names = getNames(datenUrl);
        }
        catch (Exception e) {}
    }
    
    /**
     * Die Namen werden aus der URL ausgelesen. Jeder Name
     * steht in einer eigenen Zeile auf der HTML-Seite
     */
    protected Vector getNames(URL url) throws IOException
    {
        Vector vector = new Vector();
		BufferedReader in = new BufferedReader(
				new InputStreamReader( url.openStream()));

		String inputLine;
		while ((inputLine = in.readLine()) != null)
	    	vector.addElement(inputLine);

		in.close();     
        return vector;
    }
    
    /**
     * Den nächsten oder vorhergehenden Namen anzeigen.
     */
    public void actionPerformed(ActionEvent e) {
        if ("next".equals(e.getActionCommand()))
            index++;
        else
            index--;
        if (index < 0) index = names.size()-1;
        if (index >= names.size()) index = 0;
        name.setText((String)names.elementAt(index));
    }
    
}
