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); }
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); } } }