diff --git a/platform/lang-impl/src/com/intellij/find/FindSettings.java b/platform/lang-impl/src/com/intellij/find/FindSettings.java index d61fd395eadd..d8c6d73461a1 100644 --- a/platform/lang-impl/src/com/intellij/find/FindSettings.java +++ b/platform/lang-impl/src/com/intellij/find/FindSettings.java @@ -128,4 +128,7 @@ public abstract class FindSettings{ public abstract boolean isExceptCommentsAndLiterals(); public abstract void setExceptCommentsAndLiterals(boolean selected); + + public abstract boolean isShowResultsInSeparateView(); + public abstract void setShowResultsInSeparateView(boolean selected); } 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 d7f7665a9299..b78ce2c7ead7 100644 --- a/platform/lang-impl/src/com/intellij/find/findInProject/FindInProjectManager.java +++ b/platform/lang-impl/src/com/intellij/find/findInProject/FindInProjectManager.java @@ -40,7 +40,6 @@ import org.jetbrains.annotations.NotNull; public class FindInProjectManager { private final Project myProject; - private boolean myToOpenInNewTab = false; private volatile boolean myIsFindInProgress = false; public static FindInProjectManager getInstance(Project project) { @@ -60,12 +59,12 @@ public class FindInProjectManager { isOpenInNewTabEnabled = false; } else { - toOpenInNewTab[0] = myToOpenInNewTab; + toOpenInNewTab[0] = FindSettings.getInstance().isShowResultsInSeparateView(); isOpenInNewTabEnabled = 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(false); findModel.setOpenInNewTabVisible(true); findModel.setOpenInNewTabEnabled(isOpenInNewTabEnabled); @@ -86,7 +85,7 @@ public class FindInProjectManager { public void run() { findModel.setOpenInNewTabVisible(false); if (isOpenInNewTabEnabled) { - myToOpenInNewTab = toOpenInNewTab[0] = findModel.isOpenInNewTab(); + FindSettings.getInstance().setShowResultsInSeparateView(toOpenInNewTab[0] = findModel.isOpenInNewTab()); } startFindInProject(findModel); @@ -107,8 +106,8 @@ public class FindInProjectManager { if (manager == null) return; final FindManager findManager = FindManager.getInstance(myProject); findManager.getFindInProjectModel().copyFrom(findModel); - final FindModel findModelCopy = (FindModel)findModel.clone(); - final UsageViewPresentation presentation = FindInProjectUtil.setupViewPresentation(myToOpenInNewTab, findModelCopy); + final FindModel findModelCopy = findModel.clone(); + final UsageViewPresentation presentation = FindInProjectUtil.setupViewPresentation(FindSettings.getInstance().isShowResultsInSeparateView(), findModelCopy); final boolean showPanelIfOnlyOneUsage = !FindSettings.getInstance().isSkipResultsWithOneUsage(); final FindUsagesProcessPresentation processPresentation = FindInProjectUtil.setupProcessPresentation(myProject, showPanelIfOnlyOneUsage, presentation); 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 6476affcc4fb..b268e455a67c 100644 --- a/platform/lang-impl/src/com/intellij/find/impl/FindDialog.java +++ b/platform/lang-impl/src/com/intellij/find/impl/FindDialog.java @@ -21,7 +21,6 @@ import com.intellij.find.FindBundle; import com.intellij.find.FindModel; import com.intellij.find.FindSettings; import com.intellij.ide.util.scopeChooser.ScopeChooserCombo; -import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.event.DocumentAdapter; import com.intellij.openapi.editor.event.DocumentEvent; @@ -46,10 +45,7 @@ import com.intellij.psi.PsiDocumentManager; import com.intellij.psi.PsiFile; import com.intellij.psi.PsiFileFactory; import com.intellij.psi.search.SearchScope; -import com.intellij.ui.EditorComboBoxRenderer; -import com.intellij.ui.EditorTextField; -import com.intellij.ui.IdeBorderFactory; -import com.intellij.ui.StateRestoringCheckBox; +import com.intellij.ui.*; import com.intellij.util.ArrayUtil; import com.intellij.util.Consumer; import com.intellij.util.ui.UIUtil; @@ -343,7 +339,6 @@ public class FindDialog extends DialogWrapper { optionsPanel.add(topOptionsPanel, gbConstraints); JPanel resultsOptionPanel = null; - final boolean alignedMode = ApplicationManager.getApplication().isInternal(); // todo if (myModel.isMultipleFiles()) { optionsPanel.add(createGlobalScopePanel(), gbConstraints); @@ -355,12 +350,9 @@ public class FindDialog extends DialogWrapper { optionsPanel.add(createFilterPanel(),gbConstraints); myCbToSkipResultsWhenOneUsage = createCheckbox(FindSettings.getInstance().isSkipResultsWithOneUsage(), FindBundle.message("find.options.skip.results.tab.with.one.occurrence.checkbox")); - if (alignedMode) { - resultsOptionPanel = createResultsOptionPanel(optionsPanel, gbConstraints); - resultsOptionPanel.add(myCbToSkipResultsWhenOneUsage); - } else { - optionsPanel.add(myCbToSkipResultsWhenOneUsage, gbConstraints); - } + resultsOptionPanel = createResultsOptionPanel(optionsPanel, gbConstraints); + resultsOptionPanel.add(myCbToSkipResultsWhenOneUsage); + myCbToSkipResultsWhenOneUsage.setVisible(!myModel.isReplaceState()); } else { @@ -388,15 +380,9 @@ public class FindDialog extends DialogWrapper { myCbToOpenInNewTab.setFocusable(false); myCbToOpenInNewTab.setSelected(myModel.isOpenInNewTab()); myCbToOpenInNewTab.setEnabled(myModel.isOpenInNewTabEnabled()); - - if (alignedMode) { - if (resultsOptionPanel == null) resultsOptionPanel = createResultsOptionPanel(optionsPanel, gbConstraints); - resultsOptionPanel.add(myCbToOpenInNewTab); - } else { - JPanel openInNewTabWindowPanel = new JPanel(new BorderLayout()); - openInNewTabWindowPanel.add(myCbToOpenInNewTab, BorderLayout.EAST); - optionsPanel.add(openInNewTabWindowPanel, gbConstraints); - } + + if (resultsOptionPanel == null) resultsOptionPanel = createResultsOptionPanel(optionsPanel, gbConstraints); + resultsOptionPanel.add(myCbToOpenInNewTab); } return optionsPanel; @@ -404,10 +390,9 @@ public class FindDialog extends DialogWrapper { private static JPanel createResultsOptionPanel(JPanel optionsPanel, GridBagConstraints gbConstraints) { JPanel resultsOptionPanel = new JPanel(); - resultsOptionPanel.setBorder(IdeBorderFactory.createTitledBorder(FindBundle.message("results.options.group"), true)); resultsOptionPanel.setLayout(new BoxLayout(resultsOptionPanel, BoxLayout.Y_AXIS)); - optionsPanel.add(resultsOptionPanel, gbConstraints); + optionsPanel.add(new HideableTitledPanel(FindBundle.message("results.options.group"), resultsOptionPanel, false), gbConstraints); return resultsOptionPanel; } diff --git a/platform/lang-impl/src/com/intellij/find/impl/FindSettingsImpl.java b/platform/lang-impl/src/com/intellij/find/impl/FindSettingsImpl.java index c9c8e3492834..ffe3555ea059 100644 --- a/platform/lang-impl/src/com/intellij/find/impl/FindSettingsImpl.java +++ b/platform/lang-impl/src/com/intellij/find/impl/FindSettingsImpl.java @@ -110,6 +110,7 @@ public class FindSettingsImpl extends FindSettings implements PersistentStateCom @SuppressWarnings({"WeakerAccess"}) public boolean REGULAR_EXPRESSIONS = false; @SuppressWarnings({"WeakerAccess"}) public boolean LOCAL_REGULAR_EXPRESSIONS = false; @SuppressWarnings({"WeakerAccess"}) public boolean WITH_SUBDIRECTORIES = true; + @SuppressWarnings({"WeakerAccess"}) public boolean SHOW_RESULTS_IN_SEPARATE_VIEW = false; @SuppressWarnings({"WeakerAccess"}) public String SEARCH_SCOPE = DEFAULT_SEARCH_SCOPE; @SuppressWarnings({"WeakerAccess"}) public String FILE_MASK; @@ -408,6 +409,16 @@ public class FindSettingsImpl extends FindSettings implements PersistentStateCom EXCEPT_COMMENTS_AND_STRING_LITERALS = selected; } + @Override + public boolean isShowResultsInSeparateView() { + return SHOW_RESULTS_IN_SEPARATE_VIEW; + } + + @Override + public void setShowResultsInSeparateView(boolean optionValue) { + SHOW_RESULTS_IN_SEPARATE_VIEW = optionValue; + } + @Override public boolean isExceptCommentsAndLiterals() { return EXCEPT_COMMENTS_AND_STRING_LITERALS; diff --git a/platform/platform-resources-en/src/messages/FindBundle.properties b/platform/platform-resources-en/src/messages/FindBundle.properties index 0b5861f91413..067ef38e17f6 100644 --- a/platform/platform-resources-en/src/messages/FindBundle.properties +++ b/platform/platform-resources-en/src/messages/FindBundle.properties @@ -135,4 +135,4 @@ find.usages.ambiguous.title=Find Usages Of {0} 0.occurrences.replaced={0,choice,0#No|1#{0}} {0,choice,0#occurrences|1#occurrence|2#occurrences} replaced found.occurrences=Found Occurrences occurrence=occurrence -results.options.group=Results \ No newline at end of file +results.options.group=Result options \ No newline at end of file