!7 cmodule GeneralDefinitions { transient S term; transient JPanel stack; transient OptionalInputPanel inputPanel; transient S listName = generalDefinitions_listName(); transient int maxResults = 500; start { dm_useLocallyCopiedMechLists(); dm_onTopInput(rstUpdate()); } visualize { inputPanel = new OptionalInputPanel(this); onEnter(inputPanel.tfInput, r addADefinition); stack = dynamicVStack2(); ret northCenterAndSouth( inputPanel.panel, jscroll_trackWidth(stack), withMargin(jcenteredbuttons("Add definition...", r addADefinition, "All definitions", r { showText("All definitions", ai_renderDefinitions( values(mechMultiMapPairsCI(listName)), values(mechMultiMapPairsCI("Unauthorized Appends | " + listName)))) }))); } void update { if (stack == null) ret; replaceAllComponents(stack, ll(fontSize(17, jCenteredMultiLineLabel(makeText(term = inputPanel.input()))))); } S makeText(fS query) { if (empty(query)) ret ""; MultiMap> map = mechMultiMapPairsCI(listName); L> answers = definitions_dropInvalidatedFromPairs(map.get(query)); MultiMap> map2 = mechMultiMapPairsCI("Unauthorized Appends | " + listName); L> answers2 = definitions_dropInvalidatedFromPairs(map2.get(query)); S text = trim(ai_renderDefinitions(answers, answers2) + "\n" + prependIfNempty("Possibly related:\n", lines(concatLists( scoredSearch2(maxResults, query, map(func(Pair p) -> S { ai_renderDefinition(p.a, p.b, false) }, listMinusSet(definitions_dropInvalidatedFromPairs(values(map)), answers))), scoredSearch2(maxResults, query, map(func(Pair p) -> S { ai_renderDefinition(p.a, p.b, true) }, listMinusSet(definitions_dropInvalidatedFromPairs(values(map2)), answers2))))))); ret empty(text) ? "No definitions found for " + quote(query) : text; } void addADefinition { temp enter(); fS t = term; final JTextField tfWord = jtextfield(t), tfDefinition = jtextfield(); showFormTitled("Add Definition", "Word/Phrase:", tfWord, "Definition:", tfDefinition, rThread { S word = gtt(tfWord), def = gtt(tfDefinition); Pair p = generalDefinitions_add(word, def); infoBox(p.b); if (p.a) updateMe(); }); requestFocus(tfDefinition); } }