/*
   Chapter 6.5:   Java MenuSystem
   Programmer:    Brad Shedd
   Date:          July 17, 2006
   Filename:      Menusys.java
   Purpose:       This Program has a working menu system and a large text area.
*/

import java.awt.*;
import java.awt.event.*;
import java.awt.datatransfer.*;
import javax.swing.JOptionPane;

public class Menusys extends Frame implements ActionListener
{
  
private TextField lcd;
  
private boolean clearText;

  
public Menusys()
   {
     
//construct components and initialize beginning values
      lcd = new TextField (600);

     
//create an instance of the menu
      MenuBar mnuBar = new MenuBar();
      setMenuBar(mnuBar);

     
//construct and populate the File menu
      Menu mnuFile = new Menu("File", true);
      mnuBar.add(mnuFile);
         MenuItem mnuFileExit =
new MenuItem("Exit");
         mnuFile.add(mnuFileExit);

     
//construct and populate the Edit menu
      Menu mnuEdit = new Menu("Edit", true);
      mnuBar.add(mnuEdit);
         MenuItem mnuEditClear =
new MenuItem("Clear");
         mnuEdit.add(mnuEditClear);
         mnuEdit.insertSeparator(1);
         MenuItem mnuEditCopy =
new MenuItem("Copy");
         mnuEdit.add(mnuEditCopy);
         MenuItem mnuEditPaste =
new MenuItem("Paste");
         mnuEdit.add(mnuEditPaste);

     
//construct and populate teh About menu
      Menu mnuAbout = new Menu ("About", true);
      mnuBar.add(mnuAbout);
         MenuItem mnuAboutCalculator =
new MenuItem("About Calculator");
         mnuAbout.add(mnuAboutCalculator);

      
//add the ActionListener to each menu item
      mnuFileExit.addActionListener(this);
      mnuEditClear.addActionListener(
this);
      mnuEditCopy.addActionListener(
this);
      mnuEditPaste.addActionListener(
this);
      mnuAboutCalculator.addActionListener(
this);

     
//assign an ActionCommand to each menu item
      mnuFileExit.setActionCommand("Exit");
      mnuEditClear.setActionCommand(
"Clear");
      mnuEditCopy.setActionCommand(
"Copy");
      mnuEditPaste.setActionCommand(
"Paste");
      mnuAboutCalculator.setActionCommand(
"About");

      add(lcd, BorderLayout.CENTER);

      addWindowListener(
        
new WindowAdapter()
            {
           
public void windowClosing(WindowEvent e)
               {
                  System.exit(0);
              }
            }
      );
   }
//endMenusys

   public void actionPerformed(ActionEvent e)
      {
        
//test for menu itme clicks
         String arg = e.getActionCommand();
        
if (arg == "Exit")
            System.exit(0);

        
if (arg == "Clear")
         {
            clearText =
true;
            lcd.setText(
"");
            lcd.requestFocus();
         }

        
if (arg == "Copy")
         {
            Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard();
            StringSelection contents =
new StringSelection(lcd.getText());
            cb.setContents(contents,
null);
         }

     
if (arg == "Paste")
      {
         Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard();
         Transferable content = cb.getContents(
this);
        
try
         {
            String s = (String)content.getTransferData(DataFlavor.stringFlavor);
            lcd.setText(s);
         }
        
catch (Throwable exc)
         {
            lcd.setText(
"");
         }
      }


        
if (arg == "About")
         {
            String message =
"Menusys:\n Giant text box with menus";
            JOptionPane.showMessageDialog(
null,message,"AboutCalculator", JOptionPane.INFORMATION_MESSAGE);
         }
      }

  
public static void main(String args[])
      {
        
// set frame properties
         Menusys f = new Menusys();
         f.setTitle(
"Menusys");
         f.setBounds(50,130,250,300);
         f.setVisible(
true);

      }
//end main
}//end class

Homepage