in src/main/java/org/apache/log4j/chainsaw/LogPanel.java [2440:2500]
public void updateFindRule(String ruleText) {
if ((ruleText == null) || (ruleText.trim().equals(""))) {
findRule = null;
tableModel.updateEventsWithFindRule(null);
colorizer.setFindRule(null);
tableRuleMediator.setFindRule(null);
searchRuleMediator.setFindRule(null);
//reset background color in case we were previously an invalid expression
findCombo.setBackground(UIManager.getColor("TextField.background"));
findCombo.setToolTipText(
"Enter an expression - right click or ctrl-space for menu - press enter to add to list");
currentSearchMatchCount = 0;
currentFindRuleText = null;
statusBar.setSearchMatchCount(currentSearchMatchCount, getIdentifier());
//if the preference to show search results is enabled, the find rule is now null - hide search results
if (isSearchResultsVisible()) {
hideSearchResults();
}
} else {
//only turn off scrolltobottom when finding something (find not empty)
preferenceModel.setScrollToBottom(false);
if (ruleText.equals(currentFindRuleText)) {
//don't update events if rule hasn't changed (we're finding next/previous)
return;
}
currentFindRuleText = ruleText;
try {
final JTextField findText = (JTextField) findCombo.getEditor().getEditorComponent();
findText.setToolTipText(
"Enter an expression - right click or ctrl-space for menu - press enter to add to list");
findRule = ExpressionRule.getRule(ruleText);
currentSearchMatchCount = tableModel.updateEventsWithFindRule(findRule);
searchModel.updateEventsWithFindRule(findRule);
colorizer.setFindRule(findRule);
tableRuleMediator.setFindRule(findRule);
searchRuleMediator.setFindRule(findRule);
//valid expression, reset background color in case we were previously an invalid expression
findText.setBackground(UIManager.getColor("TextField.background"));
statusBar.setSearchMatchCount(currentSearchMatchCount, getIdentifier());
if (isSearchResultsVisible()) {
showSearchResults();
}
} catch (IllegalArgumentException re) {
findRule = null;
final JTextField findText = (JTextField) findCombo.getEditor().getEditorComponent();
findText.setToolTipText(re.getMessage());
findText.setBackground(ChainsawConstants.INVALID_EXPRESSION_BACKGROUND);
colorizer.setFindRule(null);
tableRuleMediator.setFindRule(null);
searchRuleMediator.setFindRule(null);
tableModel.updateEventsWithFindRule(null);
searchModel.updateEventsWithFindRule(null);
currentSearchMatchCount = 0;
statusBar.setSearchMatchCount(currentSearchMatchCount, getIdentifier());
//if the preference to show search results is enabled, the find rule is now null - hide search results
if (isSearchResultsVisible()) {
hideSearchResults();
}
}
}
}