/// <summary> /// Add a node in the current parent node in the treeview /// </summary> /// <param name="nameParts">Web resource name parts</param> /// <param name="index">Index of the part to use</param> /// <param name="parent">Parent item (TreeView or TreeNode)</param> /// <param name="webResource">Web resource content</param> private void AddNode(string[] nameParts, int index, object parent, WebResource webResource) { if (index == 0) { var treeview = (TreeView)parent; // If the current root for the web resource exists if (treeview.Nodes.Find(nameParts[index], false).Length == 0) { var node = new TreeNode(nameParts[index]); node.Name = node.Text; // If the name part is the last one, it is the web resource // so it is stored in the Tag property for later usage if (index == nameParts.Length - 1) { node.Tag = webResource; webResource.Node = node; webResource.ReinitStatus(); //webResource.SyncedWithCrm = webResource.Entity != null && webResource.Entity.Contains("webresourceid"); webResource.WebresourceStateChanged += Wr_WebresourceStateChanged; int imageIndex = webResource.EntityType + 1; node.ImageIndex = imageIndex; node.SelectedImageIndex = imageIndex; } else { // 0 is image index for Root image node.ImageIndex = 0; node.SelectedImageIndex = 0; } treeview.Nodes.Add(node); AddNode(nameParts, index + 1, node, webResource); } else { AddNode(nameParts, index + 1, treeview.Nodes.Find(nameParts[index], false)[0], webResource); } } else if (index < nameParts.Length) { var treenode = (TreeNode)parent; if (treenode.Nodes.Find(nameParts[index], false).Length == 0) { var node = new TreeNode(nameParts[index]); node.Name = node.Text; // If the name part is the last one, it is the web resource // so it is stored in the Tag property for later usage if (index == nameParts.Length - 1) { int imageIndex = webResource.EntityType + 1; node.ImageIndex = imageIndex; node.SelectedImageIndex = imageIndex; node.Tag = webResource; webResource.Node = node; webResource.ReinitStatus(); //webResource.SyncedWithCrm = webResource.Entity != null && webResource.Entity.Contains("webresourceid"); webResource.WebresourceStateChanged += Wr_WebresourceStateChanged; } else { if (index == 0) { node.ImageIndex = 0; node.SelectedImageIndex = 0; } else { // 0 is image index for Folder image node.ImageIndex = 1; node.SelectedImageIndex = 1; } } treenode.Nodes.Add(node); AddNode(nameParts, index + 1, node, webResource); } else { AddNode(nameParts, index + 1, treenode.Nodes.Find(nameParts[index], false)[0], webResource); } } }
/// <summary> /// Create a new empty web resource /// </summary> /// <param name="extension">Type of web resource file to create</param> public void CreateEmptyWebResource(string extension) { var callerNode = tv.SelectedNode; var nwrDialog = new NewWebResourceDialog(extension) { StartPosition = FormStartPosition.CenterParent }; if (nwrDialog.ShowDialog(ParentForm) == DialogResult.OK) { var tempNode = callerNode; string name = callerNode.Text; while (tempNode.Parent != null) { name = string.Format("{0}/{1}", tempNode.Parent.Text, name); tempNode = tempNode.Parent; } var webResource = new Entity("webresource"); webResource["content"] = ""; webResource["webresourcetype"] = new OptionSetValue(WebResource.GetTypeFromExtension(extension)); webResource["name"] = string.Format("{0}/{1}", name, string.Format("{0}.{1}", nwrDialog.WebResourceName, extension)); var wr = new WebResource(webResource, null); WebResources.Add(wr); var parts = nwrDialog.WebResourceName.Split('/'); for (int i = 0; i < parts.Length; i++) { if (i != parts.Length - 1) { var folderNode = new TreeNode(parts[i]) { ImageIndex = 15, SelectedImageIndex = 15 }; callerNode.Nodes.Add(folderNode); callerNode.Expand(); callerNode = folderNode; } else { var node = new TreeNode(string.Format("{0}.{1}", parts[i], extension)) { ImageIndex = WebResource.GetImageIndexFromExtension (extension) + 14 }; node.SelectedImageIndex = node.ImageIndex; node.Tag = wr; wr.Node = node; wr.ReinitStatus(); //wr.State = WebresourceState.None; wr.WebresourceStateChanged += Wr_WebresourceStateChanged; callerNode.Nodes.Add(node); callerNode.Expand(); } } } }