berry/colorChart/scala/colorButton.scala

  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: '****************************************'*/