/// <summary>
        /// Event handler when the scale within an editor was changed
        /// </summary>
        void editor_OnStepChanged(object sender)
        {
            SignalEditor editor = sender as SignalEditor;

            if (editor != null && m_EditorControls.Contains(editor))
            {
                ScaleStep = editor.StepSize;
            }
        }
        /// <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);
                }
            }
        }
        /// <summary>
        /// Creates a new editor control
        /// </summary>
        /// <returns>created control</returns>
        private SignalEditor CreateEditorControl()
        {
            int location = 0;

            if (m_EditorControls.Count > 0)
            {
                SignalEditor last = m_EditorControls.Last();
                location = last.Top + last.Height;
            }
            SignalEditor editor = new SignalEditor();

            editor.Parent         = panel;
            editor.BackColor      = BackColor;
            editor.GridColor      = Color.FromArgb(64, 64, 64);
            editor.Font           = new Font(editor.Font, FontStyle.Bold);
            editor.StepSize       = m_ScaleStep;
            editor.Top            = location;
            editor.Width          = panel.Width;
            editor.OnStepChanged += new DigitalClasses.Events.NotifyEvent(editor_OnStepChanged);
            return(editor);
        }