Example #1
0
        public LabelEditResult CommitLabelEdit(int row, int column, string newText)
        {
            MemberInfo memberInfo = m_Parameters[row];

            if (m_ReadOnly)
            {
                m_VirtualTreeControl.EndLabelEdit(true);
                return(LabelEditResult.CancelEdit);
            }

            bool refreshTree = false;

            if (memberInfo.Member.IsClass)
            {
                refreshTree = true;

                if (newText == NULL_VALUE_TEXT)
                {
                    memberInfo.Value = null;
                }
                else
                {
                    memberInfo.Value = DynamicMethodCompilerCache.CreateInstance(memberInfo.Member.Type);
                }
            }
            else
            {
                try
                {
                    memberInfo.Value = ConversionUtils.ChangeType(newText, memberInfo.Member.Type);
                }
                catch
                {
                    m_VirtualTreeControl.EndLabelEdit(true);
                    return(LabelEditResult.CancelEdit);
                }
            }

            if (refreshTree)
            {
                m_VirtualTreeControl.BeginUpdate();
                m_RelativeRow             = row;
                m_VirtualTree.ListShuffle = true;
                m_VirtualTree.Realign(this);
                m_VirtualTreeControl.EndUpdate();
                m_VirtualTree.ListShuffle = false;
            }
            PropagateValueUpdateEvent();

            return(LabelEditResult.AcceptEdit);
        }
Example #2
0
 public OperationParameterTree AddChild(int row, Class @class, object value)
 {
     return(AddChild(
                row,
                @class == null
             ? new List <MemberInfo>(0)
             : @class.Properties.Select(
                    x =>
                    new MemberInfo
     {
         Member = x,
         Value = value == null ? null : DynamicMethodCompilerCache.GetPropertyValue(value, x.Name)
     }).ToList()));
 }
        private static void SetProperties(object value, int row, OperationParameterTree operationParameterTree)
        {
            OperationParameterTree childOperationParameterTree = operationParameterTree.Children[row];

            if (childOperationParameterTree != null && value != null)
            {
                for (int i = 0; i < childOperationParameterTree.Parameters.Count; i++)
                {
                    MemberInfo parameter = childOperationParameterTree.Parameters[i];
                    DynamicMethodCompilerCache.SetPropertyValue(value, parameter.Member.Name, parameter.Value);

                    SetProperties(parameter.Value, i, childOperationParameterTree);
                }
            }
        }