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
  }
}