import java.awt.event.*;
import java.applet.*;
import java.awt.*;
import java.io.*;
import java.net.*;

public class ImportDataDialog extends Dialog implements ActionListener {

  private   GraphWindow gw;
  Label     label1,label2;
  Button    browsebutton;
  TextField text1,text2;
  Button    okButton,cancelButton;
  String    value1,value2;


  public ImportDataDialog(GraphWindow parent) {
      super(parent,"Import Dialog",true); // model dialog
      gw = parent;
      value1=new String("");
      value2=new String("");
      label1=new Label("import dir");
      label2=new Label("proper url");
      text1=new TextField(10);
      text2=new TextField(10);
      okButton=new Button("OK");
      cancelButton=new Button("Cancel");
      browsebutton = new Button("Browse...");
      setLayout(new BorderLayout() );

      Panel p1=new Panel();
      p1.setLayout(new GridLayout(2,3,0,5) );
      p1.add(label1);
      p1.add(text1);
      p1.add(browsebutton);
      p1.add(label2);
      p1.add(text2);


      Panel p2=new Panel();
      p2.setLayout(new FlowLayout(FlowLayout.CENTER));
      p2.add(okButton);
      p2.add(cancelButton);

      // add event listeners
      okButton.addActionListener(this);
      cancelButton.addActionListener(this);
      browsebutton.addActionListener(this);

      //text2.addActionListener(this);

      this.setEnabled(true);
      text1.setEnabled(true);  // enable editing of text1

      this.add(p1,"North");
      this.add(p2,"South");
      this.setBounds(0,0,200,100);
      this.pack();

      //this.show();
  }

  public void actionPerformed(ActionEvent e) {

    //public boolean action(Event event, Object object) {
     Object esource=e.getSource();
    //Object esource=event.target;
    if (esource == browsebutton) {
        FileDialog filedialog = new FileDialog(this.gw,"Select Import dir",FileDialog.LOAD);
        filedialog.setDirectory(".");
        filedialog.show();
        value1=filedialog.getDirectory();
        text1.setText(value1);
        return;
    }
    else if ( esource == okButton) {
        // error checking and setting the value
        if (checkValid()) this.setVisible(false);
        return;// true;
    }  else if (esource == cancelButton) {
        value1=null;
        value2=null;
        this.setVisible(false);
        return ;//true;
     }
   return;// false;

  }

  private boolean checkValid() {
        value1=text1.getText().trim();
        if ( value1.equals("") ) {gw.showError("Empty import dir."); return false;}
        File testfile = new File(value1);
        if (!testfile.exists()) {gw.showError(value1 + " does not exist."); return false;}
        value2=text2.getText().trim();
        if (!value2.equals("")) {
            /// check URL valid
            try {
              URL testurl = new URL(value2);
            } catch (MalformedURLException e) {
                gw.showError(value2 + " is not a valid URL.");
                return false;
            }
        }
        return true;
  }
  // callback for external data-fetching use

  public String getValue1() {
    return value1;

  }

  public String getValue2() {
    return value2;
  }


}