scala/ScalaBook/chapter-06/tables.scala

import scala.xml._
import scala.swing._
import scala.swing.event._


object table extends SimpleGUIApplication {
  var library = XML.loadFile("library.xml")
  var books : List[Array[Any]] = Nil
  for ( val book <- library \ "book" ) {
    var entry = new Array[Any](8)
    var i = 0
    for ( val author <- book \ "authors" \ "author" ) {
      entry(i) = author.text 
      i += 1
    }
    for ( j <- i to 2 ) {
      entry(i) = "No Author"
      i += 1
    }
    entry(i) = (book \ "title").text ; i += 1
    entry(i) = (book \ "subtitle").text ; i += 1
    entry(i) = (book \ "publisher").text ; i += 1
    entry(i) = (book \ "address").text ; i += 1
    entry(i) = (book \ "year").text.trim.toInt 
    books = books ++ List( entry.toArray ) 
  }  
  def top = new MainFrame {
    title = "XML Display"
    val columnNames = Array("First Author",
                            "Second Author",
                            "Third Author",
                            "Title",
                            "Subtitle",
                            "Publisher",
                            "Address",
                            "Year")
    
    val table = new Table( (books.toArray), columnNames) {
      preferredViewportSize = new java.awt.Dimension(900,200)
    }
    contents = new ScrollPane { contents = table }
    
//    listenTo(table.selection)
//    reactions += {
//      case TableRowsAdded(table,_) =>  
//    }
  }
}

// var model = table.peer.getModel()
//model.addRow(new Object[]{"v1", "v2"});