public void performReplaceAll(Editor e) { if (!ReadonlyStatusHandler.ensureDocumentWritable(e.getProject(), e.getDocument())) return; if (mySearchResults.getFindModel() != null) { final FindModel copy = new FindModel(); copy.copyFrom(mySearchResults.getFindModel()); final SelectionModel selectionModel = mySearchResults.getEditor().getSelectionModel(); final int offset; if ((!selectionModel.hasSelection() && !selectionModel.hasBlockSelection()) || copy.isGlobal()) { copy.setGlobal(true); offset = 0; } else { offset = selectionModel.getBlockSelectionStarts()[0]; } FindUtil.replace(e.getProject(), e, offset, copy, this); } }
public void updateInBackground( FindModel findModel, final boolean allowedToChangedEditorSelection) { final int stamp = mySearchResults.getStamp(); myLivePreviewAlarm.cancelAllRequests(); if (findModel == null) return; final boolean unitTestMode = ApplicationManager.getApplication().isUnitTestMode(); final FindModel copy = new FindModel(); copy.copyFrom(findModel); Runnable request = new Runnable() { @Override public void run() { mySearchResults.updateThreadSafe(copy, allowedToChangedEditorSelection, null, stamp); } }; if (unitTestMode) { request.run(); } else { myLivePreviewAlarm.addRequest(request, myUserActivityDelay); } }
@Override public String getStringToReplace(Editor editor, FindResult findResult) { if (findResult == null) { return null; } String foundString = editor.getDocument().getText(findResult); String documentText = editor.getDocument().getText(); FindModel currentModel = mySearchResults.getFindModel(); String stringToReplace = null; if (currentModel != null) { if (currentModel.isReplaceState()) { FindManager findManager = FindManager.getInstance(editor.getProject()); try { stringToReplace = findManager.getStringToReplace( foundString, currentModel, findResult.getStartOffset(), documentText); } catch (FindManager.MalformedReplacementStringException e) { return null; } } } return stringToReplace; }