scala/ScalaBook/chapter-06/temp/tabs2.scala~
package components;
import swing._
import event._
import Swing._
FlowPanel(FlowPanel.Alignment.Left)
class ButtonTabComponent(val pane: TabbedPane) extends Component {
opaque = false
val label = new Label {
border = EmptyBorder(0,0,0,5)
def getText = {
val i = pane.peer.indexOfTabComponent(
ButtonTabComponent.this.asInstanceOf[java.awt.Component])
if (i != -1)
pane.peer.getTitleAt(i)
else
null
}
}
val button = new TabButton(Action("Open") {
val i = pane.peer.indexOfTabComponent(
ButtonTabComponent.this.asInstanceOf[java.awt.Component])
if ( i != -1 )
pane.pages.remove(i)
})
new FlowPanel(FlowPanel.Alignment.Left) {
contents += label
contents += button
border = EmptyBorder(2,0,0,0)
}
class TabButton extends Button {
def this(a: Action) = {
this()
action = a
}
val mysize = 17
preferredSize = (mysize, mysize)
tooltip = "close this tab"
peer.setUI(new javax.swing.plaf.basic.BasicButtonUI())
peer.setContentAreaFilled(false)
peer.setFocusable(false)
border = EtchedBorder
rolloverEnabled = true
override def paintComponent(g: java.awt.Graphics) {
super.paintComponent(g)
val g2 = g.asInstanceOf[java.awt.Graphics2D]
if ( peer.getModel().isPressed() )
g2.translate(1, 1)
g2.setStroke( new java.awt.BasicStroke(2) )
g2.setColor( java.awt.Color.black )
if ( peer.getModel().isRollover() )
g2.setColor( java.awt.Color.magenta )
val delta = 6
g2.drawLine(delta, delta, size.width - delta - 1, size.height - delta - 1)
g2.drawLine(size.width - delta - 1, delta, delta, size.height - delta - 1)
}
}
listenTo(Mouse.moves)
reactions += {
case MouseEntered(_,_,_) =>
button.borderPainted = true
case MouseExited(_,_,_) =>
button.borderPainted = false
}
}