!7 sclass Entry { S item, reasoning, feedback = ""; sS _fieldOrder = "item reasoning feedback"; } cmodule ListWithFeedback > DynObjectTable { S description, computerNotes, humanNotes; start { defaultAction = voidfunc(Entry e) { inputText("Feedback for: " + e.item, e.feedback, feedback -> { e.feedback = feedback; change(); }); }; } /*visual jvsplit(0.2, dm_textAreaWithTitle computerNotes(), jvsplit(0.6/(1-0.2), super, dm_textAreaWithTitle humanNotes()));*/ visual northCenterAndSouthWithMargins( northAndCenterWithMargin( dm_textFieldWithLabel description(), jMinHeight(70, dm_textAreaWithTitle computerNotes())), withTitle("The List", super), jMinHeight(70, dm_textAreaWithTitle humanNotes())); // API // takes a list of strings or pairs (item + reasoning) void importItems(L l) { setData(map(l, o -> { o = quickImport(o); if (o cast Pair) ret nu Entry(item := o.a, reasoning := o.b); ret nu Entry(item := str(o)); })); } }