blob: f97240521d731d627763d5ea01f5cce4194e4296 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package examples.texteditor;
import java.awt.FileDialog;
import java.io.*;
/** This class is an entry point of the simple text editor.
* It creates and shows the main application frame.
*/
public class Ted extends javax.swing.JFrame {
/** Ted constructor.
* It initializes all GUI components [menu bar, menu items, editor pane, etc.].
*/
public Ted() {
initComponents();
setSize(500,300);
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the FormEditor.
*/
private void initComponents() {//GEN-BEGIN:initComponents
textScrollPane = new javax.swing.JScrollPane();
textBox = new javax.swing.JTextArea();
tedMenuBar = new javax.swing.JMenuBar();
fileMenu = new javax.swing.JMenu();
newMenuItem = new javax.swing.JMenuItem();
jSeparator1 = new javax.swing.JSeparator();
openMenuItem = new javax.swing.JMenuItem();
saveMenuItem = new javax.swing.JMenuItem();
saveAsMenuItem = new javax.swing.JMenuItem();
jSeparator2 = new javax.swing.JSeparator();
exitMenuItem = new javax.swing.JMenuItem();
editMenu = new javax.swing.JMenu();
findMenuItem = new javax.swing.JMenuItem();
helpMenu = new javax.swing.JMenu();
aboutMenuItem = new javax.swing.JMenuItem();
setTitle("Ted");
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent evt) {
exitForm(evt);
}
});
getAccessibleContext().setAccessibleName("Ted Frame");
getAccessibleContext().setAccessibleDescription("Ted frame.");
textScrollPane.setViewportView(textBox);
textBox.getAccessibleContext().setAccessibleName("Text Box");
textBox.getAccessibleContext().setAccessibleDescription("Text box.");
getContentPane().add(textScrollPane, java.awt.BorderLayout.CENTER);
fileMenu.setMnemonic('f');
fileMenu.setText("File");
newMenuItem.setMnemonic('n');
newMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_N, java.awt.event.InputEvent.CTRL_MASK));
newMenuItem.setText("New");
newMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
newMenuItemActionPerformed(evt);
}
});
fileMenu.add(newMenuItem);
newMenuItem.getAccessibleContext().setAccessibleName("New Menu Item");
newMenuItem.getAccessibleContext().setAccessibleDescription("New menu item.");
fileMenu.add(jSeparator1);
openMenuItem.setMnemonic('o');
openMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_O, java.awt.event.InputEvent.CTRL_MASK));
openMenuItem.setText("Open ...");
openMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
openMenuItemActionPerformed(evt);
}
});
fileMenu.add(openMenuItem);
openMenuItem.getAccessibleContext().setAccessibleName("Open Menu Item");
openMenuItem.getAccessibleContext().setAccessibleDescription("Open menu item.");
saveMenuItem.setMnemonic('s');
saveMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_S, java.awt.event.InputEvent.CTRL_MASK));
saveMenuItem.setText("Save");
saveMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
saveMenuItemActionPerformed(evt);
}
});
fileMenu.add(saveMenuItem);
saveMenuItem.getAccessibleContext().setAccessibleName("Save Menu Item");
saveMenuItem.getAccessibleContext().setAccessibleDescription("Save menu item.");
saveAsMenuItem.setMnemonic('a');
saveAsMenuItem.setText("Save As ...");
saveAsMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
saveAsMenuItemActionPerformed(evt);
}
});
fileMenu.add(saveAsMenuItem);
saveAsMenuItem.getAccessibleContext().setAccessibleName("Save As Menu Item");
saveAsMenuItem.getAccessibleContext().setAccessibleDescription("Save As menu item.");
fileMenu.add(jSeparator2);
exitMenuItem.setMnemonic('x');
exitMenuItem.setText("Exit");
exitMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
exitMenuItemActionPerformed(evt);
}
});
fileMenu.add(exitMenuItem);
exitMenuItem.getAccessibleContext().setAccessibleName("Exit Menu Item");
exitMenuItem.getAccessibleContext().setAccessibleDescription("Exit menu item.");
tedMenuBar.add(fileMenu);
fileMenu.getAccessibleContext().setAccessibleName("File Menu");
fileMenu.getAccessibleContext().setAccessibleDescription("File menu.");
editMenu.setMnemonic('e');
editMenu.setText("Edit");
findMenuItem.setMnemonic('f');
findMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F, java.awt.event.InputEvent.CTRL_MASK));
findMenuItem.setText("Find ...");
findMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
findMenuItemActionPerformed(evt);
}
});
editMenu.add(findMenuItem);
findMenuItem.getAccessibleContext().setAccessibleName("Find Menu Item");
findMenuItem.getAccessibleContext().setAccessibleDescription("Find menu item.");
tedMenuBar.add(editMenu);
editMenu.getAccessibleContext().setAccessibleName("Edit Menu");
editMenu.getAccessibleContext().setAccessibleDescription("Edit menu.");
helpMenu.setMnemonic('h');
helpMenu.setText("Help");
aboutMenuItem.setMnemonic('a');
aboutMenuItem.setText("About ...");
aboutMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
aboutMenuItemActionPerformed(evt);
}
});
helpMenu.add(aboutMenuItem);
aboutMenuItem.getAccessibleContext().setAccessibleName("About Menu Item");
aboutMenuItem.getAccessibleContext().setAccessibleDescription("About menu item.");
tedMenuBar.add(helpMenu);
helpMenu.getAccessibleContext().setAccessibleName("Help Menu");
helpMenu.getAccessibleContext().setAccessibleDescription("Help menu.");
setJMenuBar(tedMenuBar);
tedMenuBar.getAccessibleContext().setAccessibleName("Ted Menu Bar");
tedMenuBar.getAccessibleContext().setAccessibleDescription("Ted menu bar.");
}//GEN-END:initComponents
/** This method is called when File -> Save menu item is invoked.
* It saves the current opened file.
* @param evt ActionEvent instance passed from actionPerformed event.
*/
private void saveMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_saveMenuItemActionPerformed
if ("".equals(fileName))
doSaveAs();
else
doSave(fileName);
}//GEN-LAST:event_saveMenuItemActionPerformed
/** This method is called when File -> Exit menu item is invoked.
* It closes the application.
* @param evt ActionEvent instance passed from actionPerformed event.
*/
private void exitMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_exitMenuItemActionPerformed
System.exit(0);
}//GEN-LAST:event_exitMenuItemActionPerformed
/** This method is called when Edit -> Find menu item is invoked.
* It creates and shows the Finder frame to allow the user to search in the text.
* @param evt ActionEvent instance passed from actionPerformed event.
*/
private void findMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_findMenuItemActionPerformed
new Finder(this, textBox).show();
}//GEN-LAST:event_findMenuItemActionPerformed
/** This method is called when Help -> About menu item is invoked.
* It creates and shows the About dialog.
* @param evt ActionEvent instance passed from actionPerformed event.
*/
private void aboutMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_aboutMenuItemActionPerformed
new About(this). show();
}//GEN-LAST:event_aboutMenuItemActionPerformed
/** This method is called when File -> Save as menu item is invoked.
* It asks for a new file name, then saves the file.
* @param evt ActionEvent instance passed from actionPerformed event.
*/
private void saveAsMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_saveAsMenuItemActionPerformed
doSaveAs();
}//GEN-LAST:event_saveAsMenuItemActionPerformed
/** This method is called when File -> Open menu item is invoked.
* It displays a dialog to choose the file to be opened and edited.
* @param evt ActionEvent instance passed from actionPerformed event.
*/
private void openMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_openMenuItemActionPerformed
FileDialog fileDialog = new FileDialog(this, "Open...", FileDialog.LOAD);
fileDialog.show();
if (fileDialog.getFile() == null)
return;
fileName = fileDialog.getDirectory() + File.separator + fileDialog.getFile();
FileInputStream fis = null;
String str = null;
try {
fis = new FileInputStream(fileName);
int size = fis.available();
byte[] bytes = new byte [size];
fis.read(bytes);
str = new String(bytes);
} catch (IOException e) {
} finally {
try {
fis.close();
} catch (IOException e2) {
}
}
if (str != null)
textBox.setText(str);
}//GEN-LAST:event_openMenuItemActionPerformed
/** This method is called when File -> New menu item is invoked.
* It clears the editor pane.
* @param evt ActionEvent instance passed from actionPerformed event.
*/
private void newMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_newMenuItemActionPerformed
fileName = "";
textBox.setText("");
}//GEN-LAST:event_newMenuItemActionPerformed
/** This method is called when the application frame is closed.
* @param evt WindowEvent instance passed from windowClosing event.
*/
private void exitForm(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_exitForm
System.exit(0);
}//GEN-LAST:event_exitForm
/** Saves the current content of editor pane to the file.
* @param fileName Name of the file.
*/
private void doSave(String fileName) {
FileOutputStream fos = null;
String str = textBox.getText();
try {
fos = new FileOutputStream(fileName);
fos.write(str.getBytes());
} catch (IOException e) {
} finally {
try {
fos.close();
} catch (IOException e2) {
}
}
}
/** Asks for a file name. then saves the current content of editor pane to the file.
*/
private void doSaveAs() {
FileDialog fileDialog = new FileDialog(this, "Save As...", FileDialog.SAVE);
fileDialog.show();
if (fileDialog.getFile() == null)
return;
fileName = fileDialog.getDirectory() + File.separator + fileDialog.getFile();
doSave(fileName);
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JMenuItem aboutMenuItem;
private javax.swing.JMenu editMenu;
private javax.swing.JMenuItem exitMenuItem;
private javax.swing.JMenu fileMenu;
private javax.swing.JMenuItem findMenuItem;
private javax.swing.JMenu helpMenu;
private javax.swing.JSeparator jSeparator1;
private javax.swing.JSeparator jSeparator2;
private javax.swing.JMenuItem newMenuItem;
private javax.swing.JMenuItem openMenuItem;
private javax.swing.JMenuItem saveAsMenuItem;
private javax.swing.JMenuItem saveMenuItem;
private javax.swing.JMenuBar tedMenuBar;
private javax.swing.JTextArea textBox;
private javax.swing.JScrollPane textScrollPane;
// End of variables declaration//GEN-END:variables
private String fileName = "";
/** Starts the application.
* @param args Application arguments.
*/
public static void main(java.lang.String[] args) {
new Ted().show();
}
}