/// <summary> /// Create a node for the given file. /// </summary> internal static Node Create(SourceFile source, string fileName) { var builder = Builders.FirstOrDefault(x => x.Supports(source, fileName)); if (builder != null) return builder.Create(source, fileName); return new UnknownFileNode(source, fileName); }
/// <summary> /// Default ctor /// </summary> public JavaClassFileNode(SourceFile source, string fileName) : base(source, fileName) { /*classDef = Source.Jar.OpenClass(fileName); Text = classDef.ClassName; ImageIndex = classDef.IsInterface ? 5 : 2;*/ }
/// <summary> /// Can this builder create a node for the given filename in the given APK? /// </summary> public bool Supports(SourceFile source, string fileName) { fileName = fileName.ToLower(); if (fileName.Contains("meta-inf")) { return fileName.EndsWith(".mf") || fileName.EndsWith(".sf"); } return false; }
/// <summary> /// Default ctor /// </summary> public DexFileNode(SourceFile source, string fileName) : base(source, fileName) { }
/// <summary> /// Default ctor /// </summary> public UnknownFileNode(SourceFile source, string fileName) : base(source, fileName) { }
/// <summary> /// Can this builder create a node for the given filename in the given APK? /// </summary> public bool Supports(SourceFile source, string fileName) { return source.IsApk && fileName.Equals("resources.arsc", StringComparison.OrdinalIgnoreCase); }
/// <summary> /// Default ctor /// </summary> protected FileNode(SourceFile source, string fileName) { this.source = source; this.fileName = fileName; Text = Path.GetFileName(fileName); }
/// <summary> /// Create a node for the given filename in the given APK? /// </summary> public Node Create(SourceFile source, string fileName) { return(new Pkcs12FileNode(source, fileName)); }
/// <summary> /// Can this builder create a node for the given filename in the given APK? /// </summary> public bool Supports(SourceFile source, string fileName) { return(fileName.EndsWith(".p12", StringComparison.OrdinalIgnoreCase)); }
/// <summary> /// Create a node for the given filename in the given APK? /// </summary> public Node Create(SourceFile source, string fileName) { return new JavaClassFileNode(source, fileName); }
/// <summary> /// Open the given file. /// </summary> internal void Open(string path) { if (source != null) { source.Dispose(); } source = null; try { treeView.BeginUpdate(); treeView.Nodes.Clear(); mainContainer.Panel2.Controls.Clear(); source = SourceFile.Open(path, this); foreach (var fileName in source.FileNames.OrderBy(x => x)) { var parent = treeView.Nodes.GetParentForFile(Path.GetDirectoryName(fileName), 1, new[] { '/', '\\' }); parent.Add(NodeBuilders.Create(source, fileName)); } foreach (Node node in treeView.Nodes) { node.EnsureChildNodesCreated(); } //treeView.Sort(); Text = string.Format("{0} - [{1}]", Application.ProductName, path); // Add to MRU RecentlyUsedFiles.Add(path); // Try to re-open last known tree path TreePath = RecentlyUsedFiles.LastTreePath; } catch (Exception ex) { var msg = string.Format("Open file {0} failed: {1}", path, ex.Message); MessageBox.Show(msg, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error); ErrorLog.DumpError(ex); } finally { treeView.EndUpdate(); } }
/// <summary> /// Default ctor /// </summary> public Pkcs12FileNode(SourceFile source, string fileName) : base(source, fileName) { }
/// <summary> /// Default ctor /// </summary> public XmlFileNode(SourceFile source, string fileName) : base(source, fileName) { }
/// <summary> /// Default ctor /// </summary> protected FileNode(SourceFile source, string fileName) { this.source = source; this.fileName = fileName; Text = Path.GetFileName(fileName); }
/// <summary> /// Can this builder create a node for the given filename in the given APK? /// </summary> public bool Supports(SourceFile source, string fileName) { return fileName.EndsWith(".dex", StringComparison.OrdinalIgnoreCase); }
/// <summary> /// Default ctor /// </summary> public Pkcs12FileNode(SourceFile source, string fileName) : base(source, fileName) { }
/// <summary> /// Create a node for the given filename in the given APK? /// </summary> public Node Create(SourceFile source, string fileName) { return new DexFileNode(source, fileName); }
/// <summary> /// Can this builder create a node for the given filename in the given APK? /// </summary> public bool Supports(SourceFile source, string fileName) { return source.IsJar && fileName.EndsWith(".class", StringComparison.OrdinalIgnoreCase); }