private void ControlsToData()
{
if (_signalFunctionType == null)
{
SignalModel model = awbDropListTree.SelectedSignalModel;
if (model != null)
{
var name = edtName.Text;
var ins = edtIn.Text;
var signal = model.Signal;
if (signal != null)
{
bool hasClass = false;
string signalName = signal.name;
string xmlns = model.SignalNameSpace;
var bean = CacheManager.GetNamespaceCache().getItem( xmlns ) as LuNamespaceBean;
if (bean != null)
{
string className = bean.appNamespace + "." + signalName;
object obj = Assembly.GetExecutingAssembly().CreateInstance( className );
if (obj is SignalFunctionType)
{
_signalFunctionType = obj as SignalFunctionType;
hasClass = true;
}
}
if( !hasClass )
{
CreateXmlElementItem(model);
}
}
}
else if (!string.IsNullOrEmpty( edtName.Text ))
{
//CreateXmlElementItem( edtName.Text );
}
}
XmlElement element = _signalFunctionType as XmlElement;
if (element != null)
{
element.SetAttribute( "name", edtName.Text );
if( string.IsNullOrWhiteSpace(edtIn.Text) )
element.RemoveAttribute( "in" );
else
element.SetAttribute("in", edtIn.Text );
}
foreach (DataGridViewRow row in signalAttributes.Rows)
{
if (row.IsNewRow)
continue;
var name = row.Cells[0].Value as string;
var type = row.Cells[1].Value as string;
var value = row.Cells[2].Value as string;
var attr = row.Tag as dbSignalAttribute;
//---------------------------------------------------//
//--- Set the default value if the value is empty ---//
//---------------------------------------------------//
if (string.IsNullOrWhiteSpace( value ) && attr != null &&
!string.IsNullOrWhiteSpace( attr.defaultValue ))
value = attr.defaultValue;
if (_signalFunctionType is SignalFunctionType)
{
if (attr == null)
attr = new dbSignalAttribute();
attr.Value = value;
attr.attributeName = name;
( (SignalFunctionType) _signalFunctionType ).Value = value;
if (name != null)
{
PropertyInfo pi = _signalFunctionType.GetType().GetProperty( name );
if (pi != null)
{
if (!string.IsNullOrWhiteSpace( value ))
pi.SetValue( _signalFunctionType, value, null );
}
}
}
else if (_signalFunctionType is XmlElement)
{
var signal = (XmlElement) _signalFunctionType;
if (string.IsNullOrWhiteSpace( value ))
signal.RemoveAttribute( name );
else if (name != null) signal.SetAttribute( name, value );
}
}
}