
/**
 *
 * demonstration of reading from a file
 *
 * Written by: Roger Garside
 *
 * First Written: 23/Jan/97
 * Last Rewritten: 23/Jan/97
 *
 */

import java.awt.* ;
import java.awt.event.* ;
import java.io.* ;

public class Chapter19n4 extends Frame implements ActionListener
    {
    String name ;
    String directory ;

    TextArea area ;
    MenuItem load, quit ;

    /**
     * constructor
     */

    public Chapter19n4()
	{
	// set up basic window
	setTitle("Chapter19n4") ;
        setBackground(Color.green) ;
        setSize(500, 400) ;

	// xset up menu structure
	Menu menu = new Menu("File") ;
	load = new MenuItem("Load") ;
	menu.add(load) ;
        load.addActionListener(this) ;
	quit = new MenuItem("Quit") ;
	menu.add(quit) ;
        quit.addActionListener(this) ;
	MenuBar menuBar = new MenuBar() ;
	menuBar.add(menu) ;
	setMenuBar(menuBar) ;
	name = null ;

	// set up area to display text
	area = new TextArea(10, 50) ;
	add("Center", area) ;
	} // end of constructor method

    /**
     * main
     */

    public static void main(String[] args)
        {
        Chapter19n4 f = new Chapter19n4() ;
        f.setVisible(true) ;
        } // end of main method

    /**
     * actionPerformed
     */

    public void actionPerformed(ActionEvent event)
        {
	// deal with "Quit" button
	if (event.getSource() == quit)
	    {
	    dispose();
	    System.exit(0);
	    }
	// deal with "Load" button
        else if (event.getSource() == load)
	    loadFile() ;
        } // end of method actionPerformed
					 
    /**
     * loadFile
     */

    private void loadFile()
        {
        FileDialog d = new FileDialog(this, "Load File", FileDialog.LOAD) ;
        d.setVisible(true) ;
        name = d.getFile() ;
        directory = d.getDirectory() ;
        try {
            File s = new File(directory, name) ;
	    if (s.isDirectory())
	        {
	        String[] list = s.list() ;
	        String t = "" ;
	        for (int i = 0 ; i < list.length ; i++)
		    t = t + list[i] + "\n" ;
                area.setText(t) ;
	        }
	    else
	        {
	        FileReader s0 = new FileReader(s) ;
	        BufferedReader s1 = new BufferedReader(s0) ;

                String t = "" ;
	        while (true)
	            {
	            String line = s1.readLine() ;
	            if (line == null)
	   	        break ;
	            t = t + line + "\n" ;
	            }
	        s1.close() ;
                area.setText(t) ;
	        }
	    }
        catch(IOException e)
	    {
	    System.err.println("ERROR: " + e) ;
	    }
        } // end of method loadFile
    } // end of class Chapter19n4

