private void updateReplaceComponent() { final int oldCaretPosition = myReplaceTextComponent != null ? myReplaceTextComponent.getCaretPosition() : 0; String oldText = myReplaceTextComponent != null ? myReplaceTextComponent.getText() : myFindModel.getStringToReplace(); if (!updateTextComponent(false)) { return; } if (oldText != null) { myReplaceTextComponent.setText(oldText); } myReplaceTextComponent .getDocument() .addDocumentListener( new DocumentAdapter() { @Override protected void textChanged(DocumentEvent e) { ApplicationManager.getApplication() .invokeLater( new Runnable() { @Override public void run() { replaceFieldDocumentChanged(); } }); } }); if (!getFindModel().isMultiline()) { new ReplaceOnEnterAction(this, myReplaceTextComponent); } // myReplaceTextComponent.setText(myFindModel.getStringToReplace()); ApplicationManager.getApplication() .invokeLater( new Runnable() { @Override public void run() { myReplaceTextComponent.setCaretPosition(oldCaretPosition); } }); new VariantsCompletionAction(myReplaceTextComponent); new NextOccurrenceAction(this, myReplaceFieldWrapper); new PrevOccurrenceAction(this, myReplaceFieldWrapper); myReplaceFieldWrapper.revalidate(); myReplaceFieldWrapper.repaint(); }