in src/main/java/org/jetbrains/plugins/spotbugs/gui/tree/view/QuickSearch.java [581:687]
private void initGui(final String text) {
//addKeyListener(_keyListener);
_label = new JLabel("Search for: ");
//noinspection MagicNumber
_label.setFont(new Font(getFont().getName(), Font.BOLD, JBUIScale.scale(12)));
_label.setForeground(_foregroundColor);
_label.setVerticalAlignment(SwingConstants.BOTTOM);
_toolBar = new NavigationToolBar("test", false, SwingConstants.HORIZONTAL);
_toolBar.setForeground(_foregroundColor);
_toolBar.setVisible(false);
_searchField = new SearchField();
_searchField.setForeground(_foregroundColor);
_searchField.setFocusable(false);
_searchField.setOpaque(false);
_searchField.setBorder(BorderFactory.createEmptyBorder());
_searchField.setCursor(getCursor());
_searchField.getDocument().addDocumentListener(new DocumentListener() {
private final Timer _timer = new Timer(200, new ActionListener() {
public void actionPerformed(final ActionEvent e) {
doFind();
}
});
public void insertUpdate(final DocumentEvent e) {
startTimer();
}
public void removeUpdate(final DocumentEvent e) {
startTimer();
}
public void changedUpdate(final DocumentEvent e) {
startTimer();
}
void doFind() {
final String text = _searchField.getText().trim();
if (!text.isEmpty()) {
final int found = find(text);
if (found == -1) {
_noMatchForeground = getNoMatchForeground();
_searchField.setForeground(_noMatchForeground);
_toolBar.setVisible(false);
remove(_toolBar);
updatePopupBounds();
} else {
_searchField.setForeground(_foregroundColor);
_toolBar.setVisible(true);
add(_toolBar, BorderLayout.LINE_END);
QuickSearch.this.setCursor(found);
setSelectedElement(found);
updatePopupBounds();
}
} else {
hidePopup();
}
}
void startTimer() {
updatePopupBounds();
if (getSearchDelay() > 0) {
_timer.setInitialDelay(getSearchDelay());
if (_timer.isRunning()) {
_timer.restart();
} else {
_timer.setRepeats(false);
_timer.start();
}
} else {
doFind();
}
}
});
_searchField.setText(text);
setBackground(_backgroundColor);
setBorder(BorderFactory.createCompoundBorder(BorderFactory.createLineBorder(JBColor.GRAY, 1), BorderFactory.createEmptyBorder(1, 6, 1, 6)));
setLayout(new BorderLayout(2, 0));
/*final Dimension size = _label.getPreferredSize();
size.height = _searchField.getPreferredSize().height;
_label.setPreferredSize(size);
final Dimension toolBarSize = _toolBar.getPreferredSize();
toolBarSize.height = _searchField.getPreferredSize().height;*/
final Dimension size = _label.getPreferredSize();
size.height = _toolBar.getPreferredSize().height;
_label.setPreferredSize(size);
final Dimension sizeField = _searchField.getPreferredSize();
sizeField.height = size.height;
_searchField.setPreferredSize(sizeField);
add(_label, BorderLayout.LINE_START);
add(_searchField, BorderLayout.CENTER);
}