1+ package org .knime .ext .jruby
2+
3+ import javax .swing .table ._
4+ import java .util ._
5+ // remove if not needed
6+ import scala .collection .JavaConversions ._
7+
8+ @ SerialVersionUID (3748218863796706007L )
9+ class ScriptNodeOutputColumnsTableModel extends AbstractTableModel {
10+
11+ private var data : ArrayList [ArrayList [Any ]] = new ArrayList [ArrayList [Any ]]()
12+
13+ private var columnNames : ArrayList [String ] = new ArrayList [String ]()
14+
15+ private var m_readOnly : Boolean = false
16+
17+ def getColumnName (col : Int ): String = columnNames.get(col).toString
18+
19+ def getRowCount (): Int = data.size
20+
21+ def getColumnCount (): Int = columnNames.size
22+
23+ def getValueAt (row : Int , col : Int ): AnyRef = {
24+ val rowList = data.get(row)
25+ rowList.get(col).asInstanceOf [AnyRef ]
26+ }
27+
28+ def isCellEditable (row : Int , col : Int ): Boolean = ! m_readOnly
29+
30+ def setReadOnly (readOnly : Boolean ) {
31+ m_readOnly = readOnly
32+ }
33+
34+ def setValueAt (value : AnyRef , row : Int , col : Int ) {
35+ val rowList = data.get(row)
36+ rowList.set(col, value)
37+ fireTableCellUpdated(row, col)
38+ }
39+
40+ def addRow (dataTableColumnName : AnyRef , dataTableColumnType : AnyRef ) {
41+ val row = new ArrayList [Any ]()
42+ row.add(dataTableColumnName)
43+ row.add(dataTableColumnType)
44+ data.add(row)
45+ val rowNum = data.size - 1
46+ fireTableRowsInserted(rowNum, rowNum)
47+ }
48+
49+ def removeRow (row : Int ) {
50+ data.remove(row)
51+ fireTableRowsDeleted(row, row)
52+ }
53+
54+ def addColumn (columnName : String ) {
55+ columnNames.add(columnName)
56+ }
57+
58+ def getDataTableColumnNames (): Array [String ] = getDataTableValues(0 )
59+
60+ def getDataTableColumnTypes (): Array [String ] = getDataTableValues(1 )
61+
62+ private def getDataTableValues (colIndex : Int ): Array [String ] = {
63+ val dataTableColumnValues = Array .ofDim[String ](data.size)
64+ val i = data.iterator()
65+ var rowNum = 0
66+ while (i.hasNext) {
67+ val row = i.next()
68+ dataTableColumnValues(rowNum) = row.get(colIndex).asInstanceOf [String ]
69+ rowNum += 1
70+ }
71+ dataTableColumnValues
72+ }
73+
74+ def clearRows () {
75+ data = new ArrayList [ArrayList [Any ]]()
76+ }
77+
78+ def moveRowsUp (rows : Array [Int ]) {
79+ for (j <- 0 until rows.length if rows(j) != 0 ) Collections .swap(data, rows(j), rows(j) - 1 )
80+ fireTableDataChanged()
81+ }
82+
83+ def moveRowsDown (rows : Array [Int ]) {
84+ var j = rows.length - 1
85+ while (j >= 0 ) {
86+ if (rows(j) != data.size - 1 ) Collections .swap(data, rows(j), rows(j) + 1 )
87+ j -= 1
88+ }
89+ fireTableDataChanged()
90+ }
91+
92+ /*
93+ Original Java:
194package org.knime.ext.jruby;
295
396import javax.swing.table.*;
@@ -104,3 +197,6 @@ public final void moveRowsDown(int[] rows) {
104197 fireTableDataChanged();
105198 }
106199}
200+
201+ */
202+ }
0 commit comments