

//import the packages for using the classes in them into the program
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.undo.*;

/**
 *A PUBLIC CLASS FOR NOTEPAD.JAVA
 */
public class Notepad extends JFrame{
    //for using the methods in these classes
    public Actions actions = new Actions(this);
    public Center center = new Center(this);

    //declaration of the private variables used in the program
    //create the text area
    private JTextArea textArea;
    //create the Menu Bar that contains the JMenu "filE, ediT, vieW, formaT, helP"
    private JMenuBar Menubar;
    //Create the menu that contains the items
    private JMenu filE   = new JMenu("File"),
                    ediT   = new JMenu("Edit"),
                    vieW   = new JMenu("View"),
                    formaT = new JMenu("Format"),
                    helP   = new JMenu("Help");
    //Create the Tool Bar that contains the JButton
    private JToolBar toolBar;
    //Create the menu items
    private JMenuItem exiT, abouT;
    //Create Scroll pane (JScrollPane) for the JTextArea
    private JScrollPane scrollpane;

    //for using textArea @Actions.java
    public JTextArea getTextArea(){
        return textArea;
    }

    //Constructor of Notepad
    public Notepad(){
        //set the title for Notepad and set the size for it.
        setTitle("Untitled - JAVA� Notepad");
        setSize(800,600);

        //get the graphical user interface components display area
        Container cp = getContentPane();
        /**
         *adding the text area &
         *adding the scroll pane to the container
         */
        cp.add(textArea = new JTextArea());
        conditionalAddToolbar(cp);
        cp.add(scrollpane = new JScrollPane(textArea));

        //for setting the menu bar
        setJMenuBar(Menubar= new JMenuBar());
        //adding file, edit, view, format, help to the menu bar
        Menubar.add(filE   );
        Menubar.add(ediT   );
        Menubar.add(vieW   );
        Menubar.add(formaT );
        Menubar.add(helP   );

        /**
         *adding exiT to the filE Menu &
         *adding a small image icon to the menu item
         */
        filE.add(exiT   = new JMenuItem("Exit")); //, new ImageIcon(this.getClass().getResource("images/exit.gif"))));  -- exit.gif missing

        /**
         *adding abouT to the helP Menu &
         *adding a samll image icon to the menu item
         */
        helP.add(abouT = new JMenuItem("About Notepad", new ImageIcon(this.getClass().getResource("images/about.gif"))));

        /**
         *allowing the file   menu to be selected by pressing ALT + F
         *allowing the edit   menu to be selected by pressing ALT + E
         *allowing the view   menu to be selected by pressing ALT + V
         *allowing the format menu to be selected by pressing ALT + O
         *allowing the help   menu to be selected by pressing ALT + H
         */
        filE.setMnemonic('f');
        ediT.setMnemonic('e');
        vieW.setMnemonic('v');
        formaT.setMnemonic('o');
        helP.setMnemonic('h');

        /**
         *allowing the exiT      menu item to be selected by pressing ALT + F4
         */
        exiT.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F4, ActionEvent.CTRL_MASK));

        /**
         *setting the default close operation to false &
         *using own action (exiT action @Actions.java)
         */
        setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
        addWindowListener(new WindowAdapter(){
            public void windowClosing(WindowEvent e){
                actions.exiT();
            }
        });

        /**
         *adding action listener for menu item: exiT & abouT
         *the actions was written @Actions.java
         */
        exiT.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent ae){
                actions.exiT();
            }
        });
        abouT.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent ae){
                actions.abouT();
            }
        });

        center.nCenter();
        show();
    }
    private void conditionalAddToolbar(Container cp){
    }
    //Main Method
    public static void main(String[] args){
        new Notepad();

    }
}
