private void lvModel_SelectedIndexChanged(object sender, EventArgs e)
{
if (lvModel.SelectedItems.Count > 0)
{
ListViewItem item = lvModel.SelectedItems[0];
var sf = item.Tag as SignalFunction;
var element = item.Tag as XmlElement;
if (element != null)
{
ResetAttributeColors();
foreach ( XmlAttribute attribute in element.Attributes)
{
foreach (ListViewItem lvi in lvAttributes.Items)
{
SignalAttribute sa = lvi.Tag as SignalAttribute;
if (sa != null && attribute.Value != null )
{
if (attribute.Value.Contains(sa.Name))
lvi.BackColor = RELATED_COLOR;
}
}
}
}
if (sf != null)
{
if (!String.IsNullOrEmpty(sf.In))
{
foreach (ListViewItem lvi in lvModel.Items)
{
var lvsf = lvi.Tag as SignalFunction;
if (lvsf != null && !sf.name.Equals(lvsf.name))
{
if (sf.In.Contains(lvsf.name))
lvi.BackColor = INPUT_COLOR;
else
lvi.BackColor = NORMAL_COLOR;
}
}
}
else
{
ResetModelColors();
}
ResetAttributeColors();
foreach (ListViewItem lvi in lvAttributes.Items)
{
SignalAttribute sa = lvi.Tag as SignalAttribute;
if (sa != null)
{
string attrName = sa.Name;
foreach (PropertyInfo pi in sf.GetType().GetProperties())
{
object value = pi.GetValue( sf, null );
if (value != null)
{
if (IsStringArray( pi ))
{
foreach ( string s in ((string[])value) )
TestItemColor(s, attrName, pi, lvi);
}
else
{
TestItemColor(value.ToString(), attrName, pi, lvi);
}
}
}
}
}
}
}
}