From b1e6a419982f819a1de0b02effc48ff59e1adff8 Mon Sep 17 00:00:00 2001 From: "Vassiliy.Kudryashov" Date: Thu, 5 Jul 2018 01:44:43 +0300 Subject: [PATCH] IDEA-195072 Make 'Open in new tab' option always visible --- .../src/com/intellij/find/FindModel.java | 20 +++------------ .../findInProject/FindInProjectManager.java | 4 +-- .../com/intellij/find/impl/FindDialog.java | 16 ++++++------ .../intellij/find/impl/FindPopupPanel.java | 2 +- .../ReplaceInProjectManager.java | 25 ++++++++++--------- 5 files changed, 25 insertions(+), 42 deletions(-) diff --git a/platform/indexing-api/src/com/intellij/find/FindModel.java b/platform/indexing-api/src/com/intellij/find/FindModel.java index c8498ee2370d..5579cada707b 100644 --- a/platform/indexing-api/src/com/intellij/find/FindModel.java +++ b/platform/indexing-api/src/com/intellij/find/FindModel.java @@ -83,7 +83,6 @@ public class FindModel extends UserDataHolderBase implements Cloneable { private boolean isReplaceAll; private boolean isOpenNewTab; private boolean isOpenInNewTabEnabled; - private boolean isOpenNewTabVisible; private boolean isProjectScope = true; private boolean isFindAll; private boolean isFindAllEnabled; @@ -156,7 +155,6 @@ public class FindModel extends UserDataHolderBase implements Cloneable { isReplaceAll = model.isReplaceAll; isOpenNewTab = model.isOpenNewTab; isOpenInNewTabEnabled = model.isOpenInNewTabEnabled; - isOpenNewTabVisible = model.isOpenNewTabVisible; isProjectScope = model.isProjectScope; directoryName = model.directoryName; isWithSubdirectories = model.isWithSubdirectories; @@ -195,7 +193,6 @@ public class FindModel extends UserDataHolderBase implements Cloneable { if (isMultipleFiles != findModel.isMultipleFiles) return false; if (isOpenInNewTabEnabled != findModel.isOpenInNewTabEnabled) return false; if (isOpenNewTab != findModel.isOpenNewTab) return false; - if (isOpenNewTabVisible != findModel.isOpenNewTabVisible) return false; if (isPreserveCase != findModel.isPreserveCase) return false; if (isProjectScope != findModel.isProjectScope) return false; if (isPromptOnReplace != findModel.isPromptOnReplace) return false; @@ -238,7 +235,6 @@ public class FindModel extends UserDataHolderBase implements Cloneable { result = 31 * result + (isReplaceAll ? 1 : 0); result = 31 * result + (isOpenNewTab ? 1 : 0); result = 31 * result + (isOpenInNewTabEnabled ? 1 : 0); - result = 31 * result + (isOpenNewTabVisible ? 1 : 0); result = 31 * result + (isProjectScope ? 1 : 0); result = 31 * result + (isFindAll ? 1 : 0); result = 31 * result + (isFindAllEnabled ? 1 : 0); @@ -566,25 +562,16 @@ public class FindModel extends UserDataHolderBase implements Cloneable { } /** - * Gets the value indicating whether the Open in New Tab flag is visible for the operation. - * - * @return true if Open in New Tab is visible, false otherwise. + * @deprecated and not used anymore */ public boolean isOpenInNewTabVisible() { - return isOpenNewTabVisible; + return true; } /** - * Sets the value indicating whether the Open in New Tab flag is enabled for the operation. - * - * @param showInNewTabVisible true if Open in New Tab is visible, false otherwise. + * @deprecated and not used anymore */ public void setOpenInNewTabVisible(boolean showInNewTabVisible) { - boolean changed = showInNewTabVisible != isOpenNewTabVisible; - isOpenNewTabVisible = showInNewTabVisible; - if (changed) { - notifyObservers(); - } } /** @@ -687,7 +674,6 @@ public class FindModel extends UserDataHolderBase implements Cloneable { "isReplaceAll =" + isReplaceAll + "\n" + "isOpenNewTab =" + isOpenNewTab + "\n" + "isOpenInNewTabEnabled =" + isOpenInNewTabEnabled + "\n" + - "isOpenNewTabVisible =" + isOpenNewTabVisible + "\n" + "isProjectScope =" + isProjectScope + "\n" + "directoryName =" + directoryName + "\n" + "isWithSubdirectories =" + isWithSubdirectories + "\n" + diff --git a/platform/lang-impl/src/com/intellij/find/findInProject/FindInProjectManager.java b/platform/lang-impl/src/com/intellij/find/findInProject/FindInProjectManager.java index b270598fdc3a..16e5cd75c4c0 100644 --- a/platform/lang-impl/src/com/intellij/find/findInProject/FindInProjectManager.java +++ b/platform/lang-impl/src/com/intellij/find/findInProject/FindInProjectManager.java @@ -67,11 +67,11 @@ public class FindInProjectManager { final FindModel findModel; if (model != null) { findModel = model.clone(); + findModel.setOpenInNewTabEnabled(isOpenInNewTabEnabled); } else { findModel = findManager.getFindInProjectModel().clone(); findModel.setReplaceState(false); - findModel.setOpenInNewTabVisible(true); findModel.setOpenInNewTabEnabled(isOpenInNewTabEnabled); findModel.setOpenInNewTab(toOpenInNewTab); initModel(findModel, dataContext); @@ -87,12 +87,10 @@ public class FindInProjectManager { } public void findInPath(@NotNull FindModel findModel) { - findModel.setOpenInNewTabVisible(false); if (findModel.isOpenInNewTabEnabled()) { FindSettings.getInstance().setShowResultsInSeparateView(findModel.isOpenInNewTab()); } startFindInProject(findModel); - findModel.setOpenInNewTabVisible(false); } @SuppressWarnings("WeakerAccess") diff --git a/platform/lang-impl/src/com/intellij/find/impl/FindDialog.java b/platform/lang-impl/src/com/intellij/find/impl/FindDialog.java index ee7b28e86c42..02ef11e5206d 100644 --- a/platform/lang-impl/src/com/intellij/find/impl/FindDialog.java +++ b/platform/lang-impl/src/com/intellij/find/impl/FindDialog.java @@ -651,16 +651,14 @@ public class FindDialog extends DialogWrapper implements FindUI { topOptionsPanel.add(leftOptionsPanel); } - if (myHelper.getModel().isOpenInNewTabVisible()){ - myCbToOpenInNewTab = new JCheckBox(FindBundle.message("find.open.in.new.tab.checkbox")); - myCbToOpenInNewTab.setFocusable(false); - myCbToOpenInNewTab.setSelected(myHelper.isUseSeparateView()); - myCbToOpenInNewTab.setEnabled(myHelper.getModel().isOpenInNewTabEnabled()); - myCbToOpenInNewTab.addActionListener(e -> myHelper.setUseSeparateView(myCbToOpenInNewTab.isSelected())); + myCbToOpenInNewTab = new JCheckBox(FindBundle.message("find.open.in.new.tab.checkbox")); + myCbToOpenInNewTab.setFocusable(false); + myCbToOpenInNewTab.setSelected(myHelper.isUseSeparateView()); + myCbToOpenInNewTab.setEnabled(myHelper.getModel().isOpenInNewTabEnabled()); + myCbToOpenInNewTab.addActionListener(e -> myHelper.setUseSeparateView(myCbToOpenInNewTab.isSelected())); - if (resultsOptionPanel == null) resultsOptionPanel = createResultsOptionPanel(optionsPanel, gbConstraints); - resultsOptionPanel.add(myCbToOpenInNewTab); - } + if (resultsOptionPanel == null) resultsOptionPanel = createResultsOptionPanel(optionsPanel, gbConstraints); + resultsOptionPanel.add(myCbToOpenInNewTab); if (myPreviewSplitter != null) { TabbedPane pane = new JBTabsPaneImpl(myProject, SwingConstants.TOP, myDisposable); diff --git a/platform/lang-impl/src/com/intellij/find/impl/FindPopupPanel.java b/platform/lang-impl/src/com/intellij/find/impl/FindPopupPanel.java index c8def321a13c..81773289e490 100644 --- a/platform/lang-impl/src/com/intellij/find/impl/FindPopupPanel.java +++ b/platform/lang-impl/src/com/intellij/find/impl/FindPopupPanel.java @@ -481,7 +481,7 @@ public class FindPopupPanel extends JBPanel implements FindUI { public void update(@NotNull AnActionEvent e) { super.update(e); e.getPresentation().setEnabled(myHelper.getModel().isOpenInNewTabEnabled()); - e.getPresentation().setVisible(myHelper.getModel().isOpenInNewTabVisible()); + e.getPresentation().setVisible(true); } }); tabResultsContextGroup.setPopup(true); 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 dd1f3ca7e3c9..8ee6197af55e 100644 --- a/platform/lang-impl/src/com/intellij/find/replaceInProject/ReplaceInProjectManager.java +++ b/platform/lang-impl/src/com/intellij/find/replaceInProject/ReplaceInProjectManager.java @@ -124,22 +124,22 @@ public class ReplaceInProjectManager { public void replaceInProject(@NotNull DataContext dataContext, @Nullable FindModel model) { final FindManager findManager = FindManager.getInstance(myProject); final FindModel findModel; + + 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; + } if (model == null) { - 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; - } findModel = findManager.getFindInProjectModel().clone(); findModel.setReplaceState(true); - findModel.setOpenInNewTabVisible(true); findModel.setOpenInNewTabEnabled(isOpenInNewTabEnabled); findModel.setOpenInNewTab(toOpenInNewTab); FindInProjectUtil.setDirectoryName(findModel, dataContext); @@ -147,6 +147,7 @@ public class ReplaceInProjectManager { } else { findModel = model; + findModel.setOpenInNewTabEnabled(isOpenInNewTabEnabled); } findManager.showFindDialog(findModel, () -> {