import java.awt.*;
import java.awt.event.*;
import java.io.*;

public
class HelloApp extends Frame implements WindowListener, ActionListener
{
   TextArea textArea;
   public HelloApp ()
   {
      super();
      addWindowListener(this);
      setSize(320, 200);
      setTitle("Moja aplikacja w Javie");
      setLayout(null);
      
      textArea = new TextArea();
      textArea.setBounds(10, 50, 300, 160);
      this.add(textArea);
      
      MenuBar menuBar = new MenuBar();
      setMenuBar(menuBar);
      Menu menu = new Menu("Plik");
      menu.add(new MenuItem("Otwrz"));
      menu.add(new MenuItem("Zapisz"));
      menu.add(new MenuItem("-"));
      menu.add(new MenuItem("Zamknij"));
      menuBar.add(menu);
      
      menu.addActionListener(this);
      setVisible(true);
      textArea.setVisible(true);
   }
   public void actionPerformed(ActionEvent e){
      String command = e.getActionCommand();
      if (command.equals("Zamknij")){
         System.exit(0);
      }
      else if(command.equals("Otwrz")){
         String fileName = ShowDialog(FileDialog.LOAD);
         if (fileName != null){
            Load(fileName);
         }
      }
      else if (command.equals("Zapisz")){
         String fileName = ShowDialog(FileDialog.SAVE);
         if (fileName != null){
            Save(fileName);
         }
      }
   }
   public String ShowDialog(int mode){
      FileDialog fd = new FileDialog(this);
      fd.setMode(mode);
      fd.show();
      String fileName = fd.getFile();
      return (fileName);
   }
   public void Load(String fileName){
      String line = "";
      FileInputStream fin = null;
      File file = new File(fileName);
      try{
         fin = new FileInputStream(file);
      }
      catch(FileNotFoundException e){
         System.out.println("Brak pliku " + fileName);
         return;
      }
      DataInputStream out = new DataInputStream(fin);
      BufferedReader inbr = new BufferedReader(new InputStreamReader(fin));
      textArea.setText("");
      try{
         while ((line = inbr.readLine()) != null){
            textArea.append(line + '\n');
         }
      }
      catch(IOException e){
         System.out.println("Read/Write error");
      }
   }
   public void Save(String fileName){
      FileOutputStream fout = null;
      File file = new File(fileName);
      try{
         fout = new FileOutputStream(file);
      }
      catch(FileNotFoundException e){
         System.out.println("Brak pliku " + fileName);
         return;
      }
      DataOutputStream out = new DataOutputStream(fout);
      try{
         String line = textArea.getText();
         out.writeBytes(line + '\n');
      }
      catch(IOException e){
         System.out.println("Read/Write error");
      }

   }
   public void paint(Graphics gDC)
   {
   }
   public static void main(String args[])
   {
      new HelloApp();
   }
   public void windowClosing(WindowEvent e){
      System.exit(0);
   }
   public void windowClosed(WindowEvent e){
   }
   public void windowOpened(WindowEvent e){
   }
   public void windowIconified(WindowEvent e){
   }
   public void windowDeiconified(WindowEvent e){
   }
   public void windowActivated(WindowEvent e){
   }
   public void windowDeactivated(WindowEvent e){
   }
}
