public void _NodeTypeName_Change(CswNbtNodeProp Prop, bool Creating) { //if( null != RelationalNodeType && RelationalNodeType.getObjectClass().ObjectClass == CswEnumNbtObjectClass.InspectionDesignClass ) if (null != RelationalNodeType && null != ObjectClassPropertyValue && ObjectClassPropertyValue.ObjectClass == CswEnumNbtObjectClass.InspectionDesignClass) { // Set 'Name' default value = nodetypename CswNbtMetaDataNodeTypeProp NameProp = RelationalNodeType.getNodeTypePropByObjectClassProp(CswNbtObjClassInspectionDesign.PropertyName.Name); NameProp.getDefaultValue(true).AsText.Text = RelationalNodeType.NodeTypeName; } if (false == CswTools.IsValidName(NodeTypeName.Text)) { throw new CswDniException(CswEnumErrorType.Warning, "NodeType Name must start with a letter, and can only contain alphanumeric characters and spaces.", "Attempted to name the NodeType '" + NodeTypeName.Text + "'"); } } // _NodeTypeName_Change()
/// <summary> /// Create properties based from the object class /// </summary> private void _setPropertyValuesFromObjectClass() { Dictionary <Int32, CswNbtObjClassDesignNodeTypeProp> NewNTPropsByOCPId = new Dictionary <Int32, CswNbtObjClassDesignNodeTypeProp>(); //int DisplayRow = 1; // Create/convert object class props foreach (CswNbtMetaDataObjectClassProp OCProp in ObjectClassPropertyValue.getObjectClassProps()) { CswNbtObjClassDesignNodeTypeProp PropNode = null; if (null != RelationalNodeType) { PropNode = (from Prop in RelationalNodeType.getNodeTypeProps() where (Prop.PropName == OCProp.PropName || Prop.getObjectClassPropName() == OCProp.PropName) && Prop.FieldTypeId == OCProp.FieldTypeId select Prop.DesignNode ).FirstOrDefault(); } // If converting, need to detect existing properties if (null != PropNode) { PropNode.ObjectClassPropName.Value = OCProp.PropId.ToString(); NewNTPropsByOCPId.Add(OCProp.PropId, PropNode); } else { string NewPropName = OCProp.PropName; while (null != RelationalNodeType && null != RelationalNodeType.getNodeTypeProp(NewPropName)) { NewPropName = NewPropName + " (new)"; } CswNbtMetaDataNodeType DesignNodeTypePropNT = _CswNbtResources.MetaData.getNodeType(CswNbtObjClassDesignNodeTypeProp.getNodeTypeName(OCProp.getFieldTypeValue())); PropNode = _CswNbtResources.Nodes.makeNodeFromNodeTypeId(DesignNodeTypePropNT.NodeTypeId, delegate(CswNbtNode NewNode) { ((CswNbtObjClassDesignNodeTypeProp)NewNode).NodeTypeValue.RelatedNodeId = this.NodeId; ((CswNbtObjClassDesignNodeTypeProp)NewNode).ObjectClassPropName.Value = OCProp.PropId.ToString(); ((CswNbtObjClassDesignNodeTypeProp)NewNode).FieldType.Value = OCProp.FieldTypeId.ToString(); ((CswNbtObjClassDesignNodeTypeProp)NewNode).PropName.Text = NewPropName; }); NewNTPropsByOCPId.Add(OCProp.ObjectClassPropId, PropNode); } // if-else( null != PropNode ) //only update the layout when we're not overriding an existing nodetype PropNode.syncFromObjectClassProp(false == _overrideNodeConversionCheck); } // foreach( CswNbtMetaDataObjectClassProp OCProp in ObjectClassPropertyValue.getObjectClassProps() ) // Now that we're done with all object class props, we can handle filters foreach (CswNbtMetaDataObjectClassProp OCProp in ObjectClassPropertyValue.getObjectClassProps()) { if (OCProp.hasFilter()) { CswNbtObjClassDesignNodeTypeProp NTProp = NewNTPropsByOCPId[OCProp.ObjectClassPropId]; if (null != NTProp) { CswNbtObjClassDesignNodeTypeProp TargetOfFilter = NewNTPropsByOCPId[OCProp.FilterObjectClassPropId]; if (TargetOfFilter != null) { CswNbtSubField SubField = null; CswEnumNbtFilterMode FilterMode = CswEnumNbtFilterMode.Unknown; string FilterValue = string.Empty; OCProp.getFilter(ref SubField, ref FilterMode, ref FilterValue); // We don't have to worry about versioning in this function NTProp.DisplayConditionProperty.RelatedNodeId = TargetOfFilter.NodeId; NTProp.DisplayConditionSubfield.Value = SubField.Name.ToString(); NTProp.DisplayConditionFilterMode.Value = FilterMode.ToString(); NTProp.DisplayConditionValue.Text = FilterValue; NTProp.postChanges(false); } // if( TargetOfFilter != null ) } // if( null != NTProp ) } // if( OCProp.hasFilter() ) } // foreach( CswNbtMetaDataObjectClassProp OCProp in ObjectClassProps ) // Handle search defer inheritance from object classes if (Int32.MinValue != ObjectClassPropertyValue.SearchDeferPropId) { //if( CswNbtMetaDataObjectClass.NotSearchableValue != ObjectClassPropertyValue.SearchDeferPropId ) //{ CswNbtObjClassDesignNodeTypeProp SearchDeferProp = NewNTPropsByOCPId[ObjectClassPropertyValue.SearchDeferPropId]; this.DeferSearchTo.RelatedNodeId = SearchDeferProp.NodeId; //} //else //{ // this.DeferSearchTo.RelatedNodeId = null; //} } } // _setPropertyValuesFromObjectClass()