1.
import java.io.*;
2.
import java.util.Date;
3.
import java.awt.*;
4.
import java.awt.event.*;
5.
import javax.swing.*;
6.
import javax.swing.event.*;
7.
8.
/************************************/
9.
class FileOperation
10. {
11. Notepad npd;
12.
13. boolean saved;
14. boolean newFileFlag;
15. String fileName;
16. String applicationTitle="Javapad";
17.
18. File fileRef;
19. JFileChooser chooser;
20. /////////////////////////////
21. boolean isSave(){return saved;}
22. void setSave(boolean saved){this.saved=saved;}
23. String getFileName(){return new String(fileName);}
24. void setFileName(String fileName){this.fileName=new String(fileName);}
25. /////////////////////////
26. FileOperation(Notepad npd)
27. {
28. this.npd=npd;
29.
30. saved=true;
31. newFileFlag=true;
32. fileName=new String("Untitled");
33. fileRef=new File(fileName);
34. this.npd.f.setTitle(fileName+" - "+applicationTitle);
35.
36. chooser=new JFileChooser();
37. chooser.addChoosableFileFilter(new MyFileFilter(".java","Java Source Files(*.java)"));
38. chooser.addChoosableFileFilter(new MyFileFilter(".txt","Text Files(*.txt)"));
39. chooser.setCurrentDirectory(new File("."));
40.
41. }
42. //////////////////////////////////////
43.
44. boolean saveFile(File temp)
45. {
46. FileWriter fout=null;
47. try
48. {
49. fout=new FileWriter(temp);
50. fout.write(npd.ta.getText());
51. }
52. catch(IOException ioe){updateStatus(temp,false);return false;}
53. finally
54. {try{fout.close();}catch(IOException excp){}}
55. updateStatus(temp,true);
56. return true;
57. }
58. ////////////////////////
59. boolean saveThisFile()
60. {
61.
62. if(!newFileFlag)
63. {return saveFile(fileRef);}
64.
65. return saveAsFile();
66. }
67. ////////////////////////////////////
68. boolean saveAsFile()
69. {
70. File temp=null;
71. chooser.setDialogTitle("Save As...");
72. chooser.setApproveButtonText("Save Now");
73. chooser.setApproveButtonMnemonic(KeyEvent.VK_S);
74. chooser.setApproveButtonToolTipText("Click me to save!");
75.
76. do
77. {
78. if(chooser.showSaveDialog(this.npd.f)!=JFileChooser.APPROVE_OPTION)
79. return false;
80. temp=chooser.getSelectedFile();
81. if(!temp.exists()) break;
82. if( JOptionPane.showConfirmDialog(
83. this.npd.f,"<html>"+temp.getPath()+" already exists.<br>Do you want to replace it?<html>",
84. "Save As",JOptionPane.YES_NO_OPTION
85. )==JOptionPane.YES_OPTION)
86. break;
87. }while(true);
88.
89.
90. return saveFile(temp);
91. }
92.
93. ////////////////////////
94. boolean openFile(File temp)
95. {
96. FileInputStream fin=null;
97. BufferedReader din=null;
98.
99. try
100.
{
101.
fin=new FileInputStream(temp);
102.
din=new BufferedReader(new InputStreamReader(fin));
103.
String str=" ";
104.
while(str!=null)
105.
{
106.
str=din.readLine();
107.
if(str==null)
108.
break;
109.
this.npd.ta.append(str+"\n");
110.
}
111.
112.
}
113.
catch(IOException ioe){updateStatus(temp,false);return false;}
114.
finally
115.
{try{din.close();fin.close();}catch(IOException excp){}}
116.
updateStatus(temp,true);
117.
this.npd.ta.setCaretPosition(0);
118.
return true;
119.
}
120.
///////////////////////
121.
void openFile()
122.
{
123.
if(!confirmSave()) return;
124.
chooser.setDialogTitle("Open File...");
125.
chooser.setApproveButtonText("Open this");
126.
chooser.setApproveButtonMnemonic(KeyEvent.VK_O);
127.
chooser.setApproveButtonToolTipText("Click me to open the selected file.!");
128.
129.
File temp=null;
130.
do
131.
{
132.
if(chooser.showOpenDialog(this.npd.f)!=JFileChooser.APPROVE_OPTION)
133.
return;
134.
temp=chooser.getSelectedFile();
135.
136.
if(temp.exists()) break;
137.
138.
JOptionPane.showMessageDialog(this.npd.f,
139.
"<html>"+temp.getName()+"<br>file not found.<br>"+
140.
"Please verify the correct file name was given.<html>",
141.
"Open", JOptionPane.INFORMATION_MESSAGE);
142.
143.
} while(true);
144.
145.
this.npd.ta.setText("");
146.
147.
if(!openFile(temp))
148.
{
149.
fileName="Untitled"; saved=true;
150.
this.npd.f.setTitle(fileName+" - "+applicationTitle);
151.
}
152.
if(!temp.canWrite())
153.
newFileFlag=true;
154.
155.
}
156.
////////////////////////
157.
void updateStatus(File temp,boolean saved)
158.
{
159.
if(saved)
160.
{
161.
this.saved=true;
162.
fileName=new String(temp.getName());
163.
if(!temp.canWrite())
164.
{fileName+="(Read only)"; newFileFlag=true;}
165.
fileRef=temp;
166.
npd.f.setTitle(fileName + " - "+applicationTitle);
167.
npd.statusBar.setText("File : "+temp.getPath()+" saved/opened successfully.");
168.
newFileFlag=false;
169.
}
170.
else
171.
{
172.
npd.statusBar.setText("Failed to save/open : "+temp.getPath());
173.
}
174.
}
175.
///////////////////////
176.
boolean confirmSave()
177.
{
178.
String strMsg="<html>The text in the "+fileName+" file has been changed.<br>"+
179.
"Do you want to save the changes?<html>";
180.
if(!saved)
181.
{
182.
int x=JOptionPane.showConfirmDialog(this.npd.f,strMsg,applicationTitle,
183.
JOptionPane.YES_NO_CANCEL_OPTION);
184.
185.
if(x==JOptionPane.CANCEL_OPTION) return false;
186.
if(x==JOptionPane.YES_OPTION && !saveAsFile()) return false;
187.
}
188.
return true;
189.
}
190.
///////////////////////////////////////
191.
void newFile()
192.
{
193.
if(!confirmSave()) return;
194.
195.
this.npd.ta.setText("");
196.
fileName=new String("Untitled");
197.
fileRef=new File(fileName);
198.
saved=true;
199.
newFileFlag=true;
200.
this.npd.f.setTitle(fileName+" - "+applicationTitle);
201.
}
202.
//////////////////////////////////////
203.
}// end defination of class FileOperation
204.
/************************************/
205.
public class Notepad implements ActionListener, MenuConstants
206.
{
207.
208.
JFrame f;
209.
JTextArea ta;
210.
JLabel statusBar;
211.
212.
private String fileName="Untitled";
213.
private boolean saved=true;
214.
String applicationName="Javapad";
215.
216.
String searchString, replaceString;
217.
int lastSearchIndex;
218.
219.
FileOperation fileHandler;
220.
FontChooser fontDialog=null;
221.
FindDialog findReplaceDialog=null;
222.
JColorChooser bcolorChooser=null;
223.
JColorChooser fcolorChooser=null;
224.
JDialog backgroundDialog=null;
225.
JDialog foregroundDialog=null;
226.
JMenuItem cutItem,copyItem, deleteItem, findItem, findNextItem,
227.
replaceItem, gotoItem, selectAllItem;
228.
/****************************/
229.
Notepad()
230.
{
231.
f=new JFrame(fileName+" - "+applicationName);
232.
ta=new JTextArea(30,60);
233.
statusBar=new JLabel("|| Ln 1, Col 1 ",JLabel.RIGHT);
234.
f.add(new JScrollPane(ta),BorderLayout.CENTER);
235.
f.add(statusBar,BorderLayout.SOUTH);
236.
f.add(new JLabel(" "),BorderLayout.EAST);
237.
f.add(new JLabel(" "),BorderLayout.WEST);
238.
createMenuBar(f);
239.
//f.setSize(350,350);
240.
f.pack();
241.
f.setLocation(100,50);
242.
f.setVisible(true);
243.
f.setLocation(150,50);
244.
f.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
245.
246.
fileHandler=new FileOperation(this);
247.
248.
/////////////////////
249.
250.
ta.addCaretListener(
251.
new CaretListener()
252.
{
253.
public void caretUpdate(CaretEvent e)
254.
{
255.
int lineNumber=0, column=0, pos=0;
256.
257.
try
258.
{
259.
pos=ta.getCaretPosition();
260.
lineNumber=ta.getLineOfOffset(pos);
261.
column=pos-ta.getLineStartOffset(lineNumber);
262.
}catch(Exception excp){}
263.
if(ta.getText().length()==0){lineNumber=0; column=0;}
264.
statusBar.setText("|| Ln "+(lineNumber+1)+", Col "+(column+1));
265.
}
266.
});
267.
//////////////////
268.
DocumentListener myListener = new DocumentListener()
269.
{
270.
public void changedUpdate(DocumentEvent e){fileHandler.saved=false;}
271.
public void removeUpdate(DocumentEvent e){fileHandler.saved=false;}
272.
public void insertUpdate(DocumentEvent e){fileHandler.saved=false;}
273.
};
274.
ta.getDocument().addDocumentListener(myListener);
275.
/////////
276.
WindowListener frameClose=new WindowAdapter()
277.
{
278.
public void windowClosing(WindowEvent we)
279.
{
280.
if(fileHandler.confirmSave())System.exit(0);
281.
}
282.
};
283.
f.addWindowListener(frameClose);
284.
//////////////////
285.
/*
286.
ta.append("Hello dear hello hi");
287.
ta.append("\nwho are u dear mister hello");
288.
ta.append("\nhello bye hel");
289.
ta.append("\nHello");
290.
ta.append("\nMiss u mister hello hell");
291.
fileHandler.saved=true;
292.
*/
293.
}
294.
////////////////////////////////////
295.
void goTo()
296.
{
297.
int lineNumber=0;
298.
try
299.
{
300.
lineNumber=ta.getLineOfOffset(ta.getCaretPosition())+1;
301.
String tempStr=JOptionPane.showInputDialog(f,"Enter Line Number:",""+lineNumber);
302.
if(tempStr==null)
303.
{return;}
304.
lineNumber=Integer.parseInt(tempStr);
305.
ta.setCaretPosition(ta.getLineStartOffset(lineNumber-1));
306.
}catch(Exception e){}
307.
}
308.
///////////////////////////////////
309.
public void actionPerformed(ActionEvent ev)
310.
{
311.
String cmdText=ev.getActionCommand();
312.
////////////////////////////////////
313.
if(cmdText.equals(fileNew))
314.
fileHandler.newFile();
315.
else if(cmdText.equals(fileOpen))
316.
fileHandler.openFile();
317.
////////////////////////////////////
318.
else if(cmdText.equals(fileSave))
319.
fileHandler.saveThisFile();
320.
////////////////////////////////////
321.
else if(cmdText.equals(fileSaveAs))
322.
fileHandler.saveAsFile();
323.
////////////////////////////////////
324.
else if(cmdText.equals(fileExit))
325.
{if(fileHandler.confirmSave())System.exit(0);}
326.
////////////////////////////////////
327.
else if(cmdText.equals(filePrint))
328.
JOptionPane.showMessageDialog(
329.
Notepad.this.f,
330.
"Get ur printer repaired first! It seems u dont have one!",
331.
"Bad Printer",
332.
JOptionPane.INFORMATION_MESSAGE
333.
);
334.
////////////////////////////////////
335.
else if(cmdText.equals(editCut))
336.
ta.cut();
337.
////////////////////////////////////
338.
else if(cmdText.equals(editCopy))
339.
ta.copy();
340.
////////////////////////////////////
341.
else if(cmdText.equals(editPaste))
342.
ta.paste();
343.
////////////////////////////////////
344.
else if(cmdText.equals(editDelete))
345.
ta.replaceSelection("");
346.
////////////////////////////////////
347.
else if(cmdText.equals(editFind))
348.
{
349.
if(Notepad.this.ta.getText().length()==0)
350.
return; // text box have no text
351.
if(findReplaceDialog==null)
352.
findReplaceDialog=new FindDialog(Notepad.this.ta);
353.
findReplaceDialog.showDialog(Notepad.this.f,true);//find
354.
}
355.
////////////////////////////////////
356.
else if(cmdText.equals(editFindNext))
357.
{
358.
if(Notepad.this.ta.getText().length()==0)
359.
return; // text box have no text
360.
361.
if(findReplaceDialog==null)
362.
statusBar.setText("Use Find option of Edit Menu first !!!!");
363.
else
364.
findReplaceDialog.findNextWithSelection();
365.
}
366.
////////////////////////////////////
367.
else if(cmdText.equals(editReplace))
368.
{
369.
if(Notepad.this.ta.getText().length()==0)
370.
return; // text box have no text
371.
372.
if(findReplaceDialog==null)
373.
findReplaceDialog=new FindDialog(Notepad.this.ta);
374.
findReplaceDialog.showDialog(Notepad.this.f,false);//replace
375.
}
376.
////////////////////////////////////
377.
else if(cmdText.equals(editGoTo))
378.
{
379.
if(Notepad.this.ta.getText().length()==0)
380.
return; // text box have no text
381.
goTo();
382.
}
383.
////////////////////////////////////
384.
else if(cmdText.equals(editSelectAll))
385.
ta.selectAll();
386.
////////////////////////////////////
387.
else if(cmdText.equals(editTimeDate))
388.
ta.insert(new Date().toString(),ta.getSelectionStart());
389.
////////////////////////////////////
390.
else if(cmdText.equals(formatWordWrap))
391.
{
392.
JCheckBoxMenuItem temp=(JCheckBoxMenuItem)ev.getSource();
393.
ta.setLineWrap(temp.isSelected());
394.
}
395.
////////////////////////////////////
396.
else if(cmdText.equals(formatFont))
397.
{
398.
if(fontDialog==null)
399.
fontDialog=new FontChooser(ta.getFont());
400.
401.
if(fontDialog.showDialog(Notepad.this.f,"Choose a font"))
402.
Notepad.this.ta.setFont(fontDialog.createFont());
403.
}
404.
////////////////////////////////////
405.
else if(cmdText.equals(formatForeground))
406.
showForegroundColorDialog();
407.
////////////////////////////////////
408.
else if(cmdText.equals(formatBackground))
409.
showBackgroundColorDialog();
410.
////////////////////////////////////
411.
412.
else if(cmdText.equals(viewStatusBar))
413.
{
414.
JCheckBoxMenuItem temp=(JCheckBoxMenuItem)ev.getSource();
415.
statusBar.setVisible(temp.isSelected());
416.
}
417.
////////////////////////////////////
418.
else if(cmdText.equals(helpAboutNotepad))
419.
{
420.
JOptionPane.showMessageDialog(Notepad.this.f,aboutText,"Dedicated 2 u!",
421.
JOptionPane.INFORMATION_MESSAGE);
422.
}
423.
else
424.
statusBar.setText("This "+cmdText+" command is yet to be implemented");
425.
}//action Performed
426.
////////////////////////////////////
427.
void showBackgroundColorDialog()
428.
{
429.
if(bcolorChooser==null)
430.
bcolorChooser=new JColorChooser();
431.
if(backgroundDialog==null)
432.
backgroundDialog=JColorChooser.createDialog
433.
(Notepad.this.f,
434.
formatBackground,
435.
false,
436.
bcolorChooser,
437.
new ActionListener()
438.
{public void actionPerformed(ActionEvent evvv){
439.
Notepad.this.ta.setBackground(bcolorChooser.getColor());}},
440.
null);
441.
442.
backgroundDialog.setVisible(true);
443.
}
444.
////////////////////////////////////
445.
void showForegroundColorDialog()
446.
{
447.
if(fcolorChooser==null)
448.
fcolorChooser=new JColorChooser();
449.
if(foregroundDialog==null)
450.
foregroundDialog=JColorChooser.createDialog
451.
(Notepad.this.f,
452.
formatForeground,
453.
false,
454.
fcolorChooser,
455.
new ActionListener()
456.
{public void actionPerformed(ActionEvent evvv){
457.
Notepad.this.ta.setForeground(fcolorChooser.getColor());}},
458.
null);
459.
460.
foregroundDialog.setVisible(true);
461.
}
462.
463.
///////////////////////////////////
464.
JMenuItem createMenuItem(String s, int key,JMenu toMenu,ActionListener al)
465.
{
466.
JMenuItem temp=new JMenuItem(s,key);
467.
temp.addActionListener(al);
468.
toMenu.add(temp);
469.
470.
return temp;
471.
}
472.
////////////////////////////////////
473.
JMenuItem createMenuItem(String s, int key,JMenu toMenu,int aclKey,ActionListener al)
474.
{
475.
JMenuItem temp=new JMenuItem(s,key);
476.
temp.addActionListener(al);
477.
temp.setAccelerator(KeyStroke.getKeyStroke(aclKey,ActionEvent.CTRL_MASK));
478.
toMenu.add(temp);
479.
480.
return temp;
481.
}
482.
////////////////////////////////////
483.
JCheckBoxMenuItem createCheckBoxMenuItem(String s,
484.
int key,JMenu toMenu,ActionListener al)
485.
{
486.
JCheckBoxMenuItem temp=new JCheckBoxMenuItem(s);
487.
temp.setMnemonic(key);
488.
temp.addActionListener(al);
489.
temp.setSelected(false);
490.
toMenu.add(temp);
491.
492.
return temp;
493.
}
494.
////////////////////////////////////
495.
JMenu createMenu(String s,int key,JMenuBar toMenuBar)
496.
{
497.
JMenu temp=new JMenu(s);
498.
temp.setMnemonic(key);
499.
toMenuBar.add(temp);
500.
return temp;
501.
}
502.
/*********************************/
503.
void createMenuBar(JFrame f)
504.
{
505.
JMenuBar mb=new JMenuBar();
506.
JMenuItem temp;
507.
508.
JMenu fileMenu=createMenu(fileText,KeyEvent.VK_F,mb);
509.
JMenu editMenu=createMenu(editText,KeyEvent.VK_E,mb);
510.
JMenu formatMenu=createMenu(formatText,KeyEvent.VK_O,mb);
511.
JMenu viewMenu=createMenu(viewText,KeyEvent.VK_V,mb);
512.
JMenu helpMenu=createMenu(helpText,KeyEvent.VK_H,mb);
513.
514.
createMenuItem(fileNew,KeyEvent.VK_N,fileMenu,KeyEvent.VK_N,this);
515.
createMenuItem(fileOpen,KeyEvent.VK_O,fileMenu,KeyEvent.VK_O,this);
516.
createMenuItem(fileSave,KeyEvent.VK_S,fileMenu,KeyEvent.VK_S,this);
517.
createMenuItem(fileSaveAs,KeyEvent.VK_A,fileMenu,this);
518.
fileMenu.addSeparator();
519.
temp=createMenuItem(filePageSetup,KeyEvent.VK_U,fileMenu,this);
520.
temp.setEnabled(false);
521.
createMenuItem(filePrint,KeyEvent.VK_P,fileMenu,KeyEvent.VK_P,this);
522.
fileMenu.addSeparator();
523.
createMenuItem(fileExit,KeyEvent.VK_X,fileMenu,this);
524.
525.
temp=createMenuItem(editUndo,KeyEvent.VK_U,editMenu,KeyEvent.VK_Z,this);
526.
temp.setEnabled(false);
527.
editMenu.addSeparator();
528.
cutItem=createMenuItem(editCut,KeyEvent.VK_T,editMenu,KeyEvent.VK_X,this);
529.
copyItem=createMenuItem(editCopy,KeyEvent.VK_C,editMenu,KeyEvent.VK_C,this);
530.
createMenuItem(editPaste,KeyEvent.VK_P,editMenu,KeyEvent.VK_V,this);
531.
deleteItem=createMenuItem(editDelete,KeyEvent.VK_L,editMenu,this);
532.
deleteItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE,0));
533.
editMenu.addSeparator();
534.
findItem=createMenuItem(editFind,KeyEvent.VK_F,editMenu,KeyEvent.VK_F,this);
535.
findNextItem=createMenuItem(editFindNext,KeyEvent.VK_N,editMenu,this);
536.
findNextItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F3,0));
537.
replaceItem=createMenuItem(editReplace,KeyEvent.VK_R,editMenu,KeyEvent.VK_H,this);
538.
gotoItem=createMenuItem(editGoTo,KeyEvent.VK_G,editMenu,KeyEvent.VK_G,this);
539.
editMenu.addSeparator();
540.
selectAllItem=createMenuItem(editSelectAll,KeyEvent.VK_A,editMenu,KeyEvent.VK_A,this);
541.
createMenuItem(editTimeDate,KeyEvent.VK_D,editMenu,this)
542.
.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F5,0));
543.
544.
createCheckBoxMenuItem(formatWordWrap,KeyEvent.VK_W,formatMenu,this);
545.
546.
createMenuItem(formatFont,KeyEvent.VK_F,formatMenu,this);
547.
formatMenu.addSeparator();
548.
createMenuItem(formatForeground,KeyEvent.VK_T,formatMenu,this);
549.
createMenuItem(formatBackground,KeyEvent.VK_P,formatMenu,this);
550.
551.
createCheckBoxMenuItem(viewStatusBar,KeyEvent.VK_S,viewMenu,this).setSelected(true);
552.
/************For Look and Feel***/
553.
LookAndFeelMenu.createLookAndFeelMenuItem(viewMenu,this.f);
554.
555.
556.
temp=createMenuItem(helpHelpTopic,KeyEvent.VK_H,helpMenu,this);
557.
temp.setEnabled(false);
558.
helpMenu.addSeparator();
559.
createMenuItem(helpAboutNotepad,KeyEvent.VK_A,helpMenu,this);
560.
561.
MenuListener editMenuListener=new MenuListener()
562.
{
563.
public void menuSelected(MenuEvent evvvv)
564.
{
565.
if(Notepad.this.ta.getText().length()==0)
566.
{
567.
findItem.setEnabled(false);
568.
findNextItem.setEnabled(false);
569.
replaceItem.setEnabled(false);
570.
selectAllItem.setEnabled(false);
571.
gotoItem.setEnabled(false);
572.
}
573.
else
574.
{
575.
findItem.setEnabled(true);
576.
findNextItem.setEnabled(true);
577.
replaceItem.setEnabled(true);
578.
selectAllItem.setEnabled(true);
579.
gotoItem.setEnabled(true);
580.
}
581.
if(Notepad.this.ta.getSelectionStart()==ta.getSelectionEnd())
582.
{
583.
cutItem.setEnabled(false);
584.
copyItem.setEnabled(false);
585.
deleteItem.setEnabled(false);
586.
}
587.
else
588.
{
589.
cutItem.setEnabled(true);
590.
copyItem.setEnabled(true);
591.
deleteItem.setEnabled(true);
592.
}
593.
}
594.
public void menuDeselected(MenuEvent evvvv){}
595.
public void menuCanceled(MenuEvent evvvv){}
596.
};
597.
editMenu.addMenuListener(editMenuListener);
598.
f.setJMenuBar(mb);
599.
}
600.
/*************Constructor**************/
601.
////////////////////////////////////
602.
public static void main(String[] s)
603.
{
604.
new Notepad();
605.
}
606.
}
607.
/**************************************/
608.
//public
609.
interface MenuConstants
610.
{
611.
final String fileText="File";
612.
final String editText="Edit";
613.
final String formatText="Format";
614.
final String viewText="View";
615.
final String helpText="Help";
616.
617.
final String fileNew="New";
618.
final String fileOpen="Open...";
619.
final String fileSave="Save";
620.
final String fileSaveAs="Save As...";
621.
final String filePageSetup="Page Setup...";
622.
final String filePrint="Print";
623.
final String fileExit="Exit";
624.
625.
final String editUndo="Undo";
626.
final String editCut="Cut";
627.
final String editCopy="Copy";
628.
final String editPaste="Paste";
629.
final String editDelete="Delete";
630.
final String editFind="Find...";
631.
final String editFindNext="Find Next";
632.
final String editReplace="Replace";
633.
final String editGoTo="Go To...";
634.
final String editSelectAll="Select All";
635.
final String editTimeDate="Time/Date";
636.
637.
final String formatWordWrap="Word Wrap";
638.
final String formatFont="Font...";
639.
final String formatForeground="Set Text color...";
640.
final String formatBackground="Set Pad color...";
641.
642.
final String viewStatusBar="Status Bar";
643.
644.
final String helpHelpTopic="Help Topic";
645.
final String helpAboutNotepad="About Javapad";
646.
647.
final String aboutText="Your Javapad";
648. }
No comments:
Post a Comment