Ejemplo n.º 1
0
        /// <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);
        }