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 );   
      } 
   } 
}