import scala.swing.{BorderPanel, Button, ListView, FlowPanel, MainFrame, Menu, MenuBar, MenuItem, ScrollPane, SimpleGUIApplication} import scala.swing.event.{ActionEvent, ButtonClicked} class HandGrepFrame(var lines:List[String]) extends MainFrame { title = "Hand Grep" menuBar = new MenuBar val menu:Menu = new Menu("file") val quitMenu:MenuItem = new MenuItem("quit") menu.contents += quitMenu menuBar.contents += menu val list:ListView[String] = new ListView(lines) val quit:Button = new Button("quit") contents = new BorderPanel { import BorderPanel.Position._ layout(new ScrollPane(list)) = Center layout(new FlowPanel(FlowPanel.Alignment.Right) { contents += quit }) = South } listenTo(quitMenu, quit) reactions += { case ActionEvent(`quitMenu`) | ButtonClicked(`quit`) => quitHandler } preferredSize = (600, 480) pack def quitHandler:Unit = { list.selection.items.foreach(Console.println) System.exit(0) } } object HandGrep extends SimpleGUIApplication { val lines:List[String] = readLines def readLines:List[String] = Console.in.ready match { case false => List[String]() case _ => Console.readLine :: readLines } def top = new HandGrepFrame(lines) }