public MetaDataTreeModel(List <MetaDataTreeNode> metaData) { if (metaData.Count == 0) { root = null; return; } root = metaData[0]; for (int i = 1; i < metaData.Count; i++) { if (root == null) { break; } root = root.intersection(metaData[i]); } }
List <MetaDataNameValue> nodeChildrenToPathValue(MetaDataTreeNode node) { List <MetaDataNameValue> items = new List <MetaDataNameValue>(); foreach (MetaDataTreeNode n in node.Child) { MetaDataNameValue item = new MetaDataNameValue(); item.Name = n.ToString(); item.Node = n; item.IconPath = "pack://application:,,,/Resources/Icons/prop.ico"; if (n.NodeType == MetaDataTreeNode.Type.NAMESPACE) { item.IconPath = "pack://application:,,,/Resources/Icons/namespace.ico"; item.NodeType = "Namespace"; } else if (n.NodeType == MetaDataTreeNode.Type.ARRAY) { item.IconPath = "pack://application:,,,/Resources/Icons/array.ico"; item.NodeType = "Array"; } else if (n.NodeType == MetaDataTreeNode.Type.PROPERTY) { MetaDataTreeProperty prop = (MetaDataTreeProperty)n; if (String.IsNullOrEmpty(prop.Value)) { continue; } item.Name = FormatMetaData.formatPropertyName(prop.ToString()); item.Value = FormatMetaData.formatPropertyValue(prop.Path, prop.Value); item.NodeType = "Property"; } else if (n.NodeType == MetaDataTreeNode.Type.VALUE) { if (n.Parent.NodeType == MetaDataTreeNode.Type.PROPERTY) { continue; } item.Name = ""; item.Value = FormatMetaData.formatPropertyValue(n.Path, n.Data); item.IconPath = "pack://application:,,,/Resources/Icons/constprop.ico"; item.NodeType = "Value"; } else if (n.NodeType == MetaDataTreeNode.Type.LANGUAGE) { item.Name = "Language"; item.Value = n.ToString(); item.NodeType = "Language"; item.IconPath = "pack://application:,,,/Resources/Icons/language.ico"; } if (n.Parent != null && n.Parent.NodeType == MetaDataTreeNode.Type.ARRAY) { MetaDataTreeArray arr = (MetaDataTreeArray)(n.Parent); item.Value = FormatMetaData.formatPropertyValue(n.Path, n.Data); item.IconPath = "pack://application:,,,/Resources/Icons/constprop.ico"; item.NodeType = "Value"; int i = arr.getChildIndex(n); item.Name = "[" + Convert.ToString(i) + "] " + item.Name; } items.Add(item); } return(items); }