!7 module PossibleLogFiles > DynObjectTable { start { //itemToMap = itemToMap_fullFilePath("Log File"); fS home = addSlash(userHome()); itemToMap = func(File f) -> Map { long time = f.lastModified(); ret litorderedmap( "Log File" := dropPrefix(home, f.getPath()), "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 { TableRowSorter sorter = new(table.getModel()); sorter.setSortKeys(ll(new RowSorter.SortKey(2, SortOrder.DESCENDING))); table.setRowSorter(sorter); //table.setAutoCreateRowSorter(true); setTableModel_fixSorter.put(table, voidfunc(JTable table, RowSorter sorter) { if (sorter cast TableRowSorter) { sorter.setComparator(1, alphaNumComparator()); //sorter.setComparator(2, alphaNumComparator()); sorter.setComparator(2, howLongAgo_comparator()); } }); //print("Made sorter: " + sorter); } } void fullUpdate() { temp enter(); setData(findProbableQuotedLogs()); } }