summaryrefslogtreecommitdiff
path: root/docs/examples/swing/Dialogs.scala
diff options
context:
space:
mode:
Diffstat (limited to 'docs/examples/swing/Dialogs.scala')
-rw-r--r--docs/examples/swing/Dialogs.scala176
1 files changed, 176 insertions, 0 deletions
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
+ }
+}
+