summaryrefslogtreecommitdiff
path: root/docs/examples/swing/ColorChooserDemo.scala
blob: 1cb2bdefa2b719bdd2c941f66b79b73ed55f3181 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package examples.swing

import java.awt.{Color, Font, Dimension}
import swing._
import event._
import Swing._
import BorderPanel._

/**
 * Demo for ColorChooser.
 * Based on http://download.oracle.com/javase/tutorial/uiswing/components/colorchooser.html
 * 
 * @author andy@hicks.net
 */
object ColorChooserDemo extends SimpleSwingApplication {
  def top = new MainFrame {
    title = "ColorChooser Demo"
    size = new Dimension(400, 400)
    
    contents = ui
  }

  def ui = new BorderPanel {
    val colorChooser = new ColorChooser {
      reactions += {
        case ColorChanged(_, c) =>
          banner.foreground = c
      }
    }

    colorChooser.border = TitledBorder(EtchedBorder, "Choose Text Color")
    
    val banner = new Label("Welcome to Scala Swing") {
      horizontalAlignment = Alignment.Center
      foreground = Color.yellow
      background = Color.blue
      opaque = true
      font = new Font("SansSerif", Font.BOLD, 24)
    }
   
    val bannerArea = new BorderPanel {
      layout(banner) = Position.Center
      border = TitledBorder(EtchedBorder, "Banner")
    }
    
    // Display a color selection dialog when button pressed 
    val selectColor = new Button("Choose Background Color") {
      reactions += {
        case ButtonClicked(_) =>
          ColorChooser.showDialog(this, "Test", Color.red) match {
            case Some(c) => banner.background = c
            case None =>
          }
      }
    }

    layout(bannerArea) = Position.North
    layout(colorChooser) = Position.Center
    layout(selectColor) = Position.South
  }
}