private void showFindText()

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();
    }
  }