11package org .knime .ext .jruby
22
33import javax .swing .table ._
4- import java .util ._
5- // remove if not needed
6- import scala .collection .JavaConversions ._
4+
5+ import scala .collection .mutable .ArrayBuffer
76
87/**
98 * This class realizes a model for the table
@@ -14,40 +13,44 @@ import scala.collection.JavaConversions._
1413 */
1514class ScriptNodeOutputColumnsTableModel extends AbstractTableModel {
1615
17- private var data : ArrayList [ ArrayList [ Any ]] = new ArrayList [ ArrayList [Any ]]()
16+ private var data = ArrayBuffer [ ArrayBuffer [Any ]]()
1817
19- private var columnNames : ArrayList [ String ] = new ArrayList [String ]()
18+ private var columnNames = ArrayBuffer [String ]()
2019
2120 private var m_readOnly : Boolean = false
2221
23- override def getColumnName (col : Int ): String = columnNames.get (col).toString
22+ override def getColumnName (col : Int ): String = columnNames(col)
2423
2524 def getRowCount (): Int = data.size
2625
2726 def getColumnCount (): Int = columnNames.size
2827
28+ /* (non-Javadoc)
29+ * @see javax.swing.table.TableModel#getValueAt(int, int)
30+ */
2931 def getValueAt (row : Int , col : Int ): AnyRef = {
30- val rowList = data.get(row)
31- rowList.get(col).asInstanceOf [AnyRef ]
32+ data(row)(col).asInstanceOf [AnyRef ]
3233 }
3334
35+ /* (non-Javadoc)
36+ * @see javax.swing.table.AbstractTableModel#isCellEditable(int, int)
37+ */
3438 override def isCellEditable (row : Int , col : Int ): Boolean = ! m_readOnly
3539
3640 def setReadOnly (readOnly : Boolean ) {
3741 m_readOnly = readOnly
3842 }
3943
44+ /* (non-Javadoc)
45+ * @see javax.swing.table.AbstractTableModel#setValueAt(java.lang.Object, int, int)
46+ */
4047 override def setValueAt (value : AnyRef , row : Int , col : Int ) {
41- val rowList = data.get(row)
42- rowList.set(col, value)
48+ data(row)(col) = value
4349 fireTableCellUpdated(row, col)
4450 }
4551
4652 def addRow (dataTableColumnName : AnyRef , dataTableColumnType : AnyRef ) {
47- val row = new ArrayList [Any ]()
48- row.add(dataTableColumnName)
49- row.add(dataTableColumnType)
50- data.add(row)
53+ data += ArrayBuffer [Any ](dataTableColumnName, dataTableColumnType)
5154 val rowNum = data.size - 1
5255 fireTableRowsInserted(rowNum, rowNum)
5356 }
@@ -58,39 +61,36 @@ class ScriptNodeOutputColumnsTableModel extends AbstractTableModel {
5861 }
5962
6063 def addColumn (columnName : String ) {
61- columnNames.add( columnName)
64+ columnNames += columnName
6265 }
6366
6467 def getDataTableColumnNames (): Array [String ] = getDataTableValues(0 )
6568
6669 def getDataTableColumnTypes (): Array [String ] = getDataTableValues(1 )
6770
6871 private def getDataTableValues (colIndex : Int ): Array [String ] = {
69- // val dataTableColumnValues = Array.ofDim[String](data.size)
70- // var rowNum = 0
71- // for (row <- data) {
72- // dataTableColumnValues(rowNum) = row.get(colIndex).asInstanceOf[String]
73- // rowNum += 1
74- // }
75- // dataTableColumnValues
76-
77- data.map(_.get(colIndex).asInstanceOf [String ]).toArray
72+ data.map(_(colIndex).asInstanceOf [String ]).toArray
7873 }
7974
8075 def clearRows () {
81- data = new ArrayList [ArrayList [Any ]]()
76+ data.clear()
77+ }
78+
79+ private def swap [T ](s: ArrayBuffer [T ], i : Int , j : Int ) {
80+ val v = s(i);
81+ s(i) = s(j);
82+ s(j) = v
8283 }
8384
8485 def moveRowsUp (rows : Array [Int ]) {
8586 for (j <- 0 until rows.length if rows(j) != 0 )
86- Collections . swap(data, rows(j), rows(j) - 1 )
87+ swap(data, rows(j), rows(j) - 1 )
8788 fireTableDataChanged()
8889 }
8990
9091 def moveRowsDown (rows : Array [Int ]) {
91- for (j <- rows.length - 1 to 0 ) {
92- if (rows(j) != data.size - 1 ) Collections .swap(data, rows(j), rows(j) + 1 )
93- }
92+ for (j <- rows.length - 1 to 0 if rows(j) != data.size - 1 )
93+ swap(data, rows(j), rows(j) + 1 )
9494 fireTableDataChanged()
9595 }
9696
0 commit comments