// // almost the simplest possible GUI-based file editor // import scala.swing._ // component that allows entering/modifying multiple lines of text val textArea = new TextArea(20,60) // graphical "file chooser" val chooser = new FileChooser // clear text area def clear() = { textArea.text = "" } // get contents of file into text area def open() = { if (chooser.showOpenDialog(textArea)==FileChooser.Result.Approve) { val src = scala.io.Source.fromFile(chooser.selectedFile) textArea.text = src.getLines.mkString("\n") src.close } } // write contents of text area to file def save() = { if (chooser.showSaveDialog(textArea)==FileChooser.Result.Approve) { val pw = new java.io.PrintWriter( new java.io.File(chooser.selectedFile.toString)) pw.println(textArea.text) pw.close } } // menu val fileMenu = new Menu("File") { contents += new MenuItem(Action("Open")( open() )) contents += new MenuItem(Action("Save")( save() )) contents += new MenuItem(Action("Clear")( clear() )) contents += new MenuItem(Action("Exit")( sys.exit(0) )) } // main layout val frame = new MainFrame { title = "Simple Editor" contents = new BorderPanel { layout += (new ScrollPane(textArea) -> BorderPanel.Position.Center) } menuBar = new MenuBar { contents += fileMenu } } // start up frame.visible = true