private void SignalListChanged(object sender, ListChangedEventArgs e)
        {
            // this hook is called AFTER midification of this.m_signals
            // here only create Command to keep Command trace uptodate

            if (GenerateCommandsForChanges)
            {
                switch (e.ListChangedType)
                {
                case ListChangedType.ItemAdded:
                {
                    AddSignal addCmd = new AddSignal(m_signals[e.NewIndex]);
                    // no executtion, only update trace
                    addCmd.Execute = false;
                    Commands.CommandExecuter.Instance.Execute(addCmd);
                    break;
                }

                case ListChangedType.ItemChanged:
                {
                    ModifiySignal modCmd = new ModifiySignal(m_signals[e.NewIndex]);
                    modCmd.CurrentSignalName = m_signalNamesPriorToModification[e.NewIndex];
                    // no executtion, only update trace
                    modCmd.Execute = false;
                    Commands.CommandExecuter.Instance.Execute(modCmd);
                    break;
                }

                case ListChangedType.ItemDeleted:
                {
                    DeleteSignal delCmd = new DeleteSignal();
                    delCmd.SignalName = m_signalNamesPriorToModification[e.NewIndex];
                    // no execution, only update trace
                    delCmd.Execute = false;
                    Commands.CommandExecuter.Instance.Execute(delCmd);

                    break;
                }

                default:
                {
                    break;
                }
                }
            }

            CopySignalList();
        }
        private void ProcessInput(InputType type)
        {
            switch (type)
            {
            case InputType.Clear:
                Clear();
                break;

            case InputType.Delete:
                DeleteSignal.Dispatch();
                break;

            case InputType.Load:
                LoadSignal.Dispatch();
                break;

            case InputType.Save:
                Save();
                break;
            }
        }