summaryrefslogtreecommitdiff
path: root/platform/lang-impl/src/com/intellij/find/impl/FindDialog.java
diff options
context:
space:
mode:
Diffstat (limited to 'platform/lang-impl/src/com/intellij/find/impl/FindDialog.java')
-rw-r--r--platform/lang-impl/src/com/intellij/find/impl/FindDialog.java91
1 files changed, 49 insertions, 42 deletions
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 b6a6152b678b..c25456da1988 100644
--- a/platform/lang-impl/src/com/intellij/find/impl/FindDialog.java
+++ b/platform/lang-impl/src/com/intellij/find/impl/FindDialog.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2012 JetBrains s.r.o.
+ * Copyright 2000-2014 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -35,7 +35,6 @@ import com.intellij.openapi.module.ModuleManager;
import com.intellij.openapi.module.ModuleUtilCore;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.*;
-import com.intellij.openapi.ui.popup.JBPopup;
import com.intellij.openapi.util.Disposer;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.vfs.LocalFileSystem;
@@ -50,8 +49,6 @@ import com.intellij.ui.EditorComboBoxRenderer;
import com.intellij.ui.EditorTextField;
import com.intellij.ui.IdeBorderFactory;
import com.intellij.ui.StateRestoringCheckBox;
-import com.intellij.ui.components.labels.LinkLabel;
-import com.intellij.ui.components.labels.LinkListener;
import com.intellij.util.ArrayUtil;
import com.intellij.util.Consumer;
import com.intellij.util.ui.UIUtil;
@@ -60,7 +57,6 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
-import javax.swing.text.BadLocationException;
import java.awt.*;
import java.awt.event.*;
import java.util.Arrays;
@@ -78,8 +74,7 @@ public class FindDialog extends DialogWrapper {
private StateRestoringCheckBox myCbCaseSensitive;
private StateRestoringCheckBox myCbPreserveCase;
private StateRestoringCheckBox myCbWholeWordsOnly;
- private StateRestoringCheckBox myCbInCommentsOnly;
- private StateRestoringCheckBox myCbInStringLiteralsOnly;
+ private ComboBox mySearchContext;
private StateRestoringCheckBox myCbRegularExpressions;
private JRadioButton myRbGlobal;
private JRadioButton myRbSelectedText;
@@ -223,7 +218,7 @@ public class FindDialog extends DialogWrapper {
myReplacePrompt.setVisible(myModel.isReplaceState());
myReplaceComboBox.setVisible(myModel.isReplaceState());
if (myCbToSkipResultsWhenOneUsage != null) {
- myCbToSkipResultsWhenOneUsage.setVisible(myModel.isReplaceState());
+ myCbToSkipResultsWhenOneUsage.setVisible(!myModel.isReplaceState());
}
myCbPreserveCase.setVisible(myModel.isReplaceState());
}
@@ -354,9 +349,9 @@ public class FindDialog extends DialogWrapper {
gbConstraints.gridwidth = GridBagConstraints.REMAINDER;
optionsPanel.add(createFilterPanel(),gbConstraints);
- myCbToSkipResultsWhenOneUsage = createCheckbox(FindSettings.getInstance().isSkipResultsWithOneUsage(), FindBundle.message("find.options.skip.results.tab.with.one.usage.checkbox"));
+ myCbToSkipResultsWhenOneUsage = createCheckbox(FindSettings.getInstance().isSkipResultsWithOneUsage(), FindBundle.message("find.options.skip.results.tab.with.one.occurrence.checkbox"));
optionsPanel.add(myCbToSkipResultsWhenOneUsage, gbConstraints);
- myCbToSkipResultsWhenOneUsage.setVisible(myModel.isReplaceState());
+ myCbToSkipResultsWhenOneUsage.setVisible(!myModel.isReplaceState());
}
else {
if (FindManagerImpl.ourHasSearchInCommentsAndLiterals) {
@@ -476,6 +471,9 @@ public class FindDialog extends DialogWrapper {
findSettings.setWholeWordsOnly(myModel.isWholeWordsOnly());
findSettings.setInStringLiteralsOnly(myModel.isInStringLiteralsOnly());
findSettings.setInCommentsOnly(myModel.isInCommentsOnly());
+ findSettings.setExceptComments(myModel.isExceptComments());
+ findSettings.setExceptStringLiterals(myModel.isExceptStringLiterals());
+ findSettings.setExceptCommentsAndLiterals(myModel.isExceptCommentsAndStringLiterals());
findSettings.setRegularExpressions(myModel.isRegularExpressions());
if (!myModel.isMultipleFiles()){
@@ -603,39 +601,26 @@ public class FindDialog extends DialogWrapper {
regExPanel.setLayout(new BoxLayout(regExPanel, BoxLayout.X_AXIS));
regExPanel.add(myCbRegularExpressions);
- regExPanel.add(new LinkLabel("[Help]", null, new LinkListener() {
- @Override
- public void linkSelected(LinkLabel aSource, Object aLinkData) {
- try {
- final JBPopup helpPopup = RegExHelpPopup.createRegExHelpPopup();
- helpPopup.showInCenterOf(regExPanel);
- }
- catch (BadLocationException e) {
- LOG.info(e);
- }
- }
- }));
+ regExPanel.add(RegExHelpPopup.createRegExLink("[Help]", regExPanel, LOG));
findOptionsPanel.add(regExPanel);
- myCbInCommentsOnly = createCheckbox(FindBundle.message("find.options.comments.only"));
- myCbInStringLiteralsOnly = createCheckbox(FindBundle.message("find.options.string.literals.only"));
- ItemListener itemListener = new ItemListener() {
- @Override
- public void itemStateChanged(ItemEvent e) {
- if (e.getSource() == myCbInCommentsOnly) {
- if (myCbInCommentsOnly.isSelected()) myCbInStringLiteralsOnly.setSelected(false);
- } else if (e.getSource() == myCbInStringLiteralsOnly) {
- if (myCbInStringLiteralsOnly.isSelected()) myCbInCommentsOnly.setSelected(false);
- }
- }
- };
- myCbInCommentsOnly.addItemListener(itemListener);
- myCbInStringLiteralsOnly.addItemListener(itemListener);
+ mySearchContext = new ComboBox(new Object[] {FindBundle.message("find.context.anywhere.scope.label", 200),
+ FindBundle.message("find.context.in.comments.scope.label"), FindBundle.message("find.context.in.literals.scope.label"),
+ FindBundle.message("find.context.except.comments.scope.label"),
+ FindBundle.message("find.context.except.literals.scope.label"),
+ FindBundle.message("find.context.except.comments.and.literals.scope.label")});
+ final JPanel searchContextPanel = new JPanel(new BorderLayout());
+ searchContextPanel.setAlignmentX(Component.LEFT_ALIGNMENT);
+
+ JLabel searchContextLabel = new JLabel(FindBundle.message("find.context.combo.label"));
+ searchContextLabel.setLabelFor(mySearchContext);
+ searchContextPanel.add(searchContextLabel, BorderLayout.WEST);
+
+ searchContextPanel.add(mySearchContext, BorderLayout.CENTER);
if (FindManagerImpl.ourHasSearchInCommentsAndLiterals) {
- findOptionsPanel.add(myCbInCommentsOnly);
- findOptionsPanel.add(myCbInStringLiteralsOnly);
+ findOptionsPanel.add(searchContextPanel);
}
ActionListener actionListener = new ActionListener() {
@@ -1000,9 +985,25 @@ public class FindDialog extends DialogWrapper {
}
model.setWholeWordsOnly(myCbWholeWordsOnly.isSelected());
- model.setInStringLiteralsOnly(myCbInStringLiteralsOnly.isSelected());
- model.setInCommentsOnly(myCbInCommentsOnly.isSelected());
+ String selectedSearchContextInUi = (String)mySearchContext.getSelectedItem();
+ FindModel.SearchContext searchContext = FindModel.SearchContext.ANY;
+ if (FindBundle.message("find.context.in.literals.scope.label").equals(selectedSearchContextInUi)) {
+ searchContext = FindModel.SearchContext.IN_STRING_LITERALS;
+ }
+ else if (FindBundle.message("find.context.in.comments.scope.label").equals(selectedSearchContextInUi)) {
+ searchContext = FindModel.SearchContext.IN_COMMENTS;
+ }
+ else if (FindBundle.message("find.context.except.comments.scope.label").equals(selectedSearchContextInUi)) {
+ searchContext = FindModel.SearchContext.EXCEPT_COMMENTS;
+ }
+ else if (FindBundle.message("find.context.except.literals.scope.label").equals(selectedSearchContextInUi)) {
+ searchContext = FindModel.SearchContext.EXCEPT_STRING_LITERALS;
+ } else if (FindBundle.message("find.context.except.comments.and.literals.scope.label").equals(selectedSearchContextInUi)) {
+ searchContext = FindModel.SearchContext.EXCEPT_COMMENTS_AND_STRING_LITERALS;
+ }
+
+ model.setSearchContext(searchContext);
model.setRegularExpressions(myCbRegularExpressions.isSelected());
String stringToFind = getStringToFind();
@@ -1068,8 +1069,14 @@ public class FindDialog extends DialogWrapper {
private void initByModel() {
myCbCaseSensitive.setSelected(myModel.isCaseSensitive());
myCbWholeWordsOnly.setSelected(myModel.isWholeWordsOnly());
- myCbInStringLiteralsOnly.setSelected(myModel.isInStringLiteralsOnly());
- myCbInCommentsOnly.setSelected(myModel.isInCommentsOnly());
+ String searchContext = FindBundle.message("find.context.anywhere.scope.label");
+ if (myModel.isInCommentsOnly()) searchContext = FindBundle.message("find.context.in.comments.scope.label");
+ else if (myModel.isInStringLiteralsOnly()) searchContext = FindBundle.message("find.context.in.literals.scope.label");
+ else if (myModel.isExceptStringLiterals()) searchContext = FindBundle.message("find.context.except.literals.scope.label");
+ else if (myModel.isExceptComments()) searchContext = FindBundle.message("find.context.except.comments.scope.label");
+ else if (myModel.isExceptCommentsAndStringLiterals()) searchContext = FindBundle.message("find.context.except.comments.and.literals.scope.label");
+ mySearchContext.setSelectedItem(searchContext);
+
myCbRegularExpressions.setSelected(myModel.isRegularExpressions());
if (myModel.isMultipleFiles()) {