internal void DuplicateWebresource(WebresourceNode node) { var selectedResource = node.Resource; var map = WebresourceMapper.Instance.Items.First(i => (int)i.Type == selectedResource.Type); var nwrDialog = new NewWebResourceDialog(map.Extension, OrganizationMajorVersion); if (nwrDialog.ShowDialog(mainControl) == DialogResult.OK) { var name = $"{((FolderNode)node.Parent).ResourceFullPath}/{nwrDialog.WebresourceName}"; var resource = selectedResource.Clone(name); if (mainControl.WebresourcesCache.All(w => w.Name != resource.Name)) { mainControl.WebresourcesCache.Add(resource); } AddSingleNode(resource, name.Split(new[] { '/' }, StringSplitOptions.RemoveEmptyEntries), (FolderNode)node.Parent); node.Parent.Expand(); } }
public WebresourceNode AddSingleNode(Webresource resource, string[] nameParts, FolderNode folder = null) { var fileName = nameParts.Last(); WebresourceType type = WebresourceType.Auto; if (resource.Type != 0) { type = (WebresourceType)resource.Type; } if (type == WebresourceType.Auto) { if (fileName.IndexOf(".", StringComparison.Ordinal) < 0) { if (resource.Type == 0) { return(null); } type = (WebresourceType)resource.Type; } else { type = Webresource.GetTypeFromExtension(fileName .Split(new[] { '.' }, StringSplitOptions.RemoveEmptyEntries).Last()); } } WebresourceNode node = null; switch (type) { case WebresourceType.WebPage: node = new WebpageNode(resource, Settings); break; case WebresourceType.Css: node = new CssNode(resource, Settings); break; case WebresourceType.Data: node = new DataNode(resource, Settings); break; case WebresourceType.Gif: node = new GifNode(resource, Settings); break; case WebresourceType.Ico: node = new IcoNode(resource, Settings); break; case WebresourceType.Jpg: node = new JpgNode(resource, Settings); break; case WebresourceType.Png: node = new PngNode(resource, Settings); break; case WebresourceType.Resx: node = new ResxNode(resource, Settings); break; case WebresourceType.Script: node = new JavaScriptNode(resource, Settings); break; case WebresourceType.Silverlight: node = new SilverlightNode(resource, Settings); break; case WebresourceType.Vector: node = new VectorNode(resource, Settings); break; case WebresourceType.Xsl: node = new XslNode(resource, Settings); break; } resource.Node = node; if (folder != null && node != null) { node.ForeColor = resource.State == WebresourceState.Saved ? Color.Blue : resource.State == WebresourceState.Draft ? Color.Red : Color.Black; folder.Nodes.Add(node); (node.Parent as FolderNode)?.SetFolderColor(); } return(node); }