Example #1
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 #2
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 #5
0
 public void ParentType3_Object_DynamicEditableRoot_EditableChildCollection()
 {
     Assert.True(RelationRulesEngine.IsParentAllowed(CslaObjectType.DynamicEditableRoot, CslaObjectType.EditableChildCollection));
     Assert.AreEqual(string.Empty, RelationRulesEngine.BrokenRuleMsg);
 }
Example #6
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);
 }
Example #7
0
 public void ParentType5_Object_ReadOnlyObject_ReadOnlyCollection()
 {
     Assert.True(RelationRulesEngine.IsParentAllowed(CslaObjectType.ReadOnlyObject, CslaObjectType.ReadOnlyCollection));
     Assert.AreEqual(string.Empty, RelationRulesEngine.BrokenRuleMsg);
 }
Example #8
0
 public void ParentType4_Object_DynamicEditableRoot_ReadOnlyObject()
 {
     Assert.True(RelationRulesEngine.IsParentAllowed(CslaObjectType.DynamicEditableRoot, CslaObjectType.ReadOnlyObject));
     Assert.AreEqual(string.Empty, RelationRulesEngine.BrokenRuleMsg);
 }
Example #9
0
 public void ParentType2_Object_EditableRoot_EditableSwitchable()
 {
     Assert.True(RelationRulesEngine.IsParentAllowed(CslaObjectType.EditableRoot, CslaObjectType.EditableSwitchable));
     Assert.AreEqual(string.Empty, RelationRulesEngine.BrokenRuleMsg);
 }
Example #10
0
 public void ParentType2_Collection_EditableChildCollection_EditableChild()
 {
     Assert.True(RelationRulesEngine.IsParentAllowed(CslaObjectType.EditableChildCollection, CslaObjectType.EditableChild));
     Assert.AreEqual(string.Empty, RelationRulesEngine.BrokenRuleMsg);
 }
Example #11
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 #12
0
 public void ParentType6_Collection_DynamicEditableRootCollection_DynamicEditableRoot()
 {
     Assert.True(RelationRulesEngine.IsParentAllowed(CslaObjectType.DynamicEditableRootCollection, CslaObjectType.DynamicEditableRoot));
     Assert.AreEqual(string.Empty, RelationRulesEngine.BrokenRuleMsg);
 }
Example #13
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);
 }