Example #1
0
 public void ChildType4_Collection_ReadOnlyCollection_ReadOnlyCollection()
 {
     Assert.True(RelationRulesEngine.IsChildAllowed(CslaObjectType.ReadOnlyCollection, CslaObjectType.ReadOnlyCollection));
     //Console.WriteLine(RelationRulesEngine.BrokenRuleMsg);
     //Assert.AreEqual("The child or ItemType is 'ReadOnlyCollection' but should be 'ReadOnlyObject'.", RelationRulesEngine.BrokenRuleMsg);
     Assert.AreEqual(string.Empty, RelationRulesEngine.BrokenRuleMsg);
 }
Example #2
0
 public void ParentType6_Collection_DynamicEditableRoot()
 {
     Assert.True(RelationRulesEngine.IsParentAllowed(CslaObjectType.ReadOnlyCollection, CslaObjectType.DynamicEditableRoot));
     Assert.AreEqual(string.Empty, RelationRulesEngine.BrokenRuleMsg);
     //Console.WriteLine(RelationRulesEngine.BrokenRuleMsg);
     //Assert.AreEqual("\r\nRelation rule: Specific rule; see below * * *\r\nThe ParentType is 'ReadOnlyCollection' but should be 'DynamicEditableRootCollection' or 'ReadOnlyCollection'.", RelationRulesEngine.BrokenRuleMsg);
 }
Example #3
0
 public void ParentType3_Collection_ReadOnlyCollection_EditableChildCollection()
 {
     Assert.True(RelationRulesEngine.IsParentAllowed(CslaObjectType.ReadOnlyCollection, CslaObjectType.EditableChildCollection));
     Assert.AreEqual(string.Empty, RelationRulesEngine.BrokenRuleMsg);
     //Console.WriteLine(RelationRulesEngine.BrokenRuleMsg);
     //Assert.AreEqual("\r\nRelation rule: The parent of an Editable collection must be an Editable object. * * *\r\nThe ParentType is 'ReadOnlyCollection' but should be 'EditableRoot' or 'EditableChild' or 'EditableSwitchable' or 'DynamicEditableRoot' or 'ReadOnlyCollection'.", RelationRulesEngine.BrokenRuleMsg);
 }
        public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
        {
            _editorService = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService));
            if (_editorService != null)
            {
                if (context.Instance != null)
                {
                    // CR modifying to accomodate PropertyBag
                    Type   instanceType = null;
                    object objinfo      = null;
                    ContextHelper.GetChildPropertyContextInstanceObject(context, ref objinfo, ref instanceType);
                    var prop = (ChildProperty)objinfo;
                    _lstProperties.Items.Clear();
                    _lstProperties.Items.Add("(None)");

                    var currentCslaObject = GeneratorController.Current.CurrentCslaObject;
                    currentCslaObject.ChildCollectionProperties.MarkAllAsCollection();
                    currentCslaObject.InheritedChildCollectionProperties.MarkAllAsCollection();
                    var isCollection = ((ChildProperty)objinfo).IsCollection;

                    var objectTree = currentCslaObject.GetObjectTree();
                    if (prop != null && objectTree.Contains(prop.TypeName))
                    {
                        objectTree.Remove(prop.TypeName);
                    }

                    foreach (var obj in GeneratorController.Current.CurrentUnit.CslaObjects)
                    {
                        var ancestor = obj.FindAncestor();

                        if (((isCollection && obj.ObjectType.IsCollectionType()) ||
                             (!isCollection && !obj.ObjectType.IsCollectionType())) &&
                            ReferenceEquals(obj, ancestor) &&
                            !objectTree.Contains(obj.ObjectName) &&
                            RelationRulesEngine.IsParentAllowed(currentCslaObject.ObjectType, obj.ObjectType))
                        {
                            _lstProperties.Items.Add(obj.ObjectName);
                        }
                    }
                    _lstProperties.Sorted = true;

                    _lstProperties.SelectedItem = prop.TypeName;
                    _editorService.DropDownControl(_lstProperties);
                    if (_lstProperties.SelectedIndex < 0 || _lstProperties.SelectedItem.ToString() == "(None)")
                    {
                        return(string.Empty);
                    }

                    return(_lstProperties.SelectedItem.ToString());
                }
            }

            return(value);
        }
        public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
        {
            _editorService = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService));
            if (_editorService != null)
            {
                if (context.Instance != null)
                {
                    // CR modifying to accomodate PropertyBag
                    Type   instanceType = null;
                    object objinfo      = null;
                    TypeHelper.GetContextInstanceObject(context, ref objinfo, ref instanceType);
                    var obj = (CslaObjectInfo)objinfo;
                    _lstProperties.Items.Clear();
                    _lstProperties.Items.Add("(None)");
                    foreach (var o in GeneratorController.Current.CurrentUnit.CslaObjects)
                    {
                        /*if (o.ObjectName != obj.ObjectName)
                         *  lstProperties.Items.Add(o.ObjectName);*/
                        if (o.ObjectName != obj.ObjectName)
                        {
                            if (RelationRulesEngine.IsParentAllowed(o.ObjectType, obj.ObjectType))
                            {
                                _lstProperties.Items.Add(o.ObjectName);
                            }
                        }
                    }
                    _lstProperties.Sorted = true;

                    if (_lstProperties.Items.Contains(obj.ParentType))
                    {
                        _lstProperties.SelectedItem = obj.ParentType;
                    }
                    else
                    {
                        _lstProperties.SelectedItem = "(None)";
                    }

                    _editorService.DropDownControl(_lstProperties);
                    if (_lstProperties.SelectedIndex < 0 || _lstProperties.SelectedItem.ToString() == "(None)")
                    {
                        return(string.Empty);
                    }

                    return(_lstProperties.SelectedItem.ToString());
                }
            }

            return(value);
        }
