!7 sclass VidFile { File file; double length = -1; } cmodule AJCBatch > DynObjectTable { visualize { JComponent sup = super.visualize(); ret jHandleMultiFileDrop( //enclosingScrollPane(table), withTitle("Drag video files here:", sup), vf> onFileDrop); } void onFileDrop(L files) enter { print("Have file drop"); Set haveFiles = collectAsSet file(data()); addAll(map(listMinusSet(files, haveFiles), f -> nu VidFile(file := f))); } start { itemToMap = func(VidFile v) -> Map { litorderedmap( "Video" := fileName(v.file), "Folder" := dirPath(v.file), "Duration" := v.length < 0 ? "?" : formatMinuteAndSeconds(iceil(v.length)) ) }; } }