Exemple #1
0
        private string GetDescription()
        {
            if (this.NodeNature == Nature.Deprecated)
            {
                if (string.IsNullOrEmpty(this.LegacyAssembly))
                {
                    var format = "Node of type '{0}' is now deprecated";
                    return(string.Format(format, this.LegacyNodeName));
                }
                else
                {
                    var format = "Node of type '{0}' ({1}) is now deprecated";
                    return(string.Format(format, this.LegacyNodeName, this.LegacyAssembly));
                }
            }
            else if (this.NodeNature == Nature.Unresolved)
            {
                if (string.IsNullOrEmpty(this.LegacyAssembly))
                {
                    var format = "Node of type '{0}' cannot be resolved";
                    return(string.Format(format, this.LegacyNodeName));
                }
                else
                {
                    var format = "Node of type '{0}' ({1}) cannot be resolved";
                    return(string.Format(format, this.LegacyNodeName, this.LegacyAssembly));
                }
            }

            var message = "Unhandled 'DummyNode.NodeNature' value: {0}";

            throw new InvalidOperationException(string.Format(message, NodeNature.ToString()));
        }
Exemple #2
0
        private void SaveNode(XmlDocument xmlDoc, XmlElement nodeElement, SaveContext context)
        {
            if (context == SaveContext.Copy || context == SaveContext.Undo)
            {
                //Dump all the information into memory

                nodeElement.SetAttribute("inputCount", InputCount.ToString());
                nodeElement.SetAttribute("outputCount", OutputCount.ToString());
                nodeElement.SetAttribute("legacyNodeName", LegacyNodeName);
                nodeElement.SetAttribute("legacyAssembly", LegacyAssembly);
                nodeElement.SetAttribute("nodeNature", NodeNature.ToString());

                if (OriginalNodeContent != null)
                {
                    XmlElement originalNode = xmlDoc.CreateElement("OriginalNodeContent");
                    XmlElement nodeContent  = nodeElement.OwnerDocument.CreateElement(OriginalNodeContent.Name);

                    foreach (XmlAttribute attribute in OriginalNodeContent.Attributes)
                    {
                        nodeContent.SetAttribute(attribute.Name, attribute.Value);
                    }

                    for (int i = 0; i < OriginalNodeContent.ChildNodes.Count; i++)
                    {
                        XmlNode child =
                            nodeContent.OwnerDocument.ImportNode(OriginalNodeContent.ChildNodes[i], true);
                        nodeContent.AppendChild(child.CloneNode(true));
                    }

                    originalNode.AppendChild(nodeContent);
                    nodeElement.AppendChild(originalNode);
                }
            }

            if (context == SaveContext.File)
            {
                //When save files, only save the original node's content,
                //instead of saving the dummy node.
                if (OriginalNodeContent != null)
                {
                    nodeElement.RemoveAll();
                    foreach (XmlAttribute attribute in OriginalNodeContent.Attributes)
                    {
                        nodeElement.SetAttribute(attribute.Name, attribute.Value);
                    }

                    //overwrite the guid/x/y value of the original node.
                    nodeElement.SetAttribute("guid", nodeElement.GetAttribute("guid"));
                    nodeElement.SetAttribute("x", nodeElement.GetAttribute("x"));
                    nodeElement.SetAttribute("y", nodeElement.GetAttribute("y"));

                    for (int i = 0; i < OriginalNodeContent.ChildNodes.Count; i++)
                    {
                        XmlNode child = nodeElement.OwnerDocument.ImportNode(OriginalNodeContent.ChildNodes[i], true);
                        nodeElement.AppendChild(child.CloneNode(true));
                    }
                }
                else
                {
                    nodeElement.SetAttribute("inputCount", InputCount.ToString());
                    nodeElement.SetAttribute("outputCount", OutputCount.ToString());
                    nodeElement.SetAttribute("legacyNodeName", LegacyNodeName);
                    nodeElement.SetAttribute("legacyAssembly", LegacyAssembly);
                    nodeElement.SetAttribute("nodeNature", NodeNature.ToString());
                }
            }
        }