Example #6
0
 public void ChildType4_Collection_ReadOnlyCollection_DynamicEditableRootCollection()
 {
     Assert.False(RelationRulesEngine.IsChildAllowed(CslaObjectType.ReadOnlyCollection, CslaObjectType.DynamicEditableRootCollection));
     //Console.WriteLine(RelationRulesEngine.BrokenRuleMsg);
     Assert.AreEqual("\r\nRelation rule: Specific rule; see below * * *\r\nThe child or ItemType is 'DynamicEditableRootCollection' but should be 'EditableChild' or 'EditableSwitchable' or 'DynamicEditableRoot' or 'ReadOnlyObject' or 'EditableChildCollection' or 'ReadOnlyCollection'.", RelationRulesEngine.BrokenRuleMsg);
 }
Example #7
0
 public void ParentType4_Object_ReadOnlyObject_ReadOnlyObject()
 {
     Assert.True(RelationRulesEngine.IsParentAllowed(CslaObjectType.ReadOnlyObject, CslaObjectType.ReadOnlyObject));
     Assert.AreEqual(string.Empty, RelationRulesEngine.BrokenRuleMsg);
 }
Example #8
0
 public void ChildType4_Object_ReadOnlyCollection_ReadOnlyObject()
 {
     Assert.True(RelationRulesEngine.IsChildAllowed(CslaObjectType.ReadOnlyCollection, CslaObjectType.ReadOnlyObject));
     Assert.AreEqual(string.Empty, RelationRulesEngine.BrokenRuleMsg);
 }
Example #9
0
 public void ChildType5_Object_DynamicEditableRootCollection_DynamicEditableRoot()
 {
     Assert.True(RelationRulesEngine.IsChildAllowed(CslaObjectType.DynamicEditableRootCollection, CslaObjectType.DynamicEditableRoot));
     Assert.AreEqual(string.Empty, RelationRulesEngine.BrokenRuleMsg);
 }
Example #10
0
 public void ParentType1_Collection_ReadOnlyCollection()
 {
     Assert.True(RelationRulesEngine.IsNoParentAllowed(CslaObjectType.ReadOnlyCollection));
     Assert.AreEqual(string.Empty, RelationRulesEngine.BrokenRuleMsg);
 }
Example #11
0
 public void ParentType6_Object_EditableSwitchable_DynamicEditableRoot()
 {
     Assert.False(RelationRulesEngine.IsParentAllowed(CslaObjectType.EditableSwitchable, CslaObjectType.DynamicEditableRoot));
     //Console.WriteLine(RelationRulesEngine.BrokenRuleMsg);
     Assert.AreEqual("\r\nRelation rule: Specific rule; see below * * *\r\nThe ParentType is 'EditableSwitchable' but should be 'DynamicEditableRootCollection' or 'ReadOnlyCollection'.", RelationRulesEngine.BrokenRuleMsg);
 }
