diff options
Diffstat (limited to 'platform/lang-impl/src/com/intellij/find/replaceInProject/ReplaceInProjectManager.java')
-rw-r--r-- | platform/lang-impl/src/com/intellij/find/replaceInProject/ReplaceInProjectManager.java | 31 |
1 files changed, 24 insertions, 7 deletions
diff --git a/platform/lang-impl/src/com/intellij/find/replaceInProject/ReplaceInProjectManager.java b/platform/lang-impl/src/com/intellij/find/replaceInProject/ReplaceInProjectManager.java index 7e220c149369..0c6a3766342d 100644 --- a/platform/lang-impl/src/com/intellij/find/replaceInProject/ReplaceInProjectManager.java +++ b/platform/lang-impl/src/com/intellij/find/replaceInProject/ReplaceInProjectManager.java @@ -20,6 +20,7 @@ import com.intellij.find.*; import com.intellij.find.actions.FindInPathAction; import com.intellij.find.findInProject.FindInProjectManager; import com.intellij.find.impl.FindInProjectUtil; +import com.intellij.find.impl.FindManagerImpl; import com.intellij.ide.DataManager; import com.intellij.notification.NotificationGroup; import com.intellij.openapi.actionSystem.ActionManager; @@ -38,6 +39,7 @@ 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; import com.intellij.openapi.vfs.VirtualFile; @@ -48,9 +50,8 @@ import com.intellij.psi.PsiDocumentManager; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.ui.content.Content; -import com.intellij.usageView.*; +import com.intellij.usageView.UsageInfo; import com.intellij.usages.*; -import com.intellij.usages.UsageViewManager; import com.intellij.usages.impl.UsageViewImpl; import com.intellij.usages.rules.UsageInFile; import com.intellij.util.AdapterProcessor; @@ -115,9 +116,23 @@ public class ReplaceInProjectManager { } public void replaceInProject(@NotNull DataContext dataContext) { + final boolean isOpenInNewTabEnabled; + final boolean toOpenInNewTab; + final Content selectedContent = com.intellij.usageView.UsageViewManager.getInstance(myProject).getSelectedContent(true); + if (selectedContent != null && selectedContent.isPinned()) { + toOpenInNewTab = true; + isOpenInNewTabEnabled = false; + } + else { + toOpenInNewTab = FindSettings.getInstance().isShowResultsInSeparateView(); + isOpenInNewTabEnabled = com.intellij.usageView.UsageViewManager.getInstance(myProject).getReusableContentsCount() > 0; + } final FindManager findManager = FindManager.getInstance(myProject); - final FindModel findModel = (FindModel)findManager.getFindInProjectModel().clone(); + final FindModel findModel = findManager.getFindInProjectModel().clone(); findModel.setReplaceState(true); + findModel.setOpenInNewTabVisible(true); + findModel.setOpenInNewTabEnabled(isOpenInNewTabEnabled); + findModel.setOpenInNewTab(toOpenInNewTab); FindInProjectUtil.setDirectoryName(findModel, dataContext); Editor editor = CommonDataKeys.EDITOR.getData(dataContext); @@ -138,9 +153,9 @@ public class ReplaceInProjectManager { if (manager == null) return; findManager.getFindInProjectModel().copyFrom(findModel); - final FindModel findModelCopy = (FindModel)findModel.clone(); + final FindModel findModelCopy = findModel.clone(); - final UsageViewPresentation presentation = FindInProjectUtil.setupViewPresentation(true, findModelCopy); + final UsageViewPresentation presentation = FindInProjectUtil.setupViewPresentation(findModel.isOpenInNewTab(), findModelCopy); final FindUsagesProcessPresentation processPresentation = FindInProjectUtil.setupProcessPresentation(myProject, true, presentation); UsageSearcherFactory factory = new UsageSearcherFactory(findModelCopy, psiDirectory, processPresentation); @@ -168,7 +183,7 @@ public class ReplaceInProjectManager { @Override public String getLongDescriptiveName() { UsageViewPresentation presentation = FindInProjectUtil.setupViewPresentation(false, myFindModel); - return "Replace "+presentation.getToolwindowTitle()+" with '"+ myFindModel.getStringToReplace()+"'"; + return "Replace "+ StringUtil.decapitalize(presentation.getToolwindowTitle())+" with '"+ myFindModel.getStringToReplace()+"'"; } @Override @@ -193,7 +208,9 @@ public class ReplaceInProjectManager { final FindManager findManager) { presentation.setMergeDupLinesAvailable(false); final ReplaceContext[] context = new ReplaceContext[1]; - manager.searchAndShowUsages(new UsageTarget[]{new ReplaceInProjectTarget(myProject, findModelCopy)}, + final ReplaceInProjectTarget target = new ReplaceInProjectTarget(myProject, findModelCopy); + ((FindManagerImpl)FindManager.getInstance(myProject)).getFindUsagesManager().addToHistory(target); + manager.searchAndShowUsages(new UsageTarget[]{target}, usageSearcherFactory, processPresentation, presentation, new UsageViewManager.UsageViewStateListener() { @Override public void usageViewCreated(@NotNull UsageView usageView) { |