From f3e7e98cc0f47eacb59400b2c56c6bd2cb8b2ebc Mon Sep 17 00:00:00 2001 From: Simon Ochsenreither Date: Wed, 7 Dec 2011 21:52:20 +0100 Subject: Clean up standard/swing library by deprecating/moving code examples Deprecate scala/xml/include/sax/Main.scala. Move scala/swing/test/* to docs/examples. Saves 160KB in scala-swing.jar. Fixes SI-4627. --- docs/examples/swing/Dialogs.scala | 176 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 176 insertions(+) create mode 100644 docs/examples/swing/Dialogs.scala (limited to 'docs/examples/swing/Dialogs.scala') diff --git a/docs/examples/swing/Dialogs.scala b/docs/examples/swing/Dialogs.scala new file mode 100644 index 0000000000..0b4ac258cf --- /dev/null +++ b/docs/examples/swing/Dialogs.scala @@ -0,0 +1,176 @@ +package examples.swing + +import swing._ +import swing.event._ + +object Dialogs extends SimpleSwingApplication { + import TabbedPane._ + + lazy val label = new Label("No Result yet") + lazy val tabs = new TabbedPane { + pages += new Page("File", new GridBagPanel { grid => + import GridBagPanel._ + val buttonText = new TextField("Click Me") + + val c = new Constraints + c.fill = Fill.Horizontal + c.grid = (1,1) + + val chooser = new FileChooser + layout(new Button(Action("Open") { + chooser.showOpenDialog(grid) + })) = c + + c.grid = (1,2) + layout(new Button(Action("Save") { + chooser.showSaveDialog(grid) + })) = c + + c.grid = (1,3) + layout(new Button(Action("Custom") { + chooser.showDialog(grid, buttonText.text) + })) = c + + c.grid = (2,3) + layout(new Label(" with Text ")) = c + + c.grid = (3,3) + c.ipadx = 50 + layout(buttonText) = c + + border = Swing.EmptyBorder(5, 5, 5, 5) + }) + pages += new Page("Simple Modal Dialogs", new BorderPanel { + import BorderPanel._ + val mutex = new ButtonGroup + val ok = new RadioButton("OK (in the L&F's words)") + val ynlf = new RadioButton("Yes/No (in the L&F's words)") + val ynp = new RadioButton("Yes/No (in the programmer's words)") + val yncp = new RadioButton("Yes/No/Cancel (in the programmer's words)") + val radios = List(ok, ynlf, ynp, yncp) + mutex.buttons ++= radios + mutex.select(ok) + val buttons = new BoxPanel(Orientation.Vertical) { + contents ++= radios + } + layout(buttons) = Position.North + layout(new Button(Action("Show It!") { + import Dialog._ + mutex.selected.get match { + case `ok` => + showMessage(buttons, "Eggs aren't supposed to be green.") + case `ynlf` => + label.text = showConfirmation(buttons, + "Would you like green eggs and ham?", + "An Inane Question") match { + case Result.Yes => "Ewww!" + case Result.No => "Me neither!" + case _ => "Come on -- tell me!" + } + case `ynp` => + val options = List("Yes, please", + "No, thanks", + "No eggs, no ham!") + label.text = showOptions(buttons, + "Would you like some green eggs to go with that ham?", + "A Silly Question", + entries = options, + initial = 2) match { + case Result.Yes => "You're kidding!" + case Result.No => "I don't like them, either." + case _ => "Come on -- 'fess up!" + } + case `yncp` => + val options = List("Yes, please", + "No, thanks", + "No eggs, no ham!") + label.text = showOptions(buttons, + message = "Would you like some green eggs to go with that ham?", + title = "A Silly Question", + entries = options, + initial = 2) match { + case Result.Yes => "Here you go: green eggs and ham!" + case Result.No => "OK, just the ham, then." + case Result.Cancel => "Well, I'm certainly not going to eat them!" + case _ => "Please tell me what you want!" + } + } + })) = Position.South + }) + pages += new Page("More Dialogs", new BorderPanel { + import BorderPanel._ + val mutex = new ButtonGroup + val pick = new RadioButton("Pick one of several choices") + val enter = new RadioButton("Enter some text") + val custom = new RadioButton("Custom") + val customUndec = new RadioButton("Custom undecorated") + val custom2 = new RadioButton("2 custom dialogs") + val radios = List(pick, enter, custom, customUndec, custom2) + mutex.buttons ++= radios + mutex.select(pick) + val buttons = new BoxPanel(Orientation.Vertical) { + contents ++= radios + } + layout(buttons) = Position.North + layout(new Button(Action("Show It!") { + import Dialog._ + mutex.selected.get match { + case `pick` => + val possibilities = List("ham", "spam", "yam") + val s = showInput(buttons, + "Complete the sentence:\n\"Green eggs and...\"", + "Customized Dialog", + Message.Plain, + Swing.EmptyIcon, + possibilities, "ham") + + //If a string was returned, say so. + label.text = if ((s != None) && (s.get.length > 0)) + "Green eggs and... " + s.get + "!" + else + "Come on, finish the sentence!" + case `enter` => + val s = showInput(buttons, + "Complete the sentence:\n\"Green eggs and...\"", + "Customized Dialog", + Message.Plain, + Swing.EmptyIcon, + Nil, "ham") + + //If a string was returned, say so. + label.text = if ((s != None) && (s.get.length > 0)) + "Green eggs and... " + s.get + "!" + else + "Come on, finish the sentence!" + case `custom` => + val dialog = new Dialog(top) + dialog.open() + dialog.contents = Button("Close Me!") { dialog.close() } + case `customUndec` => + val dialog = new Dialog with RichWindow.Undecorated + dialog.open() + dialog.contents = Button("Close Me!") { dialog.close() } + case `custom2` => + val d1 = new Dialog + val d2 = new Dialog(d1) + d1.open() + d2.open() + d1.contents = Button("Close Me! I am the owner and will automatically close the other one") { d1.close() } + d2.contents = Button("Close Me!") { d2.close() } + } + })) = Position.South + }) + } + + lazy val ui: Panel = new BorderPanel { + layout(tabs) = BorderPanel.Position.Center + layout(label) = BorderPanel.Position.South + } + + + lazy val top = new MainFrame { + title = "Dialog Demo" + contents = ui + } +} + -- cgit v1.2.3