Ejemplo n.º 1
0
        /// <summary>
        /// Applies changes in the List to be correctly represented by editors
        /// </summary>
        private void ApplyListToControls()
        {
            int count = 0;

            if (m_SignalList != null)
            {
                count = m_SignalList.Count;
            }
            if (count < m_EditorControls.Count)
            {
                //remove controls
                for (int i = m_EditorControls.Count - 1; i >= count; i--)
                {
                    SignalEditor editor = m_EditorControls[i];
                    editor.OnStepChanged          -= editor_OnStepChanged;
                    editor.Signal.OnSignalChanged -= SignalChangedEventHandler;
                    m_EditorControls.RemoveAt(i);
                    editor.Hide();
                    editor.Dispose();
                }
            }
            if (m_EditorControls.Count < count)
            {
                //add controls
                for (int i = m_EditorControls.Count; i < count; i++)
                {
                    SignalEditor editor = CreateEditorControl();
                    editor.Signal = m_SignalList[i];
                    editor.Signal.OnSignalChanged += new SignalChanged(SignalChangedEventHandler);
                    m_EditorControls.Add(editor);
                }
                m_IgnoreEvent = true;
                m_SignalList.ForceConsistency();
                m_IgnoreEvent = false;
            }
            for (int i = 0; i < m_EditorControls.Count; i++)
            {
                if (!m_EditorControls[i].Signal.Equals(m_SignalList[i]))
                {
                    m_EditorControls[i].Signal.OnSignalChanged -= SignalChangedEventHandler;
                    m_EditorControls[i].Signal = m_SignalList[i];
                    m_EditorControls[i].Signal.OnSignalChanged += new SignalChanged(SignalChangedEventHandler);
                }
            }
        }