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 5d1cf97c8d3c..49aa66311e93 100644 --- a/platform/lang-impl/src/com/intellij/find/impl/FindPopupPanel.java +++ b/platform/lang-impl/src/com/intellij/find/impl/FindPopupPanel.java @@ -54,6 +54,7 @@ import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.LocalFileSystem; import com.intellij.openapi.vfs.VfsUtilCore; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.openapi.wm.WindowManager; import com.intellij.openapi.wm.impl.IdeFrameImpl; import com.intellij.psi.PsiBundle; @@ -267,6 +268,24 @@ public class FindPopupPanel extends JBPanel implements FindUI { myCbFileFilter.setToolTipText("Use file mask(s)"); myCbFileFilter.setMargin(JBUI.emptyInsets()); myCbFileFilter.setBorder(null); + myCbFileFilter.addItemListener(new ItemListener() { + @Override + public void itemStateChanged(ItemEvent e) { + if (myCbFileFilter.isSelected()) { + myFileMaskField.setEnabled(true); + if (myCbFileFilter.getClientProperty("dontRequestFocus") == null) { + myFileMaskField.selectAll(); + IdeFocusManager.getInstance(myProject).requestFocus(myFileMaskField, true); + } + } + else { + myFileMaskField.setEnabled(false); + if (myCbFileFilter.getClientProperty("dontRequestFocus") == null) { + IdeFocusManager.getInstance(myProject).requestFocus(mySearchComponent, true); + } + } + } + }); myCbFileFilter.addItemListener(liveResultsPreviewUpdateListener); myFileMaskField = new TextFieldWithAutoCompletion(myProject, new TextFieldWithAutoCompletion.StringsCompletionProvider(myFileMasks, null), @@ -284,12 +303,6 @@ public class FindPopupPanel extends JBPanel implements FindUI { scheduleResultsUpdate(); } }); - myCbFileFilter.addItemListener(new ItemListener() { - @Override - public void itemStateChanged(ItemEvent e) { - myFileMaskField.setEnabled(myCbFileFilter.isSelected()); - } - }); DefaultActionGroup switchContextGroup = new DefaultActionGroup(); switchContextGroup.add(new MySwitchContextToggleAction(FindModel.SearchContext.ANY)); switchContextGroup.add(new MySwitchContextToggleAction(FindModel.SearchContext.IN_COMMENTS)); @@ -587,21 +600,23 @@ public class FindPopupPanel extends JBPanel implements FindUI { myCodePreviewComponent = myUsagePreviewPanel.createComponent(); splitter.setSecondComponent(myCodePreviewComponent); + JPanel scopesPanel = new JPanel(new MigLayout("flowx, gap 26, ins 0")); + scopesPanel.add(myScopeSelectionToolbar.getComponent()); + scopesPanel.add(myScopeDetailsPanel); setLayout(new MigLayout("flowx, ins 4, fillx, hidemode 2, gap 0")); add(myTitleLabel, "gapleft 4, sx 2, growx, pushx, growy"); - add(myCbCaseSensitive); - add(myCbPreserveCase); - add(myCbWholeWordsOnly); + add(myCbCaseSensitive, "gapright 8"); + add(myCbPreserveCase, "gapright 8"); + add(myCbWholeWordsOnly, "gapright 8"); add(myCbRegularExpressions); add(RegExHelpPopup.createRegExLink("?", myCbRegularExpressions, LOG), "gapright 8"); add(myCbFileFilter); - add(myFileMaskField); + add(myFileMaskField, "gapright 8"); add(myFilterContextButton, "wrap"); add(mySearchTextArea, "pushx, growx, sx 10, gaptop 4, wrap"); add(myReplaceTextArea, "pushx, growx, sx 10, wrap"); - add(myScopeSelectionToolbar.getComponent(), "gaptop 4"); - add(myScopeDetailsPanel, "sx 9, pushx, growx, wrap"); + add(scopesPanel, "sx 10, pushx, growx, ax left, wrap, gaptop 4, gapbottom 4"); add(splitter, "pushx, growx, growy, pushy, sx 10, wrap, pad 0 -4 0 4"); add(bottomPanel, "pushx, growx, dock south, sx 10, pad 0 -4 0 4"); @@ -665,7 +680,12 @@ public class FindPopupPanel extends JBPanel implements FindUI { myModuleComboBox.setSelectedItem(myModel.getModuleName()); } boolean isThereFileFilter = myModel.getFileFilter() != null && !myModel.getFileFilter().isEmpty(); - myCbFileFilter.setSelected(isThereFileFilter); + try { + myCbFileFilter.putClientProperty("dontRequestFocus", Boolean.TRUE); + myCbFileFilter.setSelected(isThereFileFilter); + } finally { + myCbFileFilter.putClientProperty("dontRequestFocus", null); + } List variants = Arrays.asList(ArrayUtil.reverseArray(FindSettings.getInstance().getRecentFileMasks())); myFileMaskField.setVariants(variants); if (!variants.isEmpty()) {