Skip to content

Commit 5fbf5cc

Browse files
committed
GUI: added reaction on dblclick for colunm's table
1 parent 21b3c23 commit 5fbf5cc

File tree

1 file changed

+35
-2
lines changed

1 file changed

+35
-2
lines changed

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

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,7 @@
1818
import java.io.File;
1919
import java.io.FileReader;
2020
import java.io.IOException;
21-
import java.util.ArrayList;
2221
import java.util.Iterator;
23-
import java.util.List;
2422
import java.util.Map;
2523

2624
import javax.swing.AbstractAction;
@@ -54,6 +52,10 @@
5452
public class RubyScriptNodeDialog extends NodeDialogPane {
5553

5654
private final static String TEMPLATE_FLOW_VAR = "FlowVariableList['%s'] ";
55+
// rules from knime.rb:
56+
// name = str.gsub(/[^[[:word:]]]/, '_').gsub(/\_+/, '_').chomp('_')
57+
// define_method("i#{i}_#{name}") where #{i} - index of the input port
58+
private final static String TEMPLATE_COLUMN_NAME = "i%d_%s ";
5759

5860
private static NodeLogger logger = NodeLogger
5961
.getLogger(RubyScriptNodeDialog.class);
@@ -324,6 +326,37 @@ private final JPanel addColumnPane(String label, int index) {
324326
model.setReadOnly(true);
325327
table.setModel(model);
326328

329+
// dblclick on a table's row
330+
table.addMouseListener(new MouseAdapter() {
331+
private int m_index;
332+
public void mouseClicked(MouseEvent event) {
333+
if (event.getClickCount() == 2) {
334+
JTable table = (JTable) event.getSource();
335+
Point p = event.getPoint();
336+
int row = table.rowAtPoint(p);
337+
if (row >= 0) {
338+
String name = table.getModel().getValueAt(row, 0)
339+
.toString();
340+
if (name.length() > 0) {
341+
// see knime.rb rules
342+
name = name.replaceAll("[^\\p{Alnum}]", "_")
343+
.replaceAll("\\_+", "_");
344+
if (name.charAt(name.length() - 1) == '_')
345+
name = name.substring(0, name.length() - 1);
346+
347+
m_scriptTextArea.insert(String.format(
348+
TEMPLATE_COLUMN_NAME, m_index, name),
349+
m_scriptTextArea.getCaretPosition());
350+
}
351+
}
352+
}
353+
}
354+
private MouseAdapter init(int index){
355+
m_index = index;
356+
return this;
357+
}
358+
}.init(index));
359+
327360
JScrollPane scrollPane = new JScrollPane(table);
328361
table.setFillsViewportHeight(true);
329362

0 commit comments

Comments
 (0)