in ui/src/com/jediterm/terminal/ui/JediTermWidget.java [288:344]
private void showFindText() {
if (myFindComponent == null) {
myFindComponent = createSearchComponent();
final JComponent component = myFindComponent.getComponent();
myInnerPanel.add(component, TerminalLayout.FIND);
myInnerPanel.moveToFront(component);
myInnerPanel.revalidate();
myInnerPanel.repaint();
component.requestFocus();
JediTermSearchComponentListener listener = new JediTermSearchComponentListener() {
@Override
public void searchSettingsChanged(@NotNull String textToFind, boolean ignoreCase) {
findText(textToFind, ignoreCase);
}
@Override
public void hideSearchComponent() {
myInnerPanel.remove(component);
myInnerPanel.revalidate();
myInnerPanel.repaint();
myFindComponent = null;
myTerminalPanel.setFindResult(null);
myTerminalPanel.requestFocusInWindow();
}
@Override
public void selectNextFindResult() {
myFindComponent.onResultUpdated(myTerminalPanel.selectNextFindResultItem());
}
@Override
public void selectPrevFindResult() {
myFindComponent.onResultUpdated(myTerminalPanel.selectPrevFindResultItem());
}
};
myFindComponent.addListener(listener);
myFindComponent.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent keyEvent) {
if (keyEvent.getKeyCode() == KeyEvent.VK_ESCAPE) {
listener.hideSearchComponent();
}
else if (keyEvent.getKeyCode() == KeyEvent.VK_ENTER || keyEvent.getKeyCode() == KeyEvent.VK_DOWN) {
listener.selectNextFindResult();
}
else if (keyEvent.getKeyCode() == KeyEvent.VK_UP) {
listener.selectPrevFindResult();
}
}
});
} else {
myFindComponent.getComponent().requestFocus();
}
}