!7 cmodule It > DynCalculatedList { int max = 100; transient S searched; transient LS results; transient OptionalInputPanel inputPanel; transient ReliableSingleThread rst; visualize { rst = new ReliableSingleThread(r search); inputPanel = new OptionalInputPanel; awtCalcEveryAndNow(inputPanel.panel(), 60.0, rst); JComponent sup = super.visualize(); ret northAndCenter(wrap(inputPanel), sup); } void update { rst.trigger(); super.update(); } void search { temp enter(); S s = inputPanel == null ? null : inputPanel.input(); if (neq(s, searched)) { searched = s; if (s == null) results = null; else results = snippetsWithTitles(tbSearch(max, inputPanel.input())); updateMe(); } } LS calc() { ret results; } }