|
import scala.swing._ |
|
|
|
class BangIcon(ext: Int = 16) extends javax.swing.Icon { |
|
def getIconWidth = ext |
|
def getIconHeight = ext |
|
|
|
var selected = false |
|
|
|
def paintIcon(c: java.awt.Component, g: java.awt.Graphics, x: Int, y: Int) = |
|
if (selected) { |
|
val g2 = g.asInstanceOf[java.awt.Graphics2D] |
|
g2.setRenderingHint(java.awt.RenderingHints.KEY_ANTIALIASING, |
|
java.awt.RenderingHints.VALUE_ANTIALIAS_ON) |
|
g2.setColor(java.awt.Color.WHITE) |
|
// g2.fillRoundRect(x, y, ext, ext, 4, 4) |
|
g2.fillOval(x, y, ext, ext) |
|
} |
|
} |
|
|
|
// val icn = new BangIcon |
|
val r = new Button(" ") { |
|
var active = false |
|
|
|
// private val strkOut = new java.awt.BasicStroke(2f) |
|
|
|
private val el = new java.awt.geom.Ellipse2D.Double |
|
|
|
override def paintComponent(g2: java.awt.Graphics2D): Unit = { |
|
super.paintComponent(g2) |
|
g2.setRenderingHint(java.awt.RenderingHints.KEY_ANTIALIASING, |
|
java.awt.RenderingHints.VALUE_ANTIALIAS_ON) |
|
g2.setRenderingHint(java.awt.RenderingHints.KEY_STROKE_CONTROL, |
|
java.awt.RenderingHints.VALUE_STROKE_PURE) |
|
g2.setColor(foreground) // java.awt.Color.WHITE) |
|
val w = peer.getWidth |
|
val h = peer.getHeight |
|
val ext1 = math.max(0, math.min(w, h) - 14) |
|
// val strk = g2.getStroke |
|
// g2.setStroke(strkOut) |
|
// g2.drawOval((w - ext1) >> 1, (h - ext1) >> 1, ext1, ext1) |
|
el.setFrame((w - ext1) * 0.5, (h - ext1) * 0.5, ext1, ext1) |
|
g2.draw(el) |
|
// g2.setStroke(strk) |
|
if (active) { |
|
val ext2 = math.max(0, ext1 - 5) |
|
// g2.fillOval((w - ext2) >> 1, (h - ext2) >> 1, ext2, ext2) |
|
el.setFrame((w - ext2) * 0.5, (h - ext2) * 0.5, ext2, ext2) |
|
g2.fill(el) |
|
} |
|
} |
|
} |
|
//r.icon = icn |
|
val f = new Frame { |
|
contents = r |
|
pack() |
|
open() |
|
} |
|
|
|
r.active = !r.active; r.repaint() |
|
|
|
r.font = new java.awt.Font(java.awt.Font.SANS_SERIF, java.awt.Font.PLAIN, 30) |
|
r.revalidate(); f.pack() |
|
|
|
r.reactions += { |
|
case event.ButtonClicked(_) => |
|
r.active = !r.active; r.repaint() |
|
} |