// This example is from the book _Java AWT Reference_ by John Zukowski. // Written by John Zukowski. Copyright (c) 1997 O'Reilly & Associates. // You may study, use, modify, and distribute this example for any purpose. // This example is provided WITHOUT WARRANTY either expressed or import java.awt.*; import java.io.*; public class FdTest extends Frame { TextArea myTextArea; Label myLabel; Button loadButton; Button saveButton; FdTest () { super ("File Dialog Tester"); Panel p = new Panel (); p.add (loadButton = new Button ("Load")); p.add (saveButton = new Button ("Save")); add ("North", myLabel = new Label ()); add ("South", p); add ("Center", myTextArea = new TextArea (10, 40)); Menu m = new Menu ("File"); m.add (new MenuItem ("Quit")); MenuBar mb = new MenuBar(); mb.add (m); setMenuBar (mb); pack(); } public static void main (String args[]) { FdTest f = new FdTest(); f.show(); } public boolean handleEvent (Event e) { if (e.id == Event.WINDOW_DESTROY) { hide (); dispose (); System.exit(0); return true; // never gets here } return super.handleEvent (e); } public boolean action (Event e, Object o) { if (e.target instanceof MenuItem) { hide (); dispose (); System.exit(0); return true; // never gets here } else if (e.target instanceof Button) { int state; String msg; if (e.target == loadButton) { state = FileDialog.LOAD; msg = "Load File"; } else { // if (e.target == saveButton) state = FileDialog.SAVE; msg = "Save File"; } FileDialog file = new FileDialog (this, msg, state); file.setFile ("*.java"); // Set initial filename filter file.show(); // Blocks String curFile; if ((curFile = file.getFile()) != null) { String filename = file.getDirectory() + curFile; // curFile ends in .*.* if file does not exist byte[] data; setCursor (Frame.WAIT_CURSOR); if (state == FileDialog.LOAD) { File f = new File (filename); try { FileInputStream fin = new FileInputStream (f); int filesize = (int)f.length(); data = new byte[filesize]; fin.read (data, 0, filesize+100); } catch (FileNotFoundException exc) { String errorString = "File Not Found: " + filename; data = new byte[errorString.length()]; errorString.getBytes (0, errorString.length(), data, 0); } catch (IOException exc) { String errorString = "IOException: " + filename; data = new byte[errorString.length()]; errorString.getBytes (0, errorString.length(), data, 0); } myLabel.setText ("Load: " + filename); } else { // Remove trailing ".*.*" if present - signifies file does not exist if (filename.indexOf (".*.*") != -1) { filename = filename.substring (0, filename.length()-4); } File f = new File (filename); try { FileOutputStream fon = new FileOutputStream (f); String text = myTextArea.getText(); int textsize = text.length(); data = new byte[textsize]; text.getBytes (0, textsize, data, 0); fon.write (data); fon.close (); } catch (IOException exc) { String errorString = "IOException: " + filename; data = new byte[errorString.length()]; errorString.getBytes (0, errorString.length(), data, 0); } myLabel.setText ("Save: " + filename); } // Note - on successful save, text is redisplayed myTextArea.setText (new String (data, 0)); setCursor (Frame.DEFAULT_CURSOR); } return true; } return false; } }