Example #12
0
 public void ParentType1_Object_EditableRoot()
 {
     Assert.True(RelationRulesEngine.IsNoParentAllowed(CslaObjectType.EditableRoot));
     Assert.AreEqual(string.Empty, RelationRulesEngine.BrokenRuleMsg);
 }
Example #13
0
 public void ParentType1_Object_DynamicEditableRoot()
 {
     Assert.False(RelationRulesEngine.IsNoParentAllowed(CslaObjectType.DynamicEditableRoot));
     Assert.AreEqual("DynamicEditableRoot must have a ParentType.", RelationRulesEngine.BrokenRuleMsg);
 }
Example #14
0
 public void ParentType5_Object_DynamicEditableRoot_ReadOnlyCollection()
 {
     Assert.True(RelationRulesEngine.IsParentAllowed(CslaObjectType.DynamicEditableRoot, CslaObjectType.ReadOnlyCollection));
     Assert.AreEqual(string.Empty, RelationRulesEngine.BrokenRuleMsg);
 }
Example #15
0
 public void ParentType3_Object_EditableSwitchable_EditableChildCollection()
 {
     Assert.True(RelationRulesEngine.IsParentAllowed(CslaObjectType.EditableSwitchable, CslaObjectType.EditableChildCollection));
     Assert.AreEqual(string.Empty, RelationRulesEngine.BrokenRuleMsg);
 }
Example #16
0
 public void ChildType1_Object_EditableChild_EditableChild()
 {
     Assert.True(RelationRulesEngine.IsChildAllowed(CslaObjectType.EditableChild, CslaObjectType.EditableChild));
     Assert.AreEqual(string.Empty, RelationRulesEngine.BrokenRuleMsg);
 }
Example #17
0
 public void ChildType1_Collection_EditableRoot_EditableRootCollection()
 {
     Assert.False(RelationRulesEngine.IsChildAllowed(CslaObjectType.EditableRoot, CslaObjectType.EditableRootCollection));
     //Console.WriteLine(RelationRulesEngine.BrokenRuleMsg);
     Assert.AreEqual("\r\nRelation rule: The child of an Editable object must be Editable (object or collection). * * *\r\nThe child or ItemType is 'EditableRootCollection' but should be 'EditableChild' or 'EditableSwitchable' or 'ReadOnlyObject' or 'EditableChildCollection' or 'ReadOnlyCollection'.", RelationRulesEngine.BrokenRuleMsg);
 }
Example #18
0
 public void ChildType1_Collection_EditableRoot_ReadOnlyCollection()
 {
     Assert.True(RelationRulesEngine.IsChildAllowed(CslaObjectType.EditableRoot, CslaObjectType.ReadOnlyCollection));
     Assert.AreEqual(string.Empty, RelationRulesEngine.BrokenRuleMsg);
 }
Example #19
0
 public void ChildType1_Object_DynamicEditableRoot_ReadOnlyObject()
 {
     Assert.True(RelationRulesEngine.IsChildAllowed(CslaObjectType.DynamicEditableRoot, CslaObjectType.ReadOnlyObject));
     Assert.AreEqual(string.Empty, RelationRulesEngine.BrokenRuleMsg);
 }
Example #20
0
 public void ChildType5_Object_DynamicEditableRootCollection_EditableSwitchable()
 {
     Assert.False(RelationRulesEngine.IsChildAllowed(CslaObjectType.DynamicEditableRootCollection, CslaObjectType.EditableSwitchable));
     //Console.WriteLine(RelationRulesEngine.BrokenRuleMsg);
     Assert.AreEqual("\r\nRelation rule: Specific rule; see below * * *\r\nThe child or ItemType is 'EditableSwitchable' but should be 'DynamicEditableRoot'.", RelationRulesEngine.BrokenRuleMsg);
 }
