This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.

View | Details | Raw Unified | Return to bug 211098
Collapse All | Expand All

(-)a/api.search/src/org/netbeans/api/search/ui/FileNameController.java (-8 / +1 lines)
Lines 173-186 Link Here
173
    }
173
    }
174
174
175
    private void setFileNamePatternToolTip() {
175
    private void setFileNamePatternToolTip() {
176
        String t;
176
        component.setToolTipText(UiUtils.getFileNamePatternsExample(regexp));
177
        if (regexp) {
178
            t = null;
179
        } else {
180
            t = UiUtils.getText(
181
                    "BasicSearchForm.cboxFileNamePattern.tooltip");     //NOI18N
182
        }
183
        component.setToolTipText(t);
184
    }
177
    }
185
178
186
    /**
179
    /**
(-)a/api.search/src/org/netbeans/api/search/ui/ScopeOptionsController.java (+3 lines)
Lines 57-62 Link Here
57
import org.netbeans.modules.search.ui.CheckBoxWithButtonPanel;
57
import org.netbeans.modules.search.ui.CheckBoxWithButtonPanel;
58
import org.netbeans.modules.search.ui.FormLayoutHelper;
58
import org.netbeans.modules.search.ui.FormLayoutHelper;
59
import org.netbeans.modules.search.ui.UiUtils;
59
import org.netbeans.modules.search.ui.UiUtils;
60
import org.openide.util.NbBundle;
60
61
61
/**
62
/**
62
 * Component controller for setting search scope options.
63
 * Component controller for setting search scope options.
Lines 116-121 Link Here
116
    private void init() {
117
    private void init() {
117
        btnTestFileNamePattern = new JButton();
118
        btnTestFileNamePattern = new JButton();
118
        chkFileNameRegex = new JCheckBox();
119
        chkFileNameRegex = new JCheckBox();
120
        chkFileNameRegex.setToolTipText(UiUtils.getText(
121
                "BasicSearchForm.chkFileNameRegex.tooltip"));           //NOI18N
119
122
120
        if (!replacing) {
123
        if (!replacing) {
121
            chkArchives = new JCheckBox();
124
            chkArchives = new JCheckBox();
(-)a/api.search/src/org/netbeans/modules/search/BasicSearchForm.java (-19 / +83 lines)
Lines 46-53 Link Here
46
46
47
import java.awt.Color;
47
import java.awt.Color;
48
import java.awt.Component;
48
import java.awt.Component;
49
import java.awt.FlowLayout;
49
import java.awt.Dimension;
50
import java.awt.GridBagConstraints;
51
import java.awt.GridBagLayout;
52
import java.awt.Insets;
50
import java.awt.ItemSelectable;
53
import java.awt.ItemSelectable;
54
import java.awt.SystemColor;
51
import java.awt.event.ActionEvent;
55
import java.awt.event.ActionEvent;
52
import java.awt.event.ActionListener;
56
import java.awt.event.ActionListener;
53
import java.awt.event.ItemEvent;
57
import java.awt.event.ItemEvent;
Lines 58-63 Link Here
58
import java.util.List;
62
import java.util.List;
59
import java.util.logging.Logger;
63
import java.util.logging.Logger;
60
import javax.swing.*;
64
import javax.swing.*;
65
import javax.swing.border.EmptyBorder;
61
import javax.swing.event.ChangeEvent;
66
import javax.swing.event.ChangeEvent;
62
import javax.swing.event.ChangeListener;
67
import javax.swing.event.ChangeListener;
63
import javax.swing.text.JTextComponent;
68
import javax.swing.text.JTextComponent;
Lines 140-145 Link Here
140
        }
145
        }
141
        useCurrentlySelectedText();
146
        useCurrentlySelectedText();
142
        setSearchCriteriaValues();
147
        setSearchCriteriaValues();
148
        updateTextToFindInfo();
149
        updateFileNamePatternInfo();
143
    }
150
    }
144
151
145
    /**
152
    /**
Lines 223-228 Link Here
223
        cboxTextToFind = ComponentUtils.adjustComboForSearchPattern(new JComboBox());
230
        cboxTextToFind = ComponentUtils.adjustComboForSearchPattern(new JComboBox());
224
        lblTextToFind.setLabelFor(cboxTextToFind.getComponent());
231
        lblTextToFind.setLabelFor(cboxTextToFind.getComponent());
225
        btnTestTextToFind = new JButton();
232
        btnTestTextToFind = new JButton();
233
        lblTextToFindHint = new JLabel();
234
        lblTextToFindHint.setForeground(SystemColor.controlDkShadow);
226
235
227
        if (searchAndReplace) {
236
        if (searchAndReplace) {
228
            lblReplacement = new JLabel();
237
            lblReplacement = new JLabel();
Lines 239-244 Link Here
239
        lblScope.setLabelFor(cboxScope.getComponent());
248
        lblScope.setLabelFor(cboxScope.getComponent());
240
249
241
        lblFileNamePattern = new JLabel();
250
        lblFileNamePattern = new JLabel();
251
        lblFileNameHint = new JLabel();
252
        lblFileNameHint.setForeground(SystemColor.controlDkShadow);
242
        cboxFileNamePattern = ComponentUtils.adjustComboForFileName(
253
        cboxFileNamePattern = ComponentUtils.adjustComboForFileName(
243
                new JComboBox());
254
                new JComboBox());
244
        lblFileNamePattern.setLabelFor(cboxFileNamePattern.getComponent());
255
        lblFileNamePattern.setLabelFor(cboxFileNamePattern.getComponent());
Lines 271-284 Link Here
271
282
272
        formPanel = new SearchFormPanel();
283
        formPanel = new SearchFormPanel();
273
        formPanel.addRow(lblTextToFind, cboxTextToFind.getComponent());
284
        formPanel.addRow(lblTextToFind, cboxTextToFind.getComponent());
285
        formPanel.addRow(new JLabel(), lblTextToFindHint);
274
        initContainingTextOptionsRow(searchAndReplace);
286
        initContainingTextOptionsRow(searchAndReplace);
275
        if (searchAndReplace) {
287
        if (searchAndReplace) {
276
            formPanel.addRow(lblReplacement, cboxReplacement);
288
            formPanel.addRow(lblReplacement, cboxReplacement);
277
        }
289
        }
290
        formPanel.addSeparator();
278
        formPanel.addRow(lblScope, cboxScope.getComponent());
291
        formPanel.addRow(lblScope, cboxScope.getComponent());
292
        formPanel.addSeparator();
279
        formPanel.addRow(lblFileNamePattern,
293
        formPanel.addRow(lblFileNamePattern,
280
                cboxFileNamePattern.getComponent());
294
                cboxFileNamePattern.getComponent());
295
        formPanel.addRow(new JLabel(), lblFileNameHint);
281
        initScopeOptionsRow(searchAndReplace);
296
        initScopeOptionsRow(searchAndReplace);
297
        formPanel.addEmptyLine();
282
    }
298
    }
283
299
284
    /**
300
    /**
Lines 299-309 Link Here
299
315
300
            formPanel.addRow(new JLabel(), jp);
316
            formPanel.addRow(new JLabel(), jp);
301
        } else {
317
        } else {
302
            jp.setLayout(new FlowLayout(FlowLayout.LEADING, 0, 0));
318
            jp.setLayout(new BoxLayout(jp, BoxLayout.LINE_AXIS));
303
            jp.add(chkCaseSensitive);
319
            jp.add(chkCaseSensitive);
304
            jp.add(chkWholeWords);
320
            jp.add(chkWholeWords);
305
            jp.add(new CheckBoxWithButtonPanel(chkRegexp, btnTestTextToFind));
321
            jp.add(new CheckBoxWithButtonPanel(chkRegexp, btnTestTextToFind));
306
            jp.setMaximumSize(jp.getPreferredSize());
307
            formPanel.addRow(new JLabel(), jp);
322
            formPanel.addRow(new JLabel(), jp);
308
        }
323
        }
309
    }
324
    }
Lines 424-429 Link Here
424
                        cboxFileNamePattern.getFileNamePattern());
439
                        cboxFileNamePattern.getFileNamePattern());
425
                searchCriteria.setFileNameRegexp(
440
                searchCriteria.setFileNameRegexp(
426
                        cboxFileNamePattern.isRegularExpression());
441
                        cboxFileNamePattern.isRegularExpression());
442
                updateFileNamePatternInfo();
427
            }
443
            }
428
        });
444
        });
429
445
Lines 496-501 Link Here
496
                && cboxFileNamePattern.getComponent().getItemCount() != 0) {
512
                && cboxFileNamePattern.getComponent().getItemCount() != 0) {
497
            cboxFileNamePattern.getComponent().setSelectedIndex(0);
513
            cboxFileNamePattern.getComponent().setSelectedIndex(0);
498
        }
514
        }
515
        cboxFileNamePattern.setRegularExpression(memory.isFilePathRegex());
499
        if (cboxReplacement != null && cboxReplacement.getItemCount() != 0) {
516
        if (cboxReplacement != null && cboxReplacement.getItemCount() != 0) {
500
            cboxReplacement.setSelectedIndex(0);
517
            cboxReplacement.setSelectedIndex(0);
501
        }
518
        }
Lines 608-614 Link Here
608
            if (cboxReplacement != null){
625
            if (cboxReplacement != null){
609
                updateReplacePatternColor();
626
                updateReplacePatternColor();
610
            }
627
            }
611
            setTextToFindToolTip();
628
            updateTextToFindInfo();
612
        } else if (toggle == chkPreserveCase) {
629
        } else if (toggle == chkPreserveCase) {
613
            searchCriteria.setPreserveCase(selected);
630
            searchCriteria.setPreserveCase(selected);
614
        } else {
631
        } else {
Lines 616-630 Link Here
616
        }
633
        }
617
    }
634
    }
618
635
619
    private void setTextToFindToolTip() {
636
    private void updateTextToFindInfo() {
620
        String t;
637
        String bungleKey = (searchCriteria.isRegexp())
621
        if (searchCriteria.isRegexp()) {
638
                ? "BasicSearchForm.cboxTextToFind.info.re" //NOI18N
622
            t = null;
639
                : "BasicSearchForm.cboxTextToFind.info";   //NOI18N
623
        } else {
640
        String text = UiUtils.getText(bungleKey);
624
            t = UiUtils.getText(
641
        cboxTextToFind.getComponent().setToolTipText(text);
625
                    "BasicSearchForm.cboxTextToFind.tooltip");          //NOI18N
642
        lblTextToFindHint.setText(text);
626
        }
643
    }
627
        cboxTextToFind.getComponent().setToolTipText(t);
644
645
    private void updateFileNamePatternInfo() {
646
        lblFileNameHint.setText(UiUtils.getFileNamePatternsExample(
647
                cboxFileNamePattern.isRegularExpression()));
628
    }
648
    }
629
649
630
    /**
650
    /**
Lines 726-732 Link Here
726
        } else {
746
        } else {
727
          
747
          
728
        }
748
        }
729
        setTextToFindToolTip();
749
        updateTextToFindInfo();
730
    }
750
    }
731
751
732
    private void lclz(AbstractButton ab, String msg) {
752
    private void lclz(AbstractButton ab, String msg) {
Lines 751-758 Link Here
751
    protected SearchFormPanel formPanel;
771
    protected SearchFormPanel formPanel;
752
    private JButton btnTestTextToFind;
772
    private JButton btnTestTextToFind;
753
    private JLabel lblTextToFind;
773
    private JLabel lblTextToFind;
774
    private JLabel lblTextToFindHint;
754
    private ScopeController cboxScope;
775
    private ScopeController cboxScope;
755
    private JLabel lblFileNamePattern;    
776
    private JLabel lblFileNamePattern;    
777
    private JLabel lblFileNameHint;
756
    private JLabel lblScope;
778
    private JLabel lblScope;
757
    private JLabel lblReplacement;
779
    private JLabel lblReplacement;
758
    private Color errorTextColor, defaultTextColor;
780
    private Color errorTextColor, defaultTextColor;
Lines 766-783 Link Here
766
    private final class SearchFormPanel extends JPanel {
788
    private final class SearchFormPanel extends JPanel {
767
789
768
        private FormLayoutHelper flh;
790
        private FormLayoutHelper flh;
791
        private int row = 0;
769
792
770
        public SearchFormPanel() {
793
        public SearchFormPanel() {
771
            super();
794
            super();
772
            this.flh = new FormLayoutHelper(this,
795
            setLayout(new GridBagLayout());
773
                    FormLayoutHelper.DEFAULT_COLUMN,
796
            setBorder(new EmptyBorder(5, 5, 5, 5));
774
                    FormLayoutHelper.DEFAULT_COLUMN);
775
            flh.setAllGaps(true);
776
        }
797
        }
777
798
778
        public void addRow(JComponent label, JComponent component) {
799
        public void addRow(JComponent label, JComponent component) {
779
800
780
            flh.addRow(label, component);
801
            GridBagConstraints c = new GridBagConstraints();
802
            c.gridx = 0;
803
            c.anchor = GridBagConstraints.NORTHWEST;
804
            c.gridy = row;
805
            c.weightx = 0;
806
            c.weighty = 0;
807
            c.insets = new Insets(5, 5, 5, 5);
808
            add(label, c);
809
810
            c.gridx = 1;
811
            c.weightx = 1;
812
            c.fill = GridBagConstraints.HORIZONTAL;
813
            add(component, c);
814
815
            row++;
816
        }
817
818
        public void addSeparator() {
819
            GridBagConstraints c = new GridBagConstraints();
820
            c.gridx = 0;
821
            c.gridy = row;
822
            c.gridwidth = 2;
823
            c.weightx = 1;
824
            c.insets = new Insets(5, 5, 5, 5);
825
            c.fill = GridBagConstraints.HORIZONTAL;
826
            JSeparator separator = new JSeparator(JSeparator.HORIZONTAL);
827
            separator.setForeground(SystemColor.controlShadow);
828
            add(separator, c);
829
            row++;
830
        }
831
832
        public void addEmptyLine() {
833
            GridBagConstraints c = new GridBagConstraints();
834
            c.gridx = 0;
835
            c.gridy = row;
836
            c.gridwidth = 2;
837
            c.fill = GridBagConstraints.HORIZONTAL;
838
            c.weighty = 1;
839
            c.weightx = 0.1;
840
            JLabel emptyLabel = new JLabel();
841
            emptyLabel.setPreferredSize(new Dimension(0, 0));
842
            emptyLabel.setMinimumSize(new Dimension(0, 0));
843
            add(emptyLabel, c);
844
            row++;
781
        }
845
        }
782
    }
846
    }
783
847
(-)a/api.search/src/org/netbeans/modules/search/Bundle.properties (-4 / +8 lines)
Lines 210-224 Link Here
210
210
211
BasicSearchForm.lblTextToFind.text=Containing &Text\:
211
BasicSearchForm.lblTextToFind.text=Containing &Text\:
212
212
213
BasicSearchForm.cboxTextToFind.tooltip=(* \= any string, ? \= any character, \\ \= escape for * ?)
213
BasicSearchForm.cboxTextToFind.info=(* \= any string, ? \= any character, \\ \= escape for * ?)
214
BasicSearchForm.cboxTextToFind.info.re=(Use java.util.regex.Pattern regular expression syntax)
214
215
215
BasicSearchForm.lblReplacement.text=&Replace With\:
216
BasicSearchForm.lblReplacement.text=&Replace With\:
216
217
217
BasicSearchForm.lblScope.text=&Scope
218
BasicSearchForm.lblScope.text=&Scope:
218
219
219
BasicSearchForm.lblFileNamePattern.text=File Name &Patterns\:
220
BasicSearchForm.lblFileNamePattern.text=File Name &Patterns\:
220
221
221
BasicSearchForm.cboxFileNamePattern.tooltip=(Example\: *.java, FZP??.jsp, web/**/main/*.?htm?)
222
BasicSearchForm.cboxFileNamePattern.example=(Example\: *.java, FZP??.jsp)
223
# {0} File path separator
224
BasicSearchForm.cboxFileNamePattern.example.re=(Example\: {0}test{0}.*{0}TestBug\\d+\\.java$)
222
225
223
BasicSearchForm.cboxFileNamePattern.allFiles=(all files)
226
BasicSearchForm.cboxFileNamePattern.allFiles=(all files)
224
227
Lines 244-250 Link Here
244
247
245
BasicSearchForm.chkGenerated.text=Search in &Generated Sources
248
BasicSearchForm.chkGenerated.text=Search in &Generated Sources
246
249
247
BasicSearchForm.chkFileNameRegex.text=Regular E&xpression
250
BasicSearchForm.chkFileNameRegex.text=File Path Regular E&xpression
251
BasicSearchForm.chkFileNameRegex.tooltip=Use regular expression for the file path
248
252
249
BasicSearchForm.btnTestTextToFind.text=test
253
BasicSearchForm.btnTestTextToFind.text=test
250
254
(-)a/api.search/src/org/netbeans/modules/search/PatternSandbox.java (-3 / +4 lines)
Lines 60-65 Link Here
60
import org.netbeans.api.search.SearchHistory;
60
import org.netbeans.api.search.SearchHistory;
61
import org.netbeans.api.search.SearchPattern;
61
import org.netbeans.api.search.SearchPattern;
62
import org.netbeans.modules.search.ui.FormLayoutHelper;
62
import org.netbeans.modules.search.ui.FormLayoutHelper;
63
import org.netbeans.modules.search.ui.UiUtils;
63
import org.openide.DialogDisplayer;
64
import org.openide.DialogDisplayer;
64
import org.openide.NotifyDescriptor;
65
import org.openide.NotifyDescriptor;
65
import org.openide.awt.Mnemonics;
66
import org.openide.awt.Mnemonics;
Lines 788-795 Link Here
788
789
789
        @Override
790
        @Override
790
        protected String getHintLabelText() {
791
        protected String getHintLabelText() {
791
            return getText(
792
            return UiUtils.getFileNamePatternsExample(pathRegexp);
792
                    "BasicSearchForm.cboxFileNamePattern.tooltip");     //NOI18N
793
        }
793
        }
794
    }
794
    }
795
795
Lines 801-807 Link Here
801
801
802
        @Override
802
        @Override
803
        public void itemStateChanged(ItemEvent e) {
803
        public void itemStateChanged(ItemEvent e) {
804
            lblHint.setVisible(e.getStateChange() == ItemEvent.DESELECTED);
804
            lblHint.setText(UiUtils.getFileNamePatternsExample(
805
                    e.getStateChange() == ItemEvent.SELECTED));
805
        }
806
        }
806
    }
807
    }
807
808
(-)a/api.search/src/org/netbeans/modules/search/ui/UiUtils.java (-2 / +21 lines)
Lines 47-59 Link Here
47
import java.awt.datatransfer.Transferable;
47
import java.awt.datatransfer.Transferable;
48
import java.awt.datatransfer.UnsupportedFlavorException;
48
import java.awt.datatransfer.UnsupportedFlavorException;
49
import java.io.CharConversionException;
49
import java.io.CharConversionException;
50
import java.io.File;
50
import java.io.IOException;
51
import java.io.IOException;
51
import javax.swing.AbstractButton;
52
import javax.swing.AbstractButton;
52
import javax.swing.JLabel;
53
import javax.swing.JLabel;
53
import javax.swing.UIManager;
54
import javax.swing.UIManager;
54
import org.netbeans.modules.search.BasicSearchCriteria;
55
import org.netbeans.modules.search.BasicSearchProvider;
55
import org.netbeans.modules.search.BasicSearchProvider;
56
import org.netbeans.spi.search.SearchScopeDefinition;
57
import org.openide.awt.Mnemonics;
56
import org.openide.awt.Mnemonics;
58
import org.openide.util.NbBundle;
57
import org.openide.util.NbBundle;
59
import org.openide.xml.XMLUtil;
58
import org.openide.xml.XMLUtil;
Lines 139-142 Link Here
139
            }
138
            }
140
        }
139
        }
141
    }
140
    }
141
142
    /**
143
     * Get an example of file name patterns.
144
     *
145
     * @param regexp True to get example or regular expression pattern, false to
146
     * get example of standard pattern.
147
     */
148
    public static String getFileNamePatternsExample(boolean regexp) {
149
        if (regexp) {
150
            String separator = ("\\".equals(File.separator)) //NOI18N
151
                    ? "\\\\" //NOI18N
152
                    : File.separator;
153
            return NbBundle.getMessage(BasicSearchProvider.class,
154
                    "BasicSearchForm.cboxFileNamePattern.example.re", //NOI18N
155
                    separator);
156
        } else {
157
            return NbBundle.getMessage(BasicSearchProvider.class,
158
                    "BasicSearchForm.cboxFileNamePattern.example");     //NOI18N
159
        }
160
    }
142
}
161
}

Return to bug 211098