ATMLCommonLibrary.controls.signal.SignalModelLibraryForm.lvModel_SelectedIndexChanged C# (CSharp) Method

lvModel_SelectedIndexChanged() private method

private lvModel_SelectedIndexChanged ( object sender, EventArgs e ) : void
sender object
e EventArgs
return void
        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);
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }