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

 /**
   * read for the Wedgie
   *
   * @author Owen Astrachan
   * @see ActionListener
   */
class ReadFileCommand implements ActionListener
{
    /**
      * construct a ReadFileCommand
      *
      * @param con the controller that actually performs the read
      * @param base AWT component used for displaying a wait cursor
      */
    public ReadFileCommand(Controller con,Component widget)
    {
        myController = con;
	myWidget = widget;
	myChooser = new JFileChooser();
    }

    /**
      * performs the read action, sets a wait cursor,
      * asks the controller to read, and the resets the cursor
      */
    public void actionPerformed(ActionEvent ev)
    {
	String filename = getFilename();
	if (filename == null) return;

	myWidget.setCursor(
	    Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
	myController.load("file:"+filename);
	myWidget.setCursor(
	    Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));	
    }

    private String getFilename()
    {
	int retval = myChooser.showOpenDialog(myWidget);
	if (retval == JFileChooser.APPROVE_OPTION)
	{
	    try {
		return myChooser.getSelectedFile().getCanonicalPath();
	    }
	    catch (IOException e) {
		return null;
	    }
	}
	return null;
    }

    private Controller myController;
    private Component  myWidget;
    private JFileChooser myChooser;
}