Example #21
0
 public void ParentType5_Collection_DynamicEditableRootCollection_ReadOnlyCollection()
 {
     Assert.False(RelationRulesEngine.IsParentAllowed(CslaObjectType.DynamicEditableRootCollection, CslaObjectType.ReadOnlyCollection));
     //Console.WriteLine(RelationRulesEngine.BrokenRuleMsg);
     Assert.AreEqual("\r\nRelation rule: The parent of a ReadOnly collection must be an object (Editable or ReadOnly). * * *\r\nThe ParentType is 'DynamicEditableRootCollection' but should be 'EditableRoot' or 'EditableChild' or 'EditableSwitchable' or 'DynamicEditableRoot' or 'ReadOnlyObject' or 'ReadOnlyCollection'.", RelationRulesEngine.BrokenRuleMsg);
 }
        public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
        {
            _editorService = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService));
            if (_editorService != null)
            {
                if (context.Instance != null)
                {
                    // CR modifying to accomodate PropertyBag
                    Type   instanceType = null;
                    object objinfo      = null;
                    TypeHelper.GetAssociativeEntityContextInstanceObject(context, ref objinfo, ref instanceType);
                    var associativeEntity = (AssociativeEntity)objinfo;
                    _lstProperties.Items.Clear();
                    _lstProperties.Items.Add("(None)");
                    if (context.PropertyDescriptor.DisplayName == "Primary Object" ||
                        (context.PropertyDescriptor.DisplayName == "Secondary Object" &&
                         associativeEntity.RelationType == ObjectRelationType.ManyToMany))
                    {
                        foreach (var obj in GeneratorController.Current.CurrentUnit.CslaObjects)
                        {
                            if (RelationRulesEngine.IsAllowedEntityObject(obj))
                            {
                                _lstProperties.Items.Add(obj.ObjectName);
                            }
                        }
                    }
                    if (context.PropertyDescriptor.DisplayName == "Primary Collection Type Name" ||
                        (context.PropertyDescriptor.DisplayName == "Secondary Collection Type Name" &&
                         associativeEntity.RelationType == ObjectRelationType.ManyToMany))
                    {
                        foreach (var obj in GeneratorController.Current.CurrentUnit.CslaObjects)
                        {
                            if (RelationRulesEngine.IsAllowedEntityCollection(obj))
                            {
                                _lstProperties.Items.Add(obj.ObjectName);
                            }
                        }
                    }
                    if (context.PropertyDescriptor.DisplayName == "Primary Item Type Name" ||
                        (context.PropertyDescriptor.DisplayName == "Secondary Item Type Name" &&
                         associativeEntity.RelationType == ObjectRelationType.ManyToMany))
                    {
                        foreach (var obj in GeneratorController.Current.CurrentUnit.CslaObjects)
                        {
                            if (RelationRulesEngine.IsAllowedEntityCollectionItem(obj))
                            {
                                _lstProperties.Items.Add(obj.ObjectName);
                            }
                        }
                    }
                    _lstProperties.Sorted = true;

                    if (context.PropertyDescriptor.DisplayName == "Primary Object" && associativeEntity.MainObject != null)
                    {
                        if (_lstProperties.Items.Contains(associativeEntity.MainObject))
                        {
                            _lstProperties.SelectedItem = associativeEntity.MainObject;
                        }
                    }
                    else if (context.PropertyDescriptor.DisplayName == "Secondary Object" && associativeEntity.SecondaryObject != null)
                    {
                        if (_lstProperties.Items.Contains(associativeEntity.SecondaryObject))
                        {
                            _lstProperties.SelectedItem = associativeEntity.SecondaryObject;
                        }
                    }
                    else if (context.PropertyDescriptor.DisplayName == "Primary Collection Type Name" && associativeEntity.MainCollectionTypeName != null)
                    {
                        if (_lstProperties.Items.Contains(associativeEntity.MainCollectionTypeName))
                        {
                            _lstProperties.SelectedItem = associativeEntity.MainCollectionTypeName;
                        }
                    }
                    else if (context.PropertyDescriptor.DisplayName == "Secondary Collection Type Name" && associativeEntity.SecondaryCollectionTypeName != null)
                    {
                        if (_lstProperties.Items.Contains(associativeEntity.SecondaryCollectionTypeName))
                        {
                            _lstProperties.SelectedItem = associativeEntity.SecondaryCollectionTypeName;
                        }
                    }
                    else if (context.PropertyDescriptor.DisplayName == "Primary Item Type Name" && associativeEntity.MainItemTypeName != null)
                    {
                        if (_lstProperties.Items.Contains(associativeEntity.MainItemTypeName))
                        {
                            _lstProperties.SelectedItem = associativeEntity.MainItemTypeName;
                        }
                    }
                    else if (context.PropertyDescriptor.DisplayName == "Secondary Item Type Name" && associativeEntity.SecondaryItemTypeName != null)
                    {
                        if (_lstProperties.Items.Contains(associativeEntity.SecondaryItemTypeName))
                        {
                            _lstProperties.SelectedItem = associativeEntity.SecondaryItemTypeName;
                        }
                    }
                    else
                    {
                        _lstProperties.SelectedItem = "(None)";
                    }

                    _editorService.DropDownControl(_lstProperties);
                    if (_lstProperties.SelectedIndex < 0 || _lstProperties.SelectedItem.ToString() == "(None)")
                    {
                        return(string.Empty);
                    }

                    return(_lstProperties.SelectedItem.ToString());
                }
            }

            return(value);
        }
