// indicate "base" layer
/**
*This is a JAVA� program for writing, opening, saving, editing the documents,
*has the ability to copy, cut, paste & select all text in the JTextArea,
*has @see ExampleFileFilter class (From SUN� -http://java.sun.com-) for filter the file
*has a print class (from AarbTeam2000� -http://wwww.arabteam2000.com-) for printing the documents
*/
//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.*;
/**
*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, ediT, vieW, formaT, helP;
//Create the menu items
private JMenuItem neW, opeN, savE, saveAS, prinT, exiT, fonT, abouT,
cuT, copY, pastE, selectALL;
private JCheckBoxMenuItem lineWraP;
//Create the Tool Bar that contains the JButton
private JToolBar toolBar;
//Create the buttons
private JButton newButton, openButton, saveButton, saveAsButton, printButton,
fontButton, aboutButton;
//Create Scroll pane (JScrollPane) for the JTextArea
private JScrollPane scrollpane;
//for using lineWrap & textArea @Actions.java
public JCheckBoxMenuItem getLineWrap(){
return lineWraP;
}
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 tool bar &
*adding the scroll pane to the container
*/
cp.add(textArea = new JTextArea());
cp.add("North", toolBar = new JToolBar("Tool Bar"));
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 = new JMenu("File"));
Menubar.add(ediT = new JMenu("Edit"));
Menubar.add(vieW = new JMenu("View"));
Menubar.add(formaT = new JMenu("Format"));
Menubar.add(helP = new JMenu("Help"));
/**
*adding neW, opeN, savE, saveAS, prinT & exiT to the filE Menu,
*adding a small image icon to the menu item &
*adding separator between the menu item
*/
filE.add(neW = new JMenuItem("New", new ImageIcon(this.getClass().getResource("images/new.gif"))));
filE.add(opeN = new JMenuItem("Open", new ImageIcon(this.getClass().getResource("images/open.gif"))));
filE.add(savE = new JMenuItem("Save", new ImageIcon(this.getClass().getResource("images/save.gif"))));
filE.add(saveAS = new JMenuItem("Save As", new ImageIcon(this.getClass().getResource("images/saveAs.gif"))));
filE.add(prinT = new JMenuItem("Print", new ImageIcon(this.getClass().getResource("images/print.gif"))));
filE.add(exiT = new JMenuItem("Exit")); //, new ImageIcon(this.getClass().getResource("images/exit.gif")))); -- exit.gif missing
filE.insertSeparator(4);
filE.insertSeparator(6);
/**
*adding undO, redO, cuT, copY, pastE, finD, findNexT & selectALL to the ediT Menu,
*adding a small image icon to the menu item &
*adding separator between the menu item
*/
ediT.add(selectALL= new JMenuItem("Select All"));
//ediT.insertSeparator(2);
//ediT.insertSeparator(6);
/**
*adding lineWraP & fonT to the formaT Menu,
*adding abouT to the helP Menu &
*adding a small image icon to the menu item
*/
formaT.add(lineWraP = new JCheckBoxMenuItem("Line Wrap"));
formaT.add(fonT = new JMenuItem("Font", new ImageIcon(this.getClass().getResource("images/font.gif"))));
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 neW menu item to be selected by pressing ALT + N
*allowing the opeN menu item to be selected by pressing ALT + O
*allowing the savE menu item to be selected by pressing ALT + S
*allowing the prinT menu item to be selected by pressing ALT + P
*allowing the exiT menu item to be selected by pressing ALT + F4
*allowing the cuT menu item to be selected by pressing ALT + X
*allowing the copY menu item to be selected by pressing ALT + C
*allowing the pastE menu item to be selected by pressing ALT + V
*allowing the selectAll menu item to be selected by pressing ALT + A
*/
neW.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, ActionEvent.CTRL_MASK));
opeN.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, ActionEvent.CTRL_MASK));
savE.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, ActionEvent.CTRL_MASK));
prinT.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P, ActionEvent.CTRL_MASK));
exiT.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F4, ActionEvent.CTRL_MASK));
selectALL.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, ActionEvent.CTRL_MASK));
/**
*adding newButton, openButton, saveButton, saveAsButton, printButton, undoButton,
*redoButton, cutButton, copyButton, pasteButton, fontButton & aboutButton to the tool bar,
*adding a small image icon to the menu item &
*adding separator between the button
*/
toolBar.add(newButton = new JButton(new ImageIcon(this.getClass().getResource("images/new.gif"))));
toolBar.add(openButton = new JButton(new ImageIcon(this.getClass().getResource("images/open.gif"))));
toolBar.add(saveButton = new JButton(new ImageIcon(this.getClass().getResource("images/save.gif"))));
toolBar.add(saveAsButton= new JButton(new ImageIcon(this.getClass().getResource("images/saveAs.gif"))));
toolBar.add(printButton = new JButton(new ImageIcon(this.getClass().getResource("images/print.gif"))));
toolBar.addSeparator();
toolBar.add(fontButton = new JButton(new ImageIcon(this.getClass().getResource("images/font.gif"))));
toolBar.add(aboutButton = new JButton(new ImageIcon(this.getClass().getResource("images/about.gif"))));
//adding a tool tip text to the button for descriping the image icon.
newButton.setToolTipText("New");
openButton.setToolTipText("Open");
saveButton.setToolTipText("Save");
saveAsButton.setToolTipText("Save As");
printButton.setToolTipText("Print");
fontButton.setToolTipText("Font");
aboutButton.setToolTipText("About Notepad");
/**
*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: neW, opeN, savE, saveAS, prinT, exiT,
*redO, undO, copY, cuT, pastE, finD, findNexT, selectALL, lineWraP, fonT & abouT
*the actions was written @Actions.java
*/
neW.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
actions.neW();
}
});
opeN.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
actions.opeN();
}
});
savE.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
actions.savE();
}
});
saveAS.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
actions.saveAs();
}
});
prinT.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
actions.prinT();
}
});
exiT.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
actions.exiT();
}
});
selectALL.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
actions.selectALL();
}
});
lineWraP.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
actions.lineWraP();
}
});
fonT.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
actions.fonT();
}
});
abouT.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
actions.abouT();
}
});
/**
*adding action listener for the button in the tool bar: newButton, openButton,
*saveButton, saveAsButton, printButton, redoButton, undoButton, copyButton,
*cutButton, pasteButton, findButton, selectALL, lineWraP, fontButton & aboutButton
*the actions was written @Actions.java
*/
newButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
actions.neW();
}
});
openButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
actions.opeN();
}
});
saveButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
actions.savE();
}
});
saveAsButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
actions.saveAs();
}
});
printButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
actions.prinT();
}
});
fontButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
actions.fonT();
}
});
aboutButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
actions.abouT();
}
});
/**
*Setting the Line Wrap & Wrap Style Word features are true
*/
textArea.setLineWrap(true);
textArea.setWrapStyleWord(true);
/**
*for making the program at the center,
*@see Center.java
*/
center.nCenter();
show();
}
//Main Method
public static void main(String[] args){
new Notepad();
}
}