Seach and replace inconsistency started from Seach (IDEA-160192)

This commit is contained in:
Maxim.Mossienko
2016-09-13 15:18:31 +02:00
parent f2eccfa6c5
commit 4e02ae82fe
4 changed files with 24 additions and 19 deletions
@@ -22,10 +22,7 @@ import com.intellij.codeInsight.hint.HintUtil;
import com.intellij.find.findUsages.PsiElement2UsageTargetAdapter;
import com.intellij.find.impl.FindInProjectUtil;
import com.intellij.find.replaceInProject.ReplaceInProjectManager;
import com.intellij.openapi.actionSystem.ActionManager;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.DataContext;
import com.intellij.openapi.actionSystem.IdeActions;
import com.intellij.openapi.actionSystem.*;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.command.CommandProcessor;
import com.intellij.openapi.editor.*;
@@ -157,6 +154,17 @@ public class FindUtil {
}
}
public static void useFindStringFromFindInFileModel(FindModel findModel, Editor editor) {
if (editor != null) {
EditorSearchSession editorSearchSession = EditorSearchSession.get(editor);
if (editorSearchSession != null) {
FindModel currentFindModel = editorSearchSession.getFindModel();
findModel.setStringToFind(currentFindModel.getStringToFind());
if (findModel.isReplaceState()) findModel.setStringToReplace(currentFindModel.getStringToReplace());
}
}
}
private enum Direction {
UP, DOWN
}
@@ -16,20 +16,14 @@
package com.intellij.find.findInProject;
import com.intellij.find.FindManager;
import com.intellij.find.FindModel;
import com.intellij.find.FindSettings;
import com.intellij.find.FindUtil;
import com.intellij.find.*;
import com.intellij.find.impl.FindInProjectUtil;
import com.intellij.find.impl.FindManagerImpl;
import com.intellij.find.replaceInProject.ReplaceInProjectManager;
import com.intellij.openapi.actionSystem.CommonDataKeys;
import com.intellij.openapi.actionSystem.DataContext;
import com.intellij.openapi.actionSystem.PlatformDataKeys;
import com.intellij.openapi.components.ServiceManager;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Factory;
import com.intellij.openapi.util.registry.Registry;
import com.intellij.ui.content.Content;
import com.intellij.usageView.UsageInfo;
@@ -76,9 +70,9 @@ public class FindInProjectManager {
FindModel.initStringToFindNoMultiline(findModel, text);
}
else {
Editor editor = CommonDataKeys.EDITOR.getData(dataContext);
FindUtil.initStringToFindWithSelection(findModel, editor);
FindInProjectUtil.initStringToFindFromDataContext(findModel, dataContext);
}
if (Registry.is("ide.find.as.popup")) {
findManager.showFindPopup(findModel, dataContext);
return;
@@ -425,6 +425,14 @@ public class FindInProjectUtil {
});
}
public static void initStringToFindFromDataContext(FindModel findModel, @NotNull DataContext dataContext) {
Editor editor = CommonDataKeys.EDITOR.getData(dataContext);
FindUtil.initStringToFindWithSelection(findModel, editor);
if (editor == null) {
FindUtil.useFindStringFromFindInFileModel(findModel, CommonDataKeys.EDITOR_EVEN_IF_INACTIVE.getData(dataContext));
}
}
public static class StringUsageTarget implements ConfigurableUsageTarget, ItemPresentation, TypeSafeDataProvider {
@NotNull protected final Project myProject;
@NotNull protected final FindModel myFindModel;
@@ -24,7 +24,6 @@ import com.intellij.find.impl.FindManagerImpl;
import com.intellij.ide.DataManager;
import com.intellij.notification.NotificationGroup;
import com.intellij.openapi.actionSystem.ActionManager;
import com.intellij.openapi.actionSystem.CommonDataKeys;
import com.intellij.openapi.actionSystem.DataContext;
import com.intellij.openapi.actionSystem.KeyboardShortcut;
import com.intellij.openapi.application.ApplicationManager;
@@ -32,14 +31,12 @@ import com.intellij.openapi.application.TransactionGuard;
import com.intellij.openapi.command.CommandProcessor;
import com.intellij.openapi.components.ServiceManager;
import com.intellij.openapi.editor.Document;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.MessageType;
import com.intellij.openapi.ui.Messages;
import com.intellij.openapi.util.Computable;
import com.intellij.openapi.util.Factory;
import com.intellij.openapi.util.Ref;
import com.intellij.openapi.util.Segment;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.vfs.ReadonlyStatusHandler;
import com.intellij.openapi.vfs.VfsUtilCore;
@@ -134,9 +131,7 @@ public class ReplaceInProjectManager {
findModel.setOpenInNewTabEnabled(isOpenInNewTabEnabled);
findModel.setOpenInNewTab(toOpenInNewTab);
FindInProjectUtil.setDirectoryName(findModel, dataContext);
Editor editor = CommonDataKeys.EDITOR.getData(dataContext);
FindUtil.initStringToFindWithSelection(findModel, editor);
FindInProjectUtil.initStringToFindFromDataContext(findModel, dataContext);
findManager.showFindDialog(findModel, () -> {
if (!findModel.isProjectScope() &&