Notepad in Java with source code
Notepad in Java with source code: We can develop Notepad in java with the help of AWT/Swing with event handling. Let's see the code of creating Notepad in java.
- import java.io.*;
- import java.util.Date;
- import java.awt.*;
- import java.awt.event.*;
- import javax.swing.*;
- import javax.swing.event.*;
- /************************************/
- class FileOperation
- {
- Notepad npd;
- boolean saved;
- boolean newFileFlag;
- String fileName;
- String applicationTitle="Notepad - JavaTpoint";
- File fileRef;
- JFileChooser chooser;
- /////////////////////////////
- boolean isSave(){return saved;}
- void setSave(boolean saved){this.saved=saved;}
- String getFileName(){return new String(fileName);}
- void setFileName(String fileName){this.fileName=new String(fileName);}
- /////////////////////////
- FileOperation(Notepad npd)
- {
- this.npd=npd;
- saved=true;
- newFileFlag=true;
- fileName=new String("Untitled");
- fileRef=new File(fileName);
- this.npd.f.setTitle(fileName+" - "+applicationTitle);
- chooser=new JFileChooser();
- chooser.addChoosableFileFilter(new MyFileFilter(".java","Java Source Files(*.java)"));
- chooser.addChoosableFileFilter(new MyFileFilter(".txt","Text Files(*.txt)"));
- chooser.setCurrentDirectory(new File("."));
- }
- //////////////////////////////////////
- boolean saveFile(File temp)
- {
- FileWriter fout=null;
- try
- {
- fout=new FileWriter(temp);
- fout.write(npd.ta.getText());
- }
- catch(IOException ioe){updateStatus(temp,false);return false;}
- finally
- {try{fout.close();}catch(IOException excp){}}
- updateStatus(temp,true);
- return true;
- }
- ////////////////////////
- boolean saveThisFile()
- {
- if(!newFileFlag)
- {return saveFile(fileRef);}
- return saveAsFile();
- }
- ////////////////////////////////////
- boolean saveAsFile()
- {
- File temp=null;
- chooser.setDialogTitle("Save As...");
- chooser.setApproveButtonText("Save Now");
- chooser.setApproveButtonMnemonic(KeyEvent.VK_S);
- chooser.setApproveButtonToolTipText("Click me to save!");
- do
- {
- if(chooser.showSaveDialog(this.npd.f)!=JFileChooser.APPROVE_OPTION)
- return false;
- temp=chooser.getSelectedFile();
- if(!temp.exists()) break;
- if( JOptionPane.showConfirmDialog(
- this.npd.f,"<html>"+temp.getPath()+" already exists.<br>Do you want to replace it?<html>",
- "Save As",JOptionPane.YES_NO_OPTION
- )==JOptionPane.YES_OPTION)
- break;
- }while(true);
- return saveFile(temp);
- }
- ////////////////////////
- boolean openFile(File temp)
- {
- FileInputStream fin=null;
- BufferedReader din=null;
- try
- {
- fin=new FileInputStream(temp);
- din=new BufferedReader(new InputStreamReader(fin));
- String str=" ";
- while(str!=null)
- {
- str=din.readLine();
- if(str==null)
- break;
- this.npd.ta.append(str+"\n");
- }
- }
- catch(IOException ioe){updateStatus(temp,false);return false;}
- finally
- {try{din.close();fin.close();}catch(IOException excp){}}
- updateStatus(temp,true);
- this.npd.ta.setCaretPosition(0);
- return true;
- }
- ///////////////////////
- void openFile()
- {
- if(!confirmSave()) return;
- chooser.setDialogTitle("Open File...");
- chooser.setApproveButtonText("Open this");
- chooser.setApproveButtonMnemonic(KeyEvent.VK_O);
- chooser.setApproveButtonToolTipText("Click me to open the selected file.!");
- File temp=null;
- do
- {
- if(chooser.showOpenDialog(this.npd.f)!=JFileChooser.APPROVE_OPTION)
- return;
- temp=chooser.getSelectedFile();
- if(temp.exists()) break;
- JOptionPane.showMessageDialog(this.npd.f,
- "<html>"+temp.getName()+"<br>file not found.<br>"+
- "Please verify the correct file name was given.<html>",
- "Open", JOptionPane.INFORMATION_MESSAGE);
- } while(true);
- this.npd.ta.setText("");
- if(!openFile(temp))
- {
- fileName="Untitled"; saved=true;
- this.npd.f.setTitle(fileName+" - "+applicationTitle);
- }
- if(!temp.canWrite())
- newFileFlag=true;
- }
- ////////////////////////
- void updateStatus(File temp,boolean saved)
- {
- if(saved)
- {
- this.saved=true;
- fileName=new String(temp.getName());
- if(!temp.canWrite())
- {fileName+="(Read only)"; newFileFlag=true;}
- fileRef=temp;
- npd.f.setTitle(fileName + " - "+applicationTitle);
- npd.statusBar.setText("File : "+temp.getPath()+" saved/opened successfully.");
- newFileFlag=false;
- }
- else
- {
- npd.statusBar.setText("Failed to save/open : "+temp.getPath());
- }
- }
- ///////////////////////
- boolean confirmSave()
- {
- String strMsg="<html>The text in the "+fileName+" file has been changed.<br>"+
- "Do you want to save the changes?<html>";
- if(!saved)
- {
- int x=JOptionPane.showConfirmDialog(this.npd.f,strMsg,applicationTitle,
- JOptionPane.YES_NO_CANCEL_OPTION);
- if(x==JOptionPane.CANCEL_OPTION) return false;
- if(x==JOptionPane.YES_OPTION && !saveAsFile()) return false;
- }
- return true;
- }
- ///////////////////////////////////////
- void newFile()
- {
- if(!confirmSave()) return;
- this.npd.ta.setText("");
- fileName=new String("Untitled");
- fileRef=new File(fileName);
- saved=true;
- newFileFlag=true;
- this.npd.f.setTitle(fileName+" - "+applicationTitle);
- }
- //////////////////////////////////////
- }// end defination of class FileOperation
- /************************************/
- public class Notepad implements ActionListener, MenuConstants
- {
- JFrame f;
- JTextArea ta;
- JLabel statusBar;
- private String fileName="Untitled";
- private boolean saved=true;
- String applicationName="Javapad";
- String searchString, replaceString;
- int lastSearchIndex;
- FileOperation fileHandler;
- FontChooser fontDialog=null;
- FindDialog findReplaceDialog=null;
- JColorChooser bcolorChooser=null;
- JColorChooser fcolorChooser=null;
- JDialog backgroundDialog=null;
- JDialog foregroundDialog=null;
- JMenuItem cutItem,copyItem, deleteItem, findItem, findNextItem,
- replaceItem, gotoItem, selectAllItem;
- /****************************/
- Notepad()
- {
- f=new JFrame(fileName+" - "+applicationName);
- ta=new JTextArea(30,60);
- statusBar=new JLabel("|| Ln 1, Col 1 ",JLabel.RIGHT);
- f.add(new JScrollPane(ta),BorderLayout.CENTER);
- f.add(statusBar,BorderLayout.SOUTH);
- f.add(new JLabel(" "),BorderLayout.EAST);
- f.add(new JLabel(" "),BorderLayout.WEST);
- createMenuBar(f);
- //f.setSize(350,350);
- f.pack();
- f.setLocation(100,50);
- f.setVisible(true);
- f.setLocation(150,50);
- f.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
- fileHandler=new FileOperation(this);
- /////////////////////
- ta.addCaretListener(
- new CaretListener()
- {
- public void caretUpdate(CaretEvent e)
- {
- int lineNumber=0, column=0, pos=0;
- try
- {
- pos=ta.getCaretPosition();
- lineNumber=ta.getLineOfOffset(pos);
- column=pos-ta.getLineStartOffset(lineNumber);
- }catch(Exception excp){}
- if(ta.getText().length()==0){lineNumber=0; column=0;}
- statusBar.setText("|| Ln "+(lineNumber+1)+", Col "+(column+1));
- }
- });
- //////////////////
- DocumentListener myListener = new DocumentListener()
- {
- public void changedUpdate(DocumentEvent e){fileHandler.saved=false;}
- public void removeUpdate(DocumentEvent e){fileHandler.saved=false;}
- public void insertUpdate(DocumentEvent e){fileHandler.saved=false;}
- };
- ta.getDocument().addDocumentListener(myListener);
- /////////
- WindowListener frameClose=new WindowAdapter()
- {
- public void windowClosing(WindowEvent we)
- {
- if(fileHandler.confirmSave())System.exit(0);
- }
- };
- f.addWindowListener(frameClose);
- //////////////////
- /*
- ta.append("Hello dear hello hi");
- ta.append("\nwho are u dear mister hello");
- ta.append("\nhello bye hel");
- ta.append("\nHello");
- ta.append("\nMiss u mister hello hell");
- fileHandler.saved=true;
- */
- }
- ////////////////////////////////////
- void goTo()
- {
- int lineNumber=0;
- try
- {
- lineNumber=ta.getLineOfOffset(ta.getCaretPosition())+1;
- String tempStr=JOptionPane.showInputDialog(f,"Enter Line Number:",""+lineNumber);
- if(tempStr==null)
- {return;}
- lineNumber=Integer.parseInt(tempStr);
- ta.setCaretPosition(ta.getLineStartOffset(lineNumber-1));
- }catch(Exception e){}
- }
- ///////////////////////////////////
- public void actionPerformed(ActionEvent ev)
- {
- String cmdText=ev.getActionCommand();
- ////////////////////////////////////
- if(cmdText.equals(fileNew))
- fileHandler.newFile();
- else if(cmdText.equals(fileOpen))
- fileHandler.openFile();
- ////////////////////////////////////
- else if(cmdText.equals(fileSave))
- fileHandler.saveThisFile();
- ////////////////////////////////////
- else if(cmdText.equals(fileSaveAs))
- fileHandler.saveAsFile();
- ////////////////////////////////////
- else if(cmdText.equals(fileExit))
- {if(fileHandler.confirmSave())System.exit(0);}
- ////////////////////////////////////
- else if(cmdText.equals(filePrint))
- JOptionPane.showMessageDialog(
- Notepad.this.f,
- "Get ur printer repaired first! It seems u dont have one!",
- "Bad Printer",
- JOptionPane.INFORMATION_MESSAGE
- );
- ////////////////////////////////////
- else if(cmdText.equals(editCut))
- ta.cut();
- ////////////////////////////////////
- else if(cmdText.equals(editCopy))
- ta.copy();
- ////////////////////////////////////
- else if(cmdText.equals(editPaste))
- ta.paste();
- ////////////////////////////////////
- else if(cmdText.equals(editDelete))
- ta.replaceSelection("");
- ////////////////////////////////////
- else if(cmdText.equals(editFind))
- {
- if(Notepad.this.ta.getText().length()==0)
- return; // text box have no text
- if(findReplaceDialog==null)
- findReplaceDialog=new FindDialog(Notepad.this.ta);
- findReplaceDialog.showDialog(Notepad.this.f,true);//find
- }
- ////////////////////////////////////
- else if(cmdText.equals(editFindNext))
- {
- if(Notepad.this.ta.getText().length()==0)
- return; // text box have no text
- if(findReplaceDialog==null)
- statusBar.setText("Use Find option of Edit Menu first !!!!");
- else
- findReplaceDialog.findNextWithSelection();
- }
- ////////////////////////////////////
- else if(cmdText.equals(editReplace))
- {
- if(Notepad.this.ta.getText().length()==0)
- return; // text box have no text
- if(findReplaceDialog==null)
- findReplaceDialog=new FindDialog(Notepad.this.ta);
- findReplaceDialog.showDialog(Notepad.this.f,false);//replace
- }
- ////////////////////////////////////
- else if(cmdText.equals(editGoTo))
- {
- if(Notepad.this.ta.getText().length()==0)
- return; // text box have no text
- goTo();
- }
- ////////////////////////////////////
- else if(cmdText.equals(editSelectAll))
- ta.selectAll();
- ////////////////////////////////////
- else if(cmdText.equals(editTimeDate))
- ta.insert(new Date().toString(),ta.getSelectionStart());
- ////////////////////////////////////
- else if(cmdText.equals(formatWordWrap))
- {
- JCheckBoxMenuItem temp=(JCheckBoxMenuItem)ev.getSource();
- ta.setLineWrap(temp.isSelected());
- }
- ////////////////////////////////////
- else if(cmdText.equals(formatFont))
- {
- if(fontDialog==null)
- fontDialog=new FontChooser(ta.getFont());
- if(fontDialog.showDialog(Notepad.this.f,"Choose a font"))
- Notepad.this.ta.setFont(fontDialog.createFont());
- }
- ////////////////////////////////////
- else if(cmdText.equals(formatForeground))
- showForegroundColorDialog();
- ////////////////////////////////////
- else if(cmdText.equals(formatBackground))
- showBackgroundColorDialog();
- ////////////////////////////////////
- else if(cmdText.equals(viewStatusBar))
- {
- JCheckBoxMenuItem temp=(JCheckBoxMenuItem)ev.getSource();
- statusBar.setVisible(temp.isSelected());
- }
- ////////////////////////////////////
- else if(cmdText.equals(helpAboutNotepad))
- {
- JOptionPane.showMessageDialog(Notepad.this.f,aboutText,"Dedicated 2 u!",
- JOptionPane.INFORMATION_MESSAGE);
- }
- else
- statusBar.setText("This "+cmdText+" command is yet to be implemented");
- }//action Performed
- ////////////////////////////////////
- void showBackgroundColorDialog()
- {
- if(bcolorChooser==null)
- bcolorChooser=new JColorChooser();
- if(backgroundDialog==null)
- backgroundDialog=JColorChooser.createDialog
- (Notepad.this.f,
- formatBackground,
- false,
- bcolorChooser,
- new ActionListener()
- {public void actionPerformed(ActionEvent evvv){
- Notepad.this.ta.setBackground(bcolorChooser.getColor());}},
- null);
- backgroundDialog.setVisible(true);
- }
- ////////////////////////////////////
- void showForegroundColorDialog()
- {
- if(fcolorChooser==null)
- fcolorChooser=new JColorChooser();
- if(foregroundDialog==null)
- foregroundDialog=JColorChooser.createDialog
- (Notepad.this.f,
- formatForeground,
- false,
- fcolorChooser,
- new ActionListener()
- {public void actionPerformed(ActionEvent evvv){
- Notepad.this.ta.setForeground(fcolorChooser.getColor());}},
- null);
- foregroundDialog.setVisible(true);
- }
- ///////////////////////////////////
- JMenuItem createMenuItem(String s, int key,JMenu toMenu,ActionListener al)
- {
- JMenuItem temp=new JMenuItem(s,key);
- temp.addActionListener(al);
- toMenu.add(temp);
- return temp;
- }
- ////////////////////////////////////
- JMenuItem createMenuItem(String s, int key,JMenu toMenu,int aclKey,ActionListener al)
- {
- JMenuItem temp=new JMenuItem(s,key);
- temp.addActionListener(al);
- temp.setAccelerator(KeyStroke.getKeyStroke(aclKey,ActionEvent.CTRL_MASK));
- toMenu.add(temp);
- return temp;
- }
- ////////////////////////////////////
- JCheckBoxMenuItem createCheckBoxMenuItem(String s,
- int key,JMenu toMenu,ActionListener al)
- {
- JCheckBoxMenuItem temp=new JCheckBoxMenuItem(s);
- temp.setMnemonic(key);
- temp.addActionListener(al);
- temp.setSelected(false);
- toMenu.add(temp);
- return temp;
- }
- ////////////////////////////////////
- JMenu createMenu(String s,int key,JMenuBar toMenuBar)
- {
- JMenu temp=new JMenu(s);
- temp.setMnemonic(key);
- toMenuBar.add(temp);
- return temp;
- }
- /*********************************/
- void createMenuBar(JFrame f)
- {
- JMenuBar mb=new JMenuBar();
- JMenuItem temp;
- JMenu fileMenu=createMenu(fileText,KeyEvent.VK_F,mb);
- JMenu editMenu=createMenu(editText,KeyEvent.VK_E,mb);
- JMenu formatMenu=createMenu(formatText,KeyEvent.VK_O,mb);
- JMenu viewMenu=createMenu(viewText,KeyEvent.VK_V,mb);
- JMenu helpMenu=createMenu(helpText,KeyEvent.VK_H,mb);
- createMenuItem(fileNew,KeyEvent.VK_N,fileMenu,KeyEvent.VK_N,this);
- createMenuItem(fileOpen,KeyEvent.VK_O,fileMenu,KeyEvent.VK_O,this);
- createMenuItem(fileSave,KeyEvent.VK_S,fileMenu,KeyEvent.VK_S,this);
- createMenuItem(fileSaveAs,KeyEvent.VK_A,fileMenu,this);
- fileMenu.addSeparator();
- temp=createMenuItem(filePageSetup,KeyEvent.VK_U,fileMenu,this);
- temp.setEnabled(false);
- createMenuItem(filePrint,KeyEvent.VK_P,fileMenu,KeyEvent.VK_P,this);
- fileMenu.addSeparator();
- createMenuItem(fileExit,KeyEvent.VK_X,fileMenu,this);
- temp=createMenuItem(editUndo,KeyEvent.VK_U,editMenu,KeyEvent.VK_Z,this);
- temp.setEnabled(false);
- editMenu.addSeparator();
- cutItem=createMenuItem(editCut,KeyEvent.VK_T,editMenu,KeyEvent.VK_X,this);
- copyItem=createMenuItem(editCopy,KeyEvent.VK_C,editMenu,KeyEvent.VK_C,this);
- createMenuItem(editPaste,KeyEvent.VK_P,editMenu,KeyEvent.VK_V,this);
- deleteItem=createMenuItem(editDelete,KeyEvent.VK_L,editMenu,this);
- deleteItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE,0));
- editMenu.addSeparator();
- findItem=createMenuItem(editFind,KeyEvent.VK_F,editMenu,KeyEvent.VK_F,this);
- findNextItem=createMenuItem(editFindNext,KeyEvent.VK_N,editMenu,this);
- findNextItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F3,0));
- replaceItem=createMenuItem(editReplace,KeyEvent.VK_R,editMenu,KeyEvent.VK_H,this);
- gotoItem=createMenuItem(editGoTo,KeyEvent.VK_G,editMenu,KeyEvent.VK_G,this);
- editMenu.addSeparator();
- selectAllItem=createMenuItem(editSelectAll,KeyEvent.VK_A,editMenu,KeyEvent.VK_A,this);
- createMenuItem(editTimeDate,KeyEvent.VK_D,editMenu,this)
- .setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F5,0));
- createCheckBoxMenuItem(formatWordWrap,KeyEvent.VK_W,formatMenu,this);
- createMenuItem(formatFont,KeyEvent.VK_F,formatMenu,this);
- formatMenu.addSeparator();
- createMenuItem(formatForeground,KeyEvent.VK_T,formatMenu,this);
- createMenuItem(formatBackground,KeyEvent.VK_P,formatMenu,this);
- createCheckBoxMenuItem(viewStatusBar,KeyEvent.VK_S,viewMenu,this).setSelected(true);
- /************For Look and Feel***/
- LookAndFeelMenu.createLookAndFeelMenuItem(viewMenu,this.f);
- temp=createMenuItem(helpHelpTopic,KeyEvent.VK_H,helpMenu,this);
- temp.setEnabled(false);
- helpMenu.addSeparator();
- createMenuItem(helpAboutNotepad,KeyEvent.VK_A,helpMenu,this);
- MenuListener editMenuListener=new MenuListener()
- {
- public void menuSelected(MenuEvent evvvv)
- {
- if(Notepad.this.ta.getText().length()==0)
- {
- findItem.setEnabled(false);
- findNextItem.setEnabled(false);
- replaceItem.setEnabled(false);
- selectAllItem.setEnabled(false);
- gotoItem.setEnabled(false);
- }
- else
- {
- findItem.setEnabled(true);
- findNextItem.setEnabled(true);
- replaceItem.setEnabled(true);
- selectAllItem.setEnabled(true);
- gotoItem.setEnabled(true);
- }
- if(Notepad.this.ta.getSelectionStart()==ta.getSelectionEnd())
- {
- cutItem.setEnabled(false);
- copyItem.setEnabled(false);
- deleteItem.setEnabled(false);
- }
- else
- {
- cutItem.setEnabled(true);
- copyItem.setEnabled(true);
- deleteItem.setEnabled(true);
- }
- }
- public void menuDeselected(MenuEvent evvvv){}
- public void menuCanceled(MenuEvent evvvv){}
- };
- editMenu.addMenuListener(editMenuListener);
- f.setJMenuBar(mb);
- }
- /*************Constructor**************/
- ////////////////////////////////////
- public static void main(String[] s)
- {
- new Notepad();
- }
- }
- /**************************************/
- //public
- interface MenuConstants
- {
- final String fileText="File";
- final String editText="Edit";
- final String formatText="Format";
- final String viewText="View";
- final String helpText="Help";
- final String fileNew="New";
- final String fileOpen="Open...";
- final String fileSave="Save";
- final String fileSaveAs="Save As...";
- final String filePageSetup="Page Setup...";
- final String filePrint="Print";
- final String fileExit="Exit";
- final String editUndo="Undo";
- final String editCut="Cut";
- final String editCopy="Copy";
- final String editPaste="Paste";
- final String editDelete="Delete";
- final String editFind="Find...";
- final String editFindNext="Find Next";
- final String editReplace="Replace";
- final String editGoTo="Go To...";
- final String editSelectAll="Select All";
- final String editTimeDate="Time/Date";
- final String formatWordWrap="Word Wrap";
- final String formatFont="Font...";
- final String formatForeground="Set Text color...";
- final String formatBackground="Set Pad color...";
- final String viewStatusBar="Status Bar";
- final String helpHelpTopic="Help Topic";
- final String helpAboutNotepad="About Javapad";
- final String aboutText="Your Javapad";
- }
No comments:
Post a Comment