// W5frame.java   menu to popup dialog to get input
//                text, integer, float

import java.awt.*;
import java.awt.event.*;
import java.text.*;
import java.io.*;
import javax.swing.*;

public class W5frame extends JFrame
{
  String numStr, result, name;
  int num, again;
  double x, y, z;
  int index, last, len; // for parsing x y z
  boolean debug = false;

  public W5frame()
  {
    setTitle("W5frame");
    setSize(400,300); // can be changed by user
    setBackground(Color.white);
    setForeground(Color.black);

    // create menu bar and attach it to AwtMenuTest window
    JMenuBar bar = new JMenuBar();  
    setJMenuBar(bar);  

    // set up file menu
    JMenu setMenu = new JMenu("Set Value");
    bar.add(setMenu);  // add Set Value menu to menu bar
    // set up File items
    JMenuItem numberItem = new JMenuItem("Number");
    setMenu.add(numberItem);
    JMenuItem viewItem = new JMenuItem("View Angle");
    setMenu.add(viewItem);
    JMenuItem nameItem = new JMenuItem("Name");
    setMenu.add(nameItem);
    JMenuItem applyItem = new JMenuItem("Apply");
    setMenu.add(applyItem);
    JMenuItem quitItem = new JMenuItem("Quit");
    setMenu.add(quitItem);

    // Listners with actions in line
    numberItem.addActionListener(new ActionListener()
      {public void actionPerformed(ActionEvent event)
      { 
        numStr = JOptionPane.showInputDialog(
                 "Give me a number from one to ten.");
        if(numStr==null)
	{
	  System.out.println("cancelled");
	}
        else
        {
          num = Integer.parseInt(numStr);
          System.out.println("Number is "+num);
	}
      }});
    viewItem.addActionListener(new ActionListener()
      {public void actionPerformed(ActionEvent event)
      {
        numStr = JOptionPane.showInputDialog(
                 "Give X Y Z of viewer (one space separated float).");
        if(numStr==null)
	{
	  System.out.println("cancelled");
	}
        else
        { // could use exception handler for bad input
	  index = -1; // start of x
	  if(debug) System.out.println("start x index="+index);
	  last = numStr.indexOf(' ',index+1); // end of x
	  if(debug) System.out.println("last of x ="+last);
	  x = Double.parseDouble(numStr.substring(index+1,last));
	  if(debug) System.out.println("x="+x);
	  index = numStr.indexOf(' ',last); // start of y
	  if(debug) System.out.println("start y index="+index);
	  last = numStr.indexOf(' ',index+1);
	  if(debug) System.out.println("last of y ="+last);
	  y = Double.parseDouble(numStr.substring(index+1,last));
	  if(debug) System.out.println("y="+y);
	  index = numStr.indexOf(' ',last); // start of z
	  if(debug) System.out.println("start z index="+index);
	  last = numStr.length();
	  if(debug) System.out.println("last of z ="+last);
	  z = Double.parseDouble(numStr.substring(index+1,last));
	  if(debug) System.out.println("z="+z);

          System.out.println("View Angle x="+x+", y="+y+", z="+z);
	}
      }});
    nameItem.addActionListener(new ActionListener()
      {public void actionPerformed(ActionEvent event)
      {
        name = JOptionPane.showInputDialog("What is your name?");
        if(name==null)
	{
	  System.out.println("cancelled");
	}
        else
        {
          System.out.println("Name is "+name);
	}
      }});
    applyItem.addActionListener(new ActionListener()
      {public void actionPerformed(ActionEvent event)
      {
        System.out.println("Apply");
      }});
    quitItem.addActionListener(new ActionListener()
      {public void actionPerformed(ActionEvent event)
      {
        System.exit(0);
      }});

    setVisible(true);
    // runs until  quit
  } // end W5frame constructor

  public static void main (String[] args) // no args expected
  {
    new W5frame();
  } // end main
} // end class W5frame

