void () { if (myConstraint == null) { return; } if (!isValid()) { myConstraint = null; return; } final String varName = myConstraint.getName(); final List<PsiElement> nodes = myCompiledPattern.getVariableNodes(varName); // replacement variable has no nodes final boolean completePattern = Configuration.CONTEXT_VAR_NAME.equals(varName); final boolean target = myConstraint instanceof MatchVariableConstraint && ((MatchVariableConstraint)myConstraint).isPartOfSearchResults(); myTableModel.setItems(new SmartList<>()); ReadAction.run(() -> { for (FilterAction filter : myFilters) { initFilter(filter, nodes, completePattern, target); } }); final String message; if (myConstraint instanceof MatchVariableConstraint) { message = Configuration.CONTEXT_VAR_NAME.equals(varName) ? SSRBundle.message("no.filters.whole.template.label") : SSRBundle.message("no.filters.for.0.label", varName); } else { message = SSRBundle.message("no.script.for.0.label", varName); } final StatusText statusText = myFilterTable.getTable().getEmptyText(); statusText.clear(); Arrays.stream(message.split("\n")).forEach((@NlsSafe var line) -> statusText.appendLine(line)); if (isValid()) { statusText.appendLine(myConstraint instanceof MatchVariableConstraint ? SSRBundle.message("add.filter.label") : SSRBundle.message("add.script.label"), SimpleTextAttributes.LINK_PLAIN_ATTRIBUTES, e -> showAddFilterPopup(myFilterTable.getTable(), new RelativePoint(MouseInfo.getPointerInfo().getLocation()))); } }