Files Framework
import java.io.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class FileExamples extends JFrame {
private static final int WINDOW_H = 500;
private static final int WINDOW_V = 300;
private final String READ_OPEN = "File open for Read:";
private final String WRITE_OPEN = "File open for Write:";
private final String NOT_OPEN = "File not open:";
private final int BUTTON_VGAP = 3;
private final int BUTTON_HGAP = 1;
private Container gui = getContentPane();
private String [] buttonLabels = {"New File", "Select File",
"Open/Read File",
"Open/Write File","Read File",
"Write File", "Close File", "Exit"};
private ActionListener []
actions = { new NewBL(), new SelectFileBL(),
new OpenReadBL(), new OpenWriteBL(),
new ReadBL(), new WriteBL(), new CloseBL(), new ExitBL() };
private JTextArea fileText = new JTextArea();
private JTextField filePath = new JTextField();
private FileWriter outStream;
private BufferedReader inStream;
public FileExamples() {
super("File Examples");
gui.add( new ButtonPanel(), BorderLayout.WEST );
JPanel filePanel = new JPanel();
filePanel.setLayout( new BorderLayout() );
filePanel.add( new ViewPanel(fileText, filePath), BorderLayout.CENTER );
gui.add(filePanel, BorderLayout.CENTER);
addWindowListener( new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
public static void main( String [] args ) {
FileExamples app = new FileExamples();
app.setSize(WINDOW_H, WINDOW_V);
app. setVisible(true);
}
private void doNewFile() {
JFileChooser chooser = new JFileChooser();
int returnVal = chooser.showDialog(this, "New File");
File theFile;
if (returnVal == JFileChooser.APPROVE_OPTION) {
theFile = chooser.getSelectedFile();
if (theFile.exists()) {
JOptionPane.showMessageDialog(this, "File Exists!");
filePath.setText("");
}
else {
filePath.setText( theFile.getAbsolutePath() );
}
}
else {
filePath.setText("");
}
}
private void doSelectFile() {
JFileChooser chooser = new JFileChooser();
int returnVal = chooser.showOpenDialog(this);
File theFile;
if (returnVal == JFileChooser.APPROVE_OPTION) {
theFile = chooser.getSelectedFile();
filePath.setText( theFile.getAbsolutePath() );
}
else {
filePath.setText("");
}
}
private void doOpenWriteFile() {
try {
outStream = new FileWriter( filePath.getText() );
}
catch (IOException e) {
JOptionPane.showMessageDialog( this, e.getMessage() );
}
catch (Exception e) {
JOptionPane.showMessageDialog(this, "wasssupppp" );
}
}
private void doOpenReadFile() {
try {
inStream = new BufferedReader(
new FileReader( filePath.getText() ));
}
catch (IOException e) {
JOptionPane.showMessageDialog( this, e.getMessage() );
}
catch (Exception e) {
JOptionPane.showMessageDialog(this, "wasssupppp" );
}
}
private void doReadFile() {
try {
String line = inStream.readLine();
while (line != null) {
fileText.append(line + "\n");
line = inStream.readLine();
}
}
catch(IOException e) {
JOptionPane.showMessageDialog( this, e.getMessage() );
}
catch(Exception e) {
JOptionPane.showMessageDialog( this, "Unknown read error" );
}
}
private void doWriteFile() {
try {
outStream.write( fileText.getText() );
JOptionPane.showMessageDialog( this, "Written" );
}
catch (IOException e) {
JOptionPane.showMessageDialog( this, e.getMessage() );
}
catch (Exception e) {
JOptionPane.showMessageDialog(this, e.getMessage() );
e.printStackTrace(System.out);
}
}
private void doCloseFile() {
try {
if (outStream != null)
outStream.close();
if (inStream != null)
inStream.close();
}
catch (IOException e) {
JOptionPane.showMessageDialog( this, e.getMessage() );
}
catch (Exception e) {
JOptionPane.showMessageDialog(this, "Unknown close error" );
}
}
private void doExit() {
System.exit(0);
}
private class NewBL implements ActionListener {
public void actionPerformed( ActionEvent e ) {
doNewFile();
}
}
private class SelectFileBL implements ActionListener {
public void actionPerformed( ActionEvent e ) {
doSelectFile();
}
}
private class OpenReadBL implements ActionListener {
public void actionPerformed( ActionEvent e ) {
doOpenReadFile();
}
}
private class OpenWriteBL implements ActionListener {
public void actionPerformed( ActionEvent e ) {
doOpenWriteFile();
}
}
private class ReadBL implements ActionListener {
public void actionPerformed( ActionEvent e ) {
doReadFile();
}
}
private class WriteBL implements ActionListener {
public void actionPerformed( ActionEvent e ) {
doWriteFile();
}
}
private class CloseBL implements ActionListener {
public void actionPerformed( ActionEvent e ) {
doCloseFile();
}
}
private class ExitBL implements ActionListener {
public void actionPerformed( ActionEvent e ) {
doExit();
}
}
private class ButtonPanel extends JPanel {
private GridLayout buttonLayout =
new GridLayout(buttonLabels.length, 1, BUTTON_HGAP, BUTTON_VGAP);
public ButtonPanel() {
setLayout( buttonLayout );
setBorder( BorderFactory.createTitledBorder("Actions") );
for (int i = 0; i < buttonLabels.length; i++) {
JButton button = new JButton( buttonLabels[i] );
button.addActionListener( actions[i] );
add( button );
}
}
}
private class ViewPanel extends JPanel {
public ViewPanel(JTextArea ta, JTextField tf) {
setLayout( new BorderLayout() );
setBorder( BorderFactory.createTitledBorder("File Panel") );
add( new JLabel( NOT_OPEN ), BorderLayout.NORTH );
add( new JScrollPane(ta), BorderLayout.CENTER );
add( new FilePathPanel(tf), BorderLayout.SOUTH );
}
}
private class FilePathPanel extends JPanel {
public FilePathPanel(JTextField tf) {
setLayout( new BorderLayout() );
add( new JLabel( "File Path:" ), BorderLayout.NORTH );
add( tf, BorderLayout.SOUTH );
}
}
}