summaryrefslogtreecommitdiff
path: root/src/swing/scala/swing/ColorChooser.scala
blob: 591e652f1c7a8537f81f147c4d939b0ff5ca669a (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
/*                     __                                               *\
**     ________ ___   / /  ___     Scala API                            **
**    / __/ __// _ | / /  / _ |    (c) 2007-2013, LAMP/EPFL             **
**  __\ \/ /__/ __ |/ /__/ __ |    http://scala-lang.org/               **
** /____/\___/_/ |_/____/_/ | |                                         **
**                          |/                                          **
\*                                                                      */



package scala.swing

import javax.swing.JColorChooser
import event._

/**
 * Wrapper for JColorChooser. Publishes  `ColorChanged` events, when the color selection changes.
 * 
 * @author andy@hicks.net
 * @author Ingo Maier
 * @see javax.swing.JColorChooser
 */
object ColorChooser {
  def showDialog(parent: Component, title: String, color: Color): scala.Option[Color] = {
    toOption[Color](javax.swing.JColorChooser.showDialog(parent.peer, title, color))
  }
}

class ColorChooser(color0: Color) extends Component  {
  def this() = this(java.awt.Color.white)
  
  override lazy val peer: JColorChooser =  new JColorChooser(color0) with SuperMixin

  peer.getSelectionModel.addChangeListener(new javax.swing.event.ChangeListener {
    def stateChanged(e: javax.swing.event.ChangeEvent) { 
      publish(ColorChanged(ColorChooser.this, peer.getColor)) 
    }
  })

  def color: Color = peer.getColor
  def color_=(c: Color) = peer.setColor(c)

  def dragEnabled: Boolean = peer.getDragEnabled
  def dragEnabled_=(b: Boolean) = peer.setDragEnabled(b)
}