Browse Source

FindTreeNode : enable 'find' on Resource type

pull/597/head
Pierrick Gourlain 10 years ago
parent
commit
d4561925a0
  1. 35
      ILSpy/MainWindow.xaml.cs
  2. 29
      ILSpy/TreeNodes/AssemblyListTreeNode.cs

35
ILSpy/MainWindow.xaml.cs

@ -572,21 +572,40 @@ namespace ICSharpCode.ILSpy @@ -572,21 +572,40 @@ namespace ICSharpCode.ILSpy
public ILSpyTreeNode FindTreeNode(object reference)
{
if (reference is TypeReference) {
if (reference is TypeReference)
{
return assemblyListTreeNode.FindTypeNode(((TypeReference)reference).Resolve());
} else if (reference is MethodReference) {
}
else if (reference is MethodReference)
{
return assemblyListTreeNode.FindMethodNode(((MethodReference)reference).Resolve());
} else if (reference is FieldReference) {
}
else if (reference is FieldReference)
{
return assemblyListTreeNode.FindFieldNode(((FieldReference)reference).Resolve());
} else if (reference is PropertyReference) {
}
else if (reference is PropertyReference)
{
return assemblyListTreeNode.FindPropertyNode(((PropertyReference)reference).Resolve());
} else if (reference is EventReference) {
}
else if (reference is EventReference)
{
return assemblyListTreeNode.FindEventNode(((EventReference)reference).Resolve());
} else if (reference is AssemblyDefinition) {
}
else if (reference is AssemblyDefinition)
{
return assemblyListTreeNode.FindAssemblyNode((AssemblyDefinition)reference);
} else if (reference is ModuleDefinition) {
}
else if (reference is ModuleDefinition)
{
return assemblyListTreeNode.FindAssemblyNode((ModuleDefinition)reference);
} else {
}
else if (reference is Resource)
{
return assemblyListTreeNode.FindResourceNode((Resource)reference);
}
else
{
return null;
}
}

29
ILSpy/TreeNodes/AssemblyListTreeNode.cs

@ -130,9 +130,34 @@ namespace ICSharpCode.ILSpy.TreeNodes @@ -130,9 +130,34 @@ namespace ICSharpCode.ILSpy.TreeNodes
}
}
#region Find*Node
#region Find*Node
public AssemblyTreeNode FindAssemblyNode(ModuleDefinition module)
public ILSpyTreeNode FindResourceNode(Resource resource)
{
if (resource == null)
return null;
foreach (AssemblyTreeNode node in this.Children)
{
if (node.LoadedAssembly.IsLoaded)
{
node.EnsureLazyChildren();
foreach (var item in node.Children.OfType<ResourceListTreeNode>())
{
var founded = item.Children.OfType<ResourceTreeNode>().Where(x => x.Resource == resource).FirstOrDefault();
if (founded != null)
return founded;
var foundedResEntry = item.Children.OfType<ResourceEntryNode>().Where(x => resource.Name.Equals(x.Text)).FirstOrDefault();
if (foundedResEntry != null)
return foundedResEntry;
}
}
}
return null;
}
public AssemblyTreeNode FindAssemblyNode(ModuleDefinition module)
{
if (module == null)
return null;

Loading…
Cancel
Save