📄 directorydocumentiterator.cs
字号:
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Mike Krüger" email="mike@icsharpcode.net"/>
// <version>$Revision: 1240 $</version>
// </file>
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor;
using ICSharpCode.Core;
using ICSharpCode.TextEditor;
using ICSharpCode.TextEditor.Document;
namespace SearchAndReplace
{
public class DirectoryDocumentIterator : IDocumentIterator
{
string searchDirectory;
string fileMask;
bool searchSubdirectories;
List<string> files = null;
int curIndex = -1;
public DirectoryDocumentIterator(string searchDirectory, string fileMask, bool searchSubdirectories)
{
this.searchDirectory = searchDirectory;
this.fileMask = fileMask;
this.searchSubdirectories = searchSubdirectories;
Reset();
}
public string CurrentFileName {
get {
if (curIndex < 0 || curIndex >= files.Count) {
return null;
}
return files[curIndex].ToString();;
}
}
public ProvidedDocumentInformation Current {
get {
if (curIndex < 0 || curIndex >= files.Count) {
return null;
}
string fileName = files[curIndex].ToString();
if (!File.Exists(fileName) || !SearchReplaceUtilities.IsSearchable(fileName)) {
++curIndex;
return Current;
}
IDocument document;
foreach (IViewContent content in WorkbenchSingleton.Workbench.ViewContentCollection) {
if (content.FileName != null &&
FileUtility.IsEqualFileName(content.FileName, fileName) &&
content is ITextEditorControlProvider) {
document = ((ITextEditorControlProvider)content).TextEditorControl.Document;
return new ProvidedDocumentInformation(document,
fileName,
0);
}
}
ITextBufferStrategy strategy = null;
try {
strategy = StringTextBufferStrategy.CreateTextBufferFromFile(fileName);
} catch (Exception) {
return null;
}
return new ProvidedDocumentInformation(strategy,
fileName,
0);
}
}
public bool MoveForward()
{
if (curIndex == -1) {
files = FileUtility.SearchDirectory(this.searchDirectory, this.fileMask, this.searchSubdirectories);
}
return ++curIndex < files.Count;
}
public bool MoveBackward()
{
if (curIndex == -1) {
curIndex = files.Count - 1;
return true;
}
return --curIndex >= -1;
}
public void Reset()
{
curIndex = -1;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -