!7 sclass FollowUp > DynModule { visualize { L data = map(serverTelegramLog(), func(TelegramMsg msg) -> L { ll(msg.globalID, escapeNewLines(msg.text), false) }); final L cols = ll("Text", "Is Follow-Up"); final JTable table = sexyTable(); Pair p = fillTableWithData_makeData(data, cols); setTableModel(table, new DefaultTableModel(p.a, p.b) { public Class getColumnClass(int column) { return or(_getClass(getValueAt(0, column)), S.class); } public bool isCellEditable(int rowIndex, int columnIndex) { ret columnIndex == l(cols)-1; } }); onTableChanged(table, voidfunc(TableModelEvent e) { O facts = dm_getModule(dm_requireModule("#1017626/NewFacts")); int i = e.getFirstRow(), j = e.getLastRow(); for (; i <= j; i++) { bool b = isTrue(print(rawCellData(table, i, l(cols)-1))); S id = (S) rawCellData(table, i, 0); call(facts, 'add, "is a follow-up message"); }); ret table; } }