1: //..+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
2: package berry.colorChart.scala
3:
4: import java.awt.Color
5: import swing._
6: import swing.event._
7:
8: // ----------------------------------------
9: object ColorButton {
10: val version = ColorButton
11: .getClass.getName+": #1.0.07"
12: }
13:
14: // ----------------------------------------
15: class ColorButton extends FlowPanel {
16:
17: val colorNames = Map(
18: "red" -> Color.red,
19: "green" -> Color.green,
20: "blue" -> Color.blue)
21:
22: // ----------------------------------------
23: val canvasPane = new FlowPanel {
24: preferredSize = new Dimension(100,100)
25: }
26:
27: val controlPane = new GridPanel(0,1) {
28: preferredSize = new Dimension(150,100)
29: colorNames.keys foreach (e =>
30: contents += new Button(e) {
31: Command.listenTo(this)
32: }
33: )
34: }
35: contents += new SplitPane(
36: Orientation.Vertical,
37: controlPane,
38: canvasPane) {
39: dividerLocation = 100
40: }
41:
42: // ----------------------------------------
43: def update(source: AbstractButton) {
44: canvasPane.background = colorNames(source.text)
45: }
46:
47: // ----------------------------------------
48: object Command extends Publisher {
49: reactions += {
50: case ButtonClicked(source) => update(source)
51: }
52: }
53: }
54:
55: // ========================================
56: /*'****************************************'
57: colorButton.scala:52: error: type mismatch;
58: found : scala.swing.AbstractButton
59: required: scala.swing.Button
60: case ButtonClicked(source) => update(source)
61: ^
62: one error found
63: '****************************************'*/