Exemple #1
0
        public void onSetFk(CswNbtObjClassDesignNodeTypeProp DesignNTPNode)
        {
            CswNbtNodePropMetaDataList  FkProp   = DesignNTPNode.AttributeProperty[AttributeName.Target].AsMetaDataList;
            CswNbtNodePropViewReference ViewProp = DesignNTPNode.AttributeProperty[AttributeName.View].AsViewReference;

            if (null != FkProp &&
                null != ViewProp &&
                (FkProp.wasSubFieldModified(CswNbtFieldTypeRuleMetaDataList.SubFieldName.Type) ||
                 FkProp.wasSubFieldModified(CswNbtFieldTypeRuleMetaDataList.SubFieldName.Id)) &&
                CswEnumNbtViewRelatedIdType.Unknown != FkProp.Type &&
                Int32.MinValue != FkProp.Id)
            {
                CswNbtView View = _CswNbtFieldResources.CswNbtResources.ViewSelect.restoreView(ViewProp.ViewId);
                // don't override if view was also modified (case 31812)
                // but still override if the view is empty, to handle brand new properties (case 31858)
                if (View.IsEmpty() || false == ViewProp.wasSubFieldModified(CswNbtFieldTypeRuleViewReference.SubFieldName.ViewID))
                {
                    //We have valid values that are different that what is currently set
                    CswNbtFieldTypeRuleDefaultImpl.setDefaultView(_CswNbtFieldResources.CswNbtResources.MetaData, DesignNTPNode, View, FkProp.Type, FkProp.Id, false);
                }
            }
        } // onSetFk()
        public void UpdateNode(CswNbtNode Node, bool ForceUpdate)
        {
            // BZ 10240
            if ((Node.PendingUpdate || ForceUpdate) && Node.getObjectClass().ObjectClass == CswEnumNbtObjectClass.EquipmentClass)
            {
                ((CswNbtObjClassEquipment)Node).SyncEquipmentToAssembly();
            }
            // Case 30126
            if (null != Node.getObjectClass().getPropertySet())
            {
                if ((Node.PendingUpdate || ForceUpdate) && Node.getObjectClass().getPropertySet().Name == CswEnumNbtPropertySetName.MaterialSet)
                {
                    ((CswNbtPropertySetMaterial)Node).onUpdatePropertyValue();
                }
            }

            // Update all out of date values for a given node
            foreach (CswNbtNodePropWrapper PropWrapper in Node.Properties)
            {
                if (PropWrapper.PendingUpdate || Node.PendingUpdate || ForceUpdate)
                {
                    switch (PropWrapper.getFieldTypeValue())
                    {
                    case CswEnumNbtFieldType.Composite:
                        CswNbtNodePropComposite CompositeProp = PropWrapper.AsComposite;
                        CompositeProp.RecalculateCompositeValue();
                        break;

                    case CswEnumNbtFieldType.Location:
                        CswNbtNodePropLocation LocationProp = PropWrapper.AsLocation;
                        LocationProp.RefreshNodeName();
                        break;

                    case CswEnumNbtFieldType.LogicalSet:
                        CswNbtNodePropLogicalSet LogicalSetProp = PropWrapper.AsLogicalSet;
                        LogicalSetProp.RefreshStringValue(SetPendingUpdate: false);
                        break;

                    case CswEnumNbtFieldType.NodeTypeSelect:
                        CswNbtNodePropNodeTypeSelect NodeTypeSelectProp = PropWrapper.AsNodeTypeSelect;
                        NodeTypeSelectProp.RefreshSelectedNodeTypeNames();
                        break;

                    case CswEnumNbtFieldType.PropertyReference:
                        CswNbtNodePropPropertyReference PropertyReferenceProp = PropWrapper.AsPropertyReference;
                        PropertyReferenceProp.RecalculateReferenceValue();
                        break;

                    case CswEnumNbtFieldType.Quantity:
                        CswNbtNodePropQuantity QuantityProp = PropWrapper.AsQuantity;
                        QuantityProp.RefreshNodeName();
                        break;

                    case CswEnumNbtFieldType.Relationship:
                        CswNbtNodePropRelationship RelationshipProp = PropWrapper.AsRelationship;
                        RelationshipProp.RefreshNodeName();
                        break;

                    case CswEnumNbtFieldType.ViewPickList:
                        CswNbtNodePropViewPickList ViewPickListProp = PropWrapper.AsViewPickList;
                        ViewPickListProp.RefreshViewName();
                        break;

                    case CswEnumNbtFieldType.ViewReference:
                        CswNbtNodePropViewReference ViewReferenceProp = PropWrapper.AsViewReference;
                        ViewReferenceProp.RefreshViewName();
                        break;

                    case CswEnumNbtFieldType.MTBF:
                        CswNbtNodePropMTBF MTBFProp = PropWrapper.AsMTBF;
                        MTBFProp.RefreshCachedValue();
                        break;

                    default:
                        if (PropWrapper.PendingUpdate)
                        {
                            PropWrapper.setPendingUpdate(false);
                        }
                        break;
                    } // switch (PropWrapper.FieldType.FieldType)
                }     // if(PropWrapper.PendingUpdate)
            }         // foreach (CswNbtNodePropWrapper PropWrapper in Node.Properties)

            if (Node.PendingUpdate)
            {
                Node.PendingUpdate = false;
            }
        } // UpdateNode()