!7 abstract !include #1016674 // Module List sclass LoadedModuleSearch extends ModuleList { transient S query; transient new RestartableCountdown autoHide; void start { calculateWhenHidden = true; } JComponent visualize() { JComponent c = super.visualize(); onDoubleClickOrEnter(list, r { dm_hideModule() }); ret c; } void update { S s = unnullTrim(dm_getInterestingString()); if (neq(s, query)) { query = s; super.update(); if (nempty(query) && print("have results: ", nempty(results))) { dm_placeModuleUnderAIBar(this, query); dm_autoHide(autoHide); } else dm_hideModule(); } } L modulesToList() { if (empty(query)) ret emptyList(); L modules = super.modulesToList(); L results = scoredSearch_eachTerm(dm_getInterestingString(), map(modules, func(fO m) -> S { "[" + dm_moduleID(m) + "] " + pcallF(func -> S { dm_moduleName(m) }) + " / " + shortClassName(m) + " / " + getProgramID(m) })); ret map(results, func(S s) -> O { dm_getModule(leadingSquareBracketStuff(s)) }); } }