/// <summary> /// Creates a new view. /// </summary> private ViewState CreateView(NodeState parent, IDictionary <NodeId, IList <IReference> > externalReferences, string path, string name) { ViewState type = new ViewState(); type.SymbolicName = name; type.NodeId = new NodeId(path, NamespaceIndex); type.BrowseName = new QualifiedName(name, NamespaceIndex); type.DisplayName = type.BrowseName.Name; type.WriteMask = AttributeWriteMask.None; type.UserWriteMask = AttributeWriteMask.None; type.ContainsNoLoops = true; IList <IReference> references = null; if (!externalReferences.TryGetValue(ObjectIds.ViewsFolder, out references)) { externalReferences[ObjectIds.ViewsFolder] = references = new List <IReference>(); } type.AddReference(ReferenceTypeIds.Organizes, true, ObjectIds.ViewsFolder); references.Add(new NodeStateReference(ReferenceTypeIds.Organizes, false, type.NodeId)); if (parent != null) { parent.AddReference(ReferenceTypes.Organizes, false, type.NodeId); type.AddReference(ReferenceTypes.Organizes, true, parent.NodeId); } AddPredefinedNode(SystemContext, type); return(type); }