!7 module PossibleLogFiles > DynObjectTable { start { fS home = addSlash(userHome()); itemToMap = func(File f) -> Map { long time = f.lastModified(); ret litorderedmap( "Log File" := dropPrefix(home, f.getPath()), "Program" := unnull(snippetTitle_cached(firstSnippetIDFromPath(f))), "Size" := toK(fileSize(f)) + " K", "Changed" := /*howManySecondsAgo(time) + " (" +*/ renderHowLongAgo(time) /* + ")"*/, "Last Line" := simplifyLogLineForDisplay(lastLineOfFile(f))); }; doEveryAndNow(60.0, r fullUpdate); doEvery(3.0, r updateTable); } afterVisualize { swing { addRowSorter_desc(table, 3); setTableModel_fixSorter.put(table, voidfunc(JTable table, RowSorter sorter) { if (sorter cast TableRowSorter) { sorter.setComparator(2, alphaNumComparator()); //sorter.setComparator(3, alphaNumComparator()); sorter.setComparator(3, howLongAgo_comparator()); } }); //print("Made sorter: " + sorter); } } void fullUpdate() { temp enter(); setData(findProbableQuotedLogs()); } }