Skip to content

Commit 587d54d

Browse files
committed
GUI: fixed input column's spec reading
1 parent 761366c commit 587d54d

File tree

2 files changed

+24
-30
lines changed

2 files changed

+24
-30
lines changed

RubyScript/src/org/knime/ext/jruby/RubyScriptNodeDialog.java

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import java.io.File;
1818
import java.io.FileReader;
1919
import java.io.IOException;
20+
import java.util.ArrayList;
2021
import java.util.Iterator;
2122
import java.util.List;
2223
import java.util.Map;
@@ -68,6 +69,8 @@ public class RubyScriptNodeDialog extends NodeDialogPane {
6869
private JCheckBox m_appendColsCB;
6970
private RubyScriptNodeFactory m_factory;
7071

72+
private JTable m_columnTable;
73+
7174
/**
7275
* New pane for configuring ScriptedNode node dialog.
7376
*
@@ -262,8 +265,7 @@ public void actionPerformed(final ActionEvent e) {
262265
scriptMainPanel.add(splitPane, BorderLayout.CENTER);
263266

264267
// add output column list
265-
List<DataColumnSpec> list = m_factory.getModel().getInputColumnList();
266-
JPanel inputColumnsPanel = addColumnPane("Input[0] columns: ", list);
268+
JPanel inputColumnsPanel = addColumnPane("Input[0] columns: ");
267269

268270
// add flow variables
269271
JPanel flowVariablesPanel = addFlowVariablesPane("Flow variables: ");
@@ -296,7 +298,7 @@ public void actionPerformed(final ActionEvent e) {
296298
* @param list of columns
297299
* @return JPanel
298300
*/
299-
private final JPanel addColumnPane(String label, List<DataColumnSpec> list) {
301+
private final JPanel addColumnPane(String label) {
300302
JPanel panel = new JPanel(new BorderLayout());
301303
JTable table = new JTable();
302304
table.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);
@@ -311,23 +313,30 @@ private final JPanel addColumnPane(String label, List<DataColumnSpec> list) {
311313
model.setReadOnly(true);
312314
table.setModel(model);
313315

314-
if (list != null) {
315-
for (Iterator<DataColumnSpec> i = list.iterator(); i.hasNext();) {
316-
DataColumnSpec spec = i.next();
317-
((ScriptNodeOutputColumnsTableModel) (table.getModel()))
318-
.addRow(spec.getName(), spec.getType().toString());
319-
}
320-
}
321316
JScrollPane scrollPane = new JScrollPane(table);
322317
table.setFillsViewportHeight(true);
323318

324319
panel.add(new JLabel(label), BorderLayout.NORTH);
325320
// inputColumnsPanel.add(m_inpputColumnsTable.getTableHeader(),
326321
// BorderLayout.PAGE_START);
327322
panel.add(scrollPane, BorderLayout.CENTER);
323+
m_columnTable = table;
328324
return panel;
329325
}
330326

327+
private final void updateColumnTable(final DataTableSpec[] specs) {
328+
if (specs != null && specs.length > 0) {
329+
ScriptNodeOutputColumnsTableModel model =
330+
(ScriptNodeOutputColumnsTableModel) (m_columnTable.getModel());
331+
model.clearRows();
332+
for (Iterator<DataColumnSpec> item = specs[0].iterator(); item
333+
.hasNext();) {
334+
DataColumnSpec spec = item.next();
335+
model.addRow(spec.getName(), spec.getType().toString());
336+
}
337+
}
338+
}
339+
331340
/**
332341
* Creates a panel with flow variable list
333342
* @param label
@@ -430,6 +439,8 @@ protected final void loadSettingsFrom(final NodeSettingsRO settings,
430439
((ScriptNodeOutputColumnsTableModel) m_table.getModel()).addRow(
431440
dataTableColumnNames[i], dataTableColumnTypes[i]);
432441
}
442+
443+
updateColumnTable(specs);
433444
}
434445

435446
/**

RubyScript/src/org/knime/ext/jruby/RubyScriptNodeModel.java

Lines changed: 3 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,7 @@
1313
import java.io.IOException;
1414
import java.net.URL;
1515
import java.util.ArrayList;
16-
import java.util.Hashtable;
17-
import java.util.Iterator;
1816
import java.util.List;
19-
import java.util.Map;
20-
import java.util.Vector;
2117
import java.util.regex.Matcher;
2218
import java.util.regex.Pattern;
2319

@@ -75,27 +71,26 @@ public class RubyScriptNodeModel extends NodeModel {
7571
protected boolean m_appendCols = true;
7672
protected String[] m_columnNames;
7773
protected String[] m_columnTypes;
78-
private ArrayList<DataColumnSpec> m_inputColumnList = null;
7974

8075
private static String m_javaExtDirsExtensionsPath;
8176
private static String m_javaClasspathExtensionsPath;
8277

8378
private boolean m_snippetMode;
8479

8580
private static Object m_ScriptingContainerLock = new Object();
86-
81+
8782
public class ScriptError {
8883
public int lineNum;
8984
public int columnNum;
9085
public String type;
9186
public String text;
9287
public String trace;
93-
public String msg;
88+
public String msg;
9489

9590
public ScriptError() {
9691
clear();
9792
}
98-
93+
9994
public void clear() {
10095
lineNum = -1;
10196
columnNum = -1;
@@ -370,14 +365,6 @@ protected final DataTableSpec[] configure(final DataTableSpec[] inSpecs)
370365
// append the property columns to the data table spec
371366
DataTableSpec newSpec = m_appendCols ? inSpecs[0] : new DataTableSpec();
372367

373-
if (m_numInputs > 0) {
374-
m_inputColumnList = new ArrayList<DataColumnSpec>();
375-
for (Iterator<DataColumnSpec> item = inSpecs[0].iterator(); item
376-
.hasNext();) {
377-
m_inputColumnList.add(item.next());
378-
}
379-
}
380-
381368
if (m_columnNames == null) {
382369
return new DataTableSpec[] { newSpec };
383370
}
@@ -620,8 +607,4 @@ private int findErrorSource(Throwable thr, String filename) {
620607
}
621608
return m_script_error.lineNum;
622609
}
623-
624-
public ArrayList<DataColumnSpec> getInputColumnList() {
625-
return m_inputColumnList;
626-
}
627610
}

0 commit comments

Comments
 (0)