Example #23
0
 public void ParentType2_Object_DynamicEditableRoot_EditableSwitchable()
 {
     Assert.True(RelationRulesEngine.IsParentAllowed(CslaObjectType.DynamicEditableRoot, CslaObjectType.EditableSwitchable));
     Assert.AreEqual(string.Empty, RelationRulesEngine.BrokenRuleMsg);
 }
Example #24
0
 public void ParentType2_Object_ReadOnlyObject_EditableChild()
 {
     Assert.False(RelationRulesEngine.IsParentAllowed(CslaObjectType.ReadOnlyObject, CslaObjectType.EditableChild));
     //Console.WriteLine(RelationRulesEngine.BrokenRuleMsg);
     Assert.AreEqual("\r\nRelation rule: The parent of an Editable object must be Editable (object or collection). * * *\r\nThe ParentType is 'ReadOnlyObject' but should be 'EditableRoot' or 'EditableChild' or 'EditableSwitchable' or 'DynamicEditableRoot' or 'EditableRootCollection' or 'EditableChildCollection' or 'ReadOnlyCollection'.", RelationRulesEngine.BrokenRuleMsg);
 }
Example #25
0
 public void ParentType1_Object_EditableSwitchable()
 {
     Assert.False(RelationRulesEngine.IsNoParentAllowed(CslaObjectType.EditableSwitchable));
     Assert.AreEqual("EditableSwitchable must have a ParentType.", RelationRulesEngine.BrokenRuleMsg);
 }
Example #26
0
 public void ParentType2_Collection_EditableRootCollection_EditableChild()
 {
     Assert.True(RelationRulesEngine.IsParentAllowed(CslaObjectType.EditableRootCollection, CslaObjectType.EditableChild));
     Assert.AreEqual(string.Empty, RelationRulesEngine.BrokenRuleMsg);
 }
Example #27
0
 public void ParentType1_Collection_DynamicEditableRootCollection()
 {
     Assert.True(RelationRulesEngine.IsNoParentAllowed(CslaObjectType.DynamicEditableRootCollection));
     Assert.AreEqual(string.Empty, RelationRulesEngine.BrokenRuleMsg);
 }
Example #28
0
 public void ChildType3_Collection_ReadOnlyObject_DynamicEditableRootCollection()
 {
     Assert.False(RelationRulesEngine.IsChildAllowed(CslaObjectType.ReadOnlyObject, CslaObjectType.DynamicEditableRootCollection));
     //Console.WriteLine(RelationRulesEngine.BrokenRuleMsg);
     Assert.AreEqual("\r\nRelation rule: The child of a ReadOnly object must be ReadOnly (object or collection). * * *\r\nThe child or ItemType is 'DynamicEditableRootCollection' but should be 'ReadOnlyObject' or 'ReadOnlyCollection'.", RelationRulesEngine.BrokenRuleMsg);
 }
Example #29
0
 public void ParentType1_Collection_EditableChildCollection()
 {
     Assert.False(RelationRulesEngine.IsNoParentAllowed(CslaObjectType.EditableChildCollection));
     Assert.AreEqual("EditableChildCollection must have a ParentType.", RelationRulesEngine.BrokenRuleMsg);
 }
Example #30
0
 public void ChildType2_Collection_EditableRootCollection_DynamicEditableRootCollection()
 {
     Assert.False(RelationRulesEngine.IsChildAllowed(CslaObjectType.EditableRootCollection, CslaObjectType.DynamicEditableRootCollection));
     //Console.WriteLine(RelationRulesEngine.BrokenRuleMsg);
     Assert.AreEqual("\r\nRelation rule: The item of an Editable collection must be an Editable object. * * *\r\nThe child or ItemType is 'DynamicEditableRootCollection' but should be 'EditableChild' or 'EditableSwitchable'.", RelationRulesEngine.BrokenRuleMsg);
 }