Esempio n. 1
0
        private void tsbAddGroup_Click(object sender, EventArgs e)
        {
            TreeNode rootNode = GetRootNode();

            if (rootNode == _machineNode)
            {
                XmlNode      node       = _loadedDoc.SelectSingleNode("//def:CustomPropertyGroups", _namespaceManager);
                XmlNode      newGroup   = _loadedDoc.CreateNode(XmlNodeType.Element, "CustomPropertyGroup", CustomPropertiesDomainModel.XmlNamespace);
                XmlAttribute nameAttrib = _loadedDoc.CreateAttribute("name");
                XmlAttribute descAttrib = _loadedDoc.CreateAttribute("description");
                XmlAttribute idAttrib   = _loadedDoc.CreateAttribute("id");

                node.AppendChild(newGroup);
                newGroup.Attributes.Append(nameAttrib);
                newGroup.Attributes.Append(descAttrib);
                newGroup.Attributes.Append(idAttrib);
                idAttrib.Value = Guid.NewGuid().ToString();

                nameAttrib.Value = PickNewGroupName();
                TreeNode tNode = rootNode.Nodes.Add(nameAttrib.Value);
                tNode.Tag = newGroup;
                tvCustomProperties.SelectedNode = tNode;
            }
            else if (rootNode == _modelNode)
            {
                CustomPropertyGroup grp = new CustomPropertyGroup(_store);
                grp.Name = PickNewGroupName();
                TreeNode newGroupNode = rootNode.Nodes.Add(grp.Name);
                newGroupNode.Tag = grp;
                tvCustomProperties.SelectedNode = newGroupNode;
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Adds the specified machine level group to the model.
        /// </summary>
        /// <param name="store">Target store</param>
        /// <param name="groupXMLNode">The group to add to the model.</param>
        /// <param name="activeForm">The current form</param>
        /// <param name="notifyAdded">Used during deserialization fixup</param>
        private static void AddGroupToModel(Store store, XmlNode groupXMLNode, CustomPropertiesManager activeForm, INotifyElementAdded notifyAdded)
        {
            CustomPropertyGroup grp = new CustomPropertyGroup(store);

            grp.Name        = groupXMLNode.Attributes["name"].Value;
            grp.Description = groupXMLNode.Attributes["description"].Value;

            if (notifyAdded != null)
            {
                notifyAdded.ElementAdded(grp, false);
            }

            TreeNode newGroupTreeNode = null;

            if (activeForm != null)
            {
                newGroupTreeNode     = activeForm._modelNode.Nodes.Add(grp.Name);
                newGroupTreeNode.Tag = grp;
                activeForm.tvCustomProperties.SelectedNode = newGroupTreeNode;
            }

            XmlNodeList xmlDefinitions = groupXMLNode.SelectNodes("def:CustomPropertyDefinition", _namespaceManager);

            foreach (XmlNode xmlDef in xmlDefinitions)
            {
                CustomPropertyDefinition def        = new CustomPropertyDefinition(store);
                XmlAttributeCollection   attributes = xmlDef.Attributes;
                def.CustomPropertyGroup = grp;
                def.Name        = attributes["name"].Value;
                def.Category    = attributes["category"].Value;
                def.Description = attributes["description"].Value;
                def.DataType    = (CustomPropertyDataType)Enum.Parse(typeof(CustomPropertyDataType), attributes["dataType"].Value, true);
                XmlAttribute defaultValueAttribute = attributes["defaultValue"];
                if (defaultValueAttribute != null)
                {
                    def.DefaultValue = defaultValueAttribute.Value;
                }
                XmlAttribute verbalizeDefaultAttribute = attributes["verbalizeDefaultValue"];
                if (verbalizeDefaultAttribute != null)
                {
                    string verbalizeDefaultText = verbalizeDefaultAttribute.Value.Trim();
                    def.VerbalizeDefaultValue = verbalizeDefaultText == "true" || verbalizeDefaultText == "1";
                }
                XmlNodeList types = xmlDef.SelectNodes("def:ORMTypes/def:ORMType", _namespaceManager);
                foreach (XmlNode ormType in types)
                {
                    def.ORMTypes = def.ORMTypes | (ORMTypes)Enum.Parse(typeof(ORMTypes), ormType.Attributes["name"].Value, true);
                }

                if (notifyAdded != null)
                {
                    notifyAdded.ElementAdded(def, true);
                }

                if (newGroupTreeNode != null)
                {
                    newGroupTreeNode.Nodes.Add(def.Name).Tag = def;
                }
            }
        }
Esempio n. 3
0
        private void tsbAddDefinition_Click(object sender, EventArgs e)
        {
            TreeNode rootNode = GetRootNode();

            TreeNode groupNode;

            groupNode = tvCustomProperties.SelectedNode.Level == _groupLevel ?
                        tvCustomProperties.SelectedNode : tvCustomProperties.SelectedNode.Parent;
            if (rootNode == _machineNode)
            {
                XmlNode groupXmlNode;

                groupXmlNode = groupNode.Tag as XmlNode;
                CustomPropertyGroup groupObject = groupNode.Tag as CustomPropertyGroup;

                XmlNode newProperty = _loadedDoc.CreateNode(XmlNodeType.Element, "CustomPropertyDefinition", CustomPropertiesDomainModel.XmlNamespace);
                XmlNode newOrmTypes = _loadedDoc.CreateElement("ORMTypes", CustomPropertiesDomainModel.XmlNamespace);
                newProperty.AppendChild(newOrmTypes);
                groupXmlNode.AppendChild(newProperty);

                XmlAttribute nameAttrib     = _loadedDoc.CreateAttribute("name");
                XmlAttribute categoryAttrib = _loadedDoc.CreateAttribute("category");
                XmlAttribute dataTypeAttrib = _loadedDoc.CreateAttribute("dataType");
                XmlAttribute descAttrib     = _loadedDoc.CreateAttribute("description");

                newProperty.Attributes.Append(nameAttrib);
                newProperty.Attributes.Append(categoryAttrib);
                newProperty.Attributes.Append(dataTypeAttrib);
                newProperty.Attributes.Append(descAttrib);

                if (groupXmlNode != null)
                {
                    nameAttrib.Value = PickNewDefinitionName(groupXmlNode);
                }
                else if (groupObject != null)
                {
                    nameAttrib.Value = PickNewDefinitionName(groupObject);
                }

                dataTypeAttrib.Value = "String";

                TreeNode newPropertyNode = groupNode.Nodes.Add(nameAttrib.Value);
                newPropertyNode.Tag             = newProperty;
                tvCustomProperties.SelectedNode = newPropertyNode;
            }
            else if (rootNode == _modelNode)
            {
                CustomPropertyGroup      grp = groupNode.Tag as CustomPropertyGroup;
                CustomPropertyDefinition def = new CustomPropertyDefinition(_store);
                def.CustomPropertyGroup = grp;
                def.Name = PickNewDefinitionName(grp);
                TreeNode newDefNode = groupNode.Nodes.Add(def.Name);
                newDefNode.Tag = def;
                tvCustomProperties.SelectedNode = newDefNode;
            }
        }
Esempio n. 4
0
        /// <summary>
        /// Gets a new name for a definition that is in the Model.
        /// </summary>
        /// <param name="group">The group that this definition will belong to.</param>
        /// <returns>The name for the new definition.</returns>
        private string PickNewDefinitionName(CustomPropertyGroup group)
        {
            LinkedElementCollection <CustomPropertyDefinition> defs = group.CustomPropertyDefinitionCollection;
            List <string> names = new List <string>();

            foreach (CustomPropertyDefinition def in defs)
            {
                names.Add(def.Name);
            }
            return(PickNewDefinitionName(names.ToArray()));
        }
 internal static DslModeling::LinkedElementCollection <CustomPropertyDefinition> GetCustomPropertyDefinitionCollection(CustomPropertyGroup element)
 {
     return(GetRoleCollection <DslModeling::LinkedElementCollection <CustomPropertyDefinition>, CustomPropertyDefinition>(element, CustomPropertyGroupDomainRoleId));
 }
 internal static void SetCustomPropertyGroup(CustomPropertyDefinition element, CustomPropertyGroup newCustomPropertyGroup)
 {
     DslModeling::DomainRoleInfo.SetLinkedElement(element, CustomPropertyDefinitionDomainRoleId, newCustomPropertyGroup);
 }
 /// <summary>
 /// Constructor
 /// Creates a CustomPropertyGroupContainsCustomPropertyDefinition link in the same Partition as the given CustomPropertyGroup
 /// </summary>
 /// <param name="source">CustomPropertyGroup to use as the source of the relationship.</param>
 /// <param name="target">CustomPropertyDefinition to use as the target of the relationship.</param>
 internal CustomPropertyGroupContainsCustomPropertyDefinition(CustomPropertyGroup source, CustomPropertyDefinition target)
     : base((source != null ? source.Partition : null), new DslModeling::RoleAssignment[] { new DslModeling::RoleAssignment(CustomPropertyGroupContainsCustomPropertyDefinition.CustomPropertyGroupDomainRoleId, source), new DslModeling::RoleAssignment(CustomPropertyGroupContainsCustomPropertyDefinition.CustomPropertyDefinitionDomainRoleId, target) }, null)
 {
 }
Esempio n. 8
0
 public static DslModeling::LinkedElementCollection <CustomPropertyDefinition> GetCustomPropertyDefinitionCollection(CustomPropertyGroup element)
 {
     return(new DslModeling::LinkedElementCollection <CustomPropertyDefinition>(element, CustomPropertyGroupDomainRoleId));
 }
Esempio n. 9
0
        private void tsbAddGroupToMachine_Click(object sender, EventArgs e)
        {
            //Grab the model group that we are adding to the machine.
            TreeNode modelGroupNode = null;

            switch (tvCustomProperties.SelectedNode.Level)
            {
            case _groupLevel:
                modelGroupNode = tvCustomProperties.SelectedNode;
                break;

            case _definitionLevel:
                modelGroupNode = tvCustomProperties.SelectedNode.Parent;
                break;
            }

            CustomPropertyGroup cpg = modelGroupNode.Tag as CustomPropertyGroup;

            //Create the XML for the Group and it's attributes.
            XmlNode      groupsNode = _loadedDoc.SelectSingleNode("//def:CustomPropertyGroups", _namespaceManager);
            XmlNode      newGroup   = _loadedDoc.CreateNode(XmlNodeType.Element, "CustomPropertyGroup", CustomPropertiesDomainModel.XmlNamespace);
            XmlAttribute nameAttrib = _loadedDoc.CreateAttribute("name");
            XmlAttribute descAttrib = _loadedDoc.CreateAttribute("description");
            XmlAttribute idAttrib   = _loadedDoc.CreateAttribute("id");

            groupsNode.AppendChild(newGroup);
            newGroup.Attributes.Append(nameAttrib);
            newGroup.Attributes.Append(descAttrib);
            newGroup.Attributes.Append(idAttrib);

            //Assign the values from the model group.
            nameAttrib.Value = cpg.Name;
            descAttrib.Value = cpg.Description;
            idAttrib.Value   = cpg.Id.ToString();

            //Create the tree node for the group and set the tag
            TreeNode tNode = _machineNode.Nodes.Add(nameAttrib.Value);

            tNode.Tag = newGroup;
            tvCustomProperties.SelectedNode = tNode;

            //Add all of the definitions for the group we just added to the machine.
            foreach (TreeNode nd in modelGroupNode.Nodes)
            {
                CustomPropertyDefinition newDef = nd.Tag as CustomPropertyDefinition;

                //Create the XML objects for the definition.
                XmlNode newProperty = _loadedDoc.CreateNode(XmlNodeType.Element, "CustomPropertyDefinition", CustomPropertiesDomainModel.XmlNamespace);
                XmlNode newOrmTypes = _loadedDoc.CreateElement("ORMTypes", CustomPropertiesDomainModel.XmlNamespace);
                newProperty.AppendChild(newOrmTypes);
                newGroup.AppendChild(newProperty);

                XmlAttribute defNameAttrib  = _loadedDoc.CreateAttribute("name");
                XmlAttribute categoryAttrib = _loadedDoc.CreateAttribute("category");
                XmlAttribute dataTypeAttrib = _loadedDoc.CreateAttribute("dataType");
                XmlAttribute defDescAttrib  = _loadedDoc.CreateAttribute("description");

                newProperty.Attributes.Append(defNameAttrib);
                newProperty.Attributes.Append(categoryAttrib);
                newProperty.Attributes.Append(dataTypeAttrib);
                newProperty.Attributes.Append(defDescAttrib);

                //Assign them their values from the model object.
                defNameAttrib.Value  = newDef.Name;
                categoryAttrib.Value = newDef.Category;
                defDescAttrib.Value  = newDef.Description;
                dataTypeAttrib.Value = newDef.DataType.ToString();

                //Probably a better way to do this but since the newDef.ORMTypes property is a bit field
                //we need to find out each enumeration that has been specified for the object and add it to the xml.
                AddORMTypeToGroupIfNeeded(newDef.ORMTypes, ORMTypes.AllConstraints, newOrmTypes);
                AddORMTypeToGroupIfNeeded(newDef.ORMTypes, ORMTypes.Model, newOrmTypes);
                AddORMTypeToGroupIfNeeded(newDef.ORMTypes, ORMTypes.ORMDiagram, newOrmTypes);
                AddORMTypeToGroupIfNeeded(newDef.ORMTypes, ORMTypes.ElementGrouping, newOrmTypes);
                AddORMTypeToGroupIfNeeded(newDef.ORMTypes, ORMTypes.EntityType, newOrmTypes);
                AddORMTypeToGroupIfNeeded(newDef.ORMTypes, ORMTypes.CardinalityConstraint, newOrmTypes);
                AddORMTypeToGroupIfNeeded(newDef.ORMTypes, ORMTypes.EqualityConstraint, newOrmTypes);
                AddORMTypeToGroupIfNeeded(newDef.ORMTypes, ORMTypes.ExclusionConstraint, newOrmTypes);
                AddORMTypeToGroupIfNeeded(newDef.ORMTypes, ORMTypes.FactType, newOrmTypes);
                AddORMTypeToGroupIfNeeded(newDef.ORMTypes, ORMTypes.FrequencyConstraint, newOrmTypes);
                AddORMTypeToGroupIfNeeded(newDef.ORMTypes, ORMTypes.MandatoryConstraint, newOrmTypes);
                AddORMTypeToGroupIfNeeded(newDef.ORMTypes, ORMTypes.RingConstraint, newOrmTypes);
                AddORMTypeToGroupIfNeeded(newDef.ORMTypes, ORMTypes.Role, newOrmTypes);
                AddORMTypeToGroupIfNeeded(newDef.ORMTypes, ORMTypes.SubsetConstraint, newOrmTypes);
                AddORMTypeToGroupIfNeeded(newDef.ORMTypes, ORMTypes.SubtypeFact, newOrmTypes);
                AddORMTypeToGroupIfNeeded(newDef.ORMTypes, ORMTypes.UniquenessConstraint, newOrmTypes);
                AddORMTypeToGroupIfNeeded(newDef.ORMTypes, ORMTypes.ValueComparisonConstraint, newOrmTypes);
                AddORMTypeToGroupIfNeeded(newDef.ORMTypes, ORMTypes.ValueConstraint, newOrmTypes);
                AddORMTypeToGroupIfNeeded(newDef.ORMTypes, ORMTypes.ValueType, newOrmTypes);

                //Add the new definition to the TreeView and set it's tag.
                TreeNode newPropertyNode = tNode.Nodes.Add(defNameAttrib.Value);
                newPropertyNode.Tag = newProperty;
            }
        }
Esempio n. 10
0
		public static DslModeling::LinkedElementCollection<CustomPropertyDefinition> GetCustomPropertyDefinitionCollection(CustomPropertyGroup element)
		{
			return new DslModeling::LinkedElementCollection<CustomPropertyDefinition>(element, CustomPropertyGroupDomainRoleId);
		}
Esempio n. 11
0
		public static void SetCustomPropertyGroup(CustomPropertyDefinition element, CustomPropertyGroup newCustomPropertyGroup)
		{
			DslModeling::DomainRoleInfo.SetLinkedElement(element, CustomPropertyDefinitionDomainRoleId, newCustomPropertyGroup);
		}
Esempio n. 12
0
		/// <summary>
		/// Constructor
		/// Creates a CustomPropertyGroupContainsCustomPropertyDefinition link in the same Partition as the given CustomPropertyGroup
		/// </summary>
		/// <param name="source">CustomPropertyGroup to use as the source of the relationship.</param>
		/// <param name="target">CustomPropertyDefinition to use as the target of the relationship.</param>
		public CustomPropertyGroupContainsCustomPropertyDefinition(CustomPropertyGroup source, CustomPropertyDefinition target)
			: base((source != null ? source.Partition : null), new DslModeling::RoleAssignment[]{new DslModeling::RoleAssignment(CustomPropertyGroupContainsCustomPropertyDefinition.CustomPropertyGroupDomainRoleId, source), new DslModeling::RoleAssignment(CustomPropertyGroupContainsCustomPropertyDefinition.CustomPropertyDefinitionDomainRoleId, target)}, null)
		{
		}
Esempio n. 13
0
		internal static DslModeling::LinkedElementCollection<CustomPropertyDefinition> GetCustomPropertyDefinitionCollection(CustomPropertyGroup element)
		{
			return GetRoleCollection<DslModeling::LinkedElementCollection<CustomPropertyDefinition>, CustomPropertyDefinition>(element, CustomPropertyGroupDomainRoleId);
		}