2
// <copyright see="prj:///doc/copyright.txt"/>
3
// <license see="prj:///doc/license.txt"/>
4
// <owner name="Mike Krger" email="mike@icsharpcode.net"/>
5
// <version value="$version"/>
11
using System.ComponentModel;
13
using MonoDevelop.Core.Gui;
14
using MonoDevelop.DefaultEditor.Gui.Editor;
15
using MonoDevelop.TextEditor.Document;
16
using MonoDevelop.Core.Properties;
18
using MonoDevelop.Core;
19
using MonoDevelop.Core;
20
//using MonoDevelop.XmlForms;
21
//using MonoDevelop.Core.Gui.XmlForms;
22
using MonoDevelop.TextEditor;
24
namespace MonoDevelop.Core.Gui.Dialogs
26
public class ReplaceInFilesDialog //: BaseSharpDevelopForm
28
ResourceService resourceService = (ResourceService)ServiceManager.Services.GetService(typeof(IResourceService));
29
IMessageService messageService = (IMessageService)ServiceManager.Services.GetService(typeof(IMessageService));
30
static PropertyService propertyService = (PropertyService)ServiceManager.Services.GetService(typeof(PropertyService));
33
public ReplaceInFilesDialog(bool replaceMode)
35
this.replaceMode = replaceMode;
36
FileUtilityService fileUtilityService = (FileUtilityService)ServiceManager.Services.GetService(typeof(FileUtilityService));
38
this.SetupFromXml(propertyService.DataDirectory + @"\resources\dialogs\ReplaceInFilesDialog.xfrm");
39
ControlDictionary["replacePatternComboBox"].Text = SearchReplaceInFilesManager.SearchOptions.ReplacePattern;
40
ControlDictionary["replaceHelpButton"].Enabled = false;
42
this.SetupFromXml(propertyService.DataDirectory + @"\resources\dialogs\FindInFilesDialog.xfrm");
45
ControlDictionary["findHelpButton"].Enabled = false;
46
ControlDictionary["searchPatternComboBox"].Text = SearchReplaceInFilesManager.SearchOptions.SearchPattern;
48
AcceptButton = (Button)ControlDictionary["findButton"];
49
CancelButton = (Button)ControlDictionary["closeButton"];
51
((ComboBox)ControlDictionary["specialSearchStrategyComboBox"]).Items.Add(resourceService.GetString("Dialog.NewProject.SearchReplace.SearchStrategy.WildcardSearch"));
52
((ComboBox)ControlDictionary["specialSearchStrategyComboBox"]).Items.Add(resourceService.GetString("Dialog.NewProject.SearchReplace.SearchStrategy.RegexSearch"));
54
switch (SearchReplaceManager.SearchOptions.SearchStrategyType) {
55
case SearchStrategyType.Normal:
56
case SearchStrategyType.Wildcard:
58
case SearchStrategyType.RegEx:
62
((ComboBox)ControlDictionary["specialSearchStrategyComboBox"]).SelectedIndex = index;
64
((ComboBox)ControlDictionary["searchLocationComboBox"]).Items.Add(resourceService.GetString("Global.Location.directories"));
65
((ComboBox)ControlDictionary["searchLocationComboBox"]).Items.Add(resourceService.GetString("Global.Location.allopenfiles"));
66
((ComboBox)ControlDictionary["searchLocationComboBox"]).Items.Add(resourceService.GetString("Global.Location.wholeproject"));
69
switch (SearchReplaceInFilesManager.SearchOptions.DocumentIteratorType) {
70
case DocumentIteratorType.AllOpenFiles:
73
case DocumentIteratorType.WholeCombine:
78
((ComboBox)ControlDictionary["searchLocationComboBox"]).SelectedIndex = index;
79
((ComboBox)ControlDictionary["searchLocationComboBox"]).SelectedIndexChanged += new EventHandler(SearchLocationCheckBoxChangedEvent);
81
((CheckBox)ControlDictionary["useSpecialSearchStrategyCheckBox"]).CheckedChanged += new EventHandler(SpecialSearchStrategyCheckBoxChangedEvent);
83
ControlDictionary["directoryTextBox"].Text = SearchReplaceInFilesManager.SearchOptions.SearchDirectory;
84
ControlDictionary["fileMaskTextBox"].Text = SearchReplaceInFilesManager.SearchOptions.FileMask;
85
((CheckBox)ControlDictionary["includeSubdirectoriesCheckBox"]).Checked = SearchReplaceInFilesManager.SearchOptions.SearchSubdirectories;
87
ControlDictionary["browseButton"].Click += new EventHandler(BrowseDirectoryEvent);
89
ControlDictionary["findButton"].Click += new EventHandler(FindEvent);
92
ControlDictionary["replaceAllButton"].Click += new EventHandler(ReplaceEvent);
96
SearchLocationCheckBoxChangedEvent(null, null);
97
SpecialSearchStrategyCheckBoxChangedEvent(null, null);
100
void FindEvent(object sender, EventArgs e)
102
if (SetupSearchReplaceInFilesManager()) {
103
SearchReplaceInFilesManager.FindAll();
107
void ReplaceEvent(object sender, EventArgs e)
109
if (SetupSearchReplaceInFilesManager()) {
110
SearchReplaceInFilesManager.ReplaceAll();
114
void BrowseDirectoryEvent(object sender, EventArgs e)
116
FolderDialog fd = new FolderDialog();
117
if (fd.DisplayDialog(resourceService.GetString("NewProject.SearchReplace.FindInFilesBrowseLabel")) == DialogResult.OK) {
118
ControlDictionary["directoryTextBox"].Text = fd.Path;
122
void SearchLocationCheckBoxChangedEvent(object sender, EventArgs e)
124
bool enableDirectorySearch = ((ComboBox)ControlDictionary["searchLocationComboBox"]).SelectedIndex == 0;
125
ControlDictionary["fileMaskTextBox"].Enabled = enableDirectorySearch;
126
ControlDictionary["directoryTextBox"].Enabled = enableDirectorySearch;
127
ControlDictionary["browseButton"].Enabled = enableDirectorySearch;
128
ControlDictionary["includeSubdirectoriesCheckBox"].Enabled = enableDirectorySearch;
131
void SpecialSearchStrategyCheckBoxChangedEvent(object sender, EventArgs e)
133
CheckBox cb = (CheckBox)ControlDictionary["useSpecialSearchStrategyCheckBox"];
135
ControlDictionary["specialSearchStrategyComboBox"].Enabled = cb.Checked;
139
bool SetupSearchReplaceInFilesManager()
141
FileUtilityService fileUtilityService = (FileUtilityService)ServiceManager.Services.GetService(typeof(FileUtilityService));
143
string directoryName = ControlDictionary["directoryTextBox"].Text;
144
string fileMask = ControlDictionary["fileMaskTextBox"].Text;
145
if (fileMask == null || fileMask.Length == 0) {
149
if (SearchReplaceInFilesManager.SearchOptions.DocumentIteratorType == DocumentIteratorType.Directory) {
151
if (!fileUtilityService.IsValidFileName(directoryName)) {
152
messageService.ShowErrorFormatted("${res:NewProject.SearchReplace.FindInFilesInvalidDirectoryMessage}", directoryName);
156
if (!Directory.Exists(directoryName)) {
157
messageService.ShowErrorFormatted("${res:NewProject.SearchReplace.FindInFilesDirectoryNotExistingMessage}", directoryName);
161
if (!fileUtilityService.IsValidFileName(fileMask) || fileMask.IndexOf('\\') >= 0) {
162
messageService.ShowErrorFormatted("${res:NewProject.SearchReplace.FindInFilesInvalidFilemaskMessage}", fileMask);
166
if (fileMask == null || fileMask.Length == 0) {
167
SearchReplaceInFilesManager.SearchOptions.FileMask = "*";
169
SearchReplaceInFilesManager.SearchOptions.FileMask = fileMask;
171
SearchReplaceInFilesManager.SearchOptions.SearchDirectory = directoryName;
172
SearchReplaceInFilesManager.SearchOptions.SearchSubdirectories = ((CheckBox)ControlDictionary["includeSubdirectoriesCheckBox"]).Checked;
174
SearchReplaceInFilesManager.SearchOptions.SearchPattern = ControlDictionary["searchPatternComboBox"].Text;
176
SearchReplaceInFilesManager.SearchOptions.ReplacePattern = ControlDictionary["replacePatternComboBox"].Text;
179
SearchReplaceInFilesManager.SearchOptions.IgnoreCase = !((CheckBox)ControlDictionary["ignoreCaseCheckBox"]).Checked;
180
SearchReplaceInFilesManager.SearchOptions.SearchWholeWordOnly = ((CheckBox)ControlDictionary["searchWholeWordOnlyCheckBox"]).Checked;
182
if (((CheckBox)ControlDictionary["useSpecialSearchStrategyCheckBox"]).Checked) {
183
switch (((ComboBox)ControlDictionary["specialSearchStrategyComboBox"]).SelectedIndex) {
185
SearchReplaceInFilesManager.SearchOptions.SearchStrategyType = SearchStrategyType.Wildcard;
188
SearchReplaceInFilesManager.SearchOptions.SearchStrategyType = SearchStrategyType.RegEx;
192
SearchReplaceInFilesManager.SearchOptions.SearchStrategyType = SearchStrategyType.Normal;
195
switch (((ComboBox)ControlDictionary["searchLocationComboBox"]).SelectedIndex) {
197
SearchReplaceInFilesManager.SearchOptions.DocumentIteratorType = DocumentIteratorType.Directory;
200
SearchReplaceInFilesManager.SearchOptions.DocumentIteratorType = DocumentIteratorType.AllOpenFiles;
203
SearchReplaceInFilesManager.SearchOptions.DocumentIteratorType = DocumentIteratorType.WholeCombine;