berry/colorChart/scala/colorTable.scala
1: //..+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8 2: package berry.colorChart.scala 3: 4: import java.awt.Color 5: import javax.swing.table.DefaultTableModel 6: import swing._ 7: import swing.event._ 8: 9: // ---------------------------------------- 10: object ColorTable { 11: val version = ColorTable 12: .getClass.getName+": #1.0.20a" 13: } 14: 15: // ---------------------------------------- 16: class ColorTable extends FlowPanel { 17: 18: val columnNames = Array("name","red","green","blue") 19: val colorNames = Map( 20: "red" -> Color.red, 21: "green" -> Color.green, 22: "blue" -> Color.blue, 23: "cyan" -> Color.cyan, 24: "magenta" -> Color.magenta, 25: "yellow" -> Color.yellow, 26: "black" -> Color.black, 27: "white" -> Color.white 28: ) 29: val items = for *1 47: } 48: } 49: peer.getColumnModel.getColumn(0).setPreferredWidth(120) 50: Command.listenTo(selection) 51: } 52: val controlPane = new ScrollPane { 53: contents = control 54: preferredSize = new Dimension(200,150) 55: } 56: 57: contents += new SplitPane( 58: Orientation.Vertical, 59: controlPane, 60: canvasPane) { 61: dividerLocation = 200 62: } 63: 64: // ---------------------------------------- 65: def update(source: Table) { 66: val row = source.selection.rows.leadIndex 67: val value = source.model.getValueAt(row, 0) 68: canvasPane.background = colorNames(value.toString) 69: } 70: 71: // ---------------------------------------- 72: object Command extends Publisher { 73: reactions += { 74: case TableRowsSelected(source, range, adjusting) => 75: update(source) 76: } 77: } 78: } 79: 80: // ========================================
*1:key, value) <- colorNames) yield { key } 30: 31: // ---------------------------------------- 32: val canvasPane = new FlowPanel { 33: preferredSize = new Dimension(100,100) 34: } 35: 36: val control = new Table() { 37: model = new DefaultTableModel { 38: for (e <- columnNames) { 39: addColumn(e) 40: } 41: for ((name, color) <- colorNames.toArray) { 42: addRow(Array[java.lang.Object]( 43: name, 44: color.getRed .toString, 45: color.getGreen.toString, 46: color.getBlue .toString