internal void EditItem()
        {
            if (tlsDecoders.Selection.Count <= 0)
            {
                MessageBox.Show("No items selected.", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            TreeListNode node = tlsDecoders.Selection[0];

            if (node == null)
            {
                return;
            }

            if (node.Tag is AccessoryDecoder)
            {
                AccessoryDecoder decoder = node.Tag as AccessoryDecoder;
                if (decoder == null)
                {
                    return;
                }

                AccessoryDecoderEditorView form = new AccessoryDecoderEditorView(decoder);
                if (form.ShowDialog(this) == DialogResult.OK)
                {
                    this.RefreshTreeList();
                }
            }
            else if (node.Tag is FeedbackEncoder)
            {
                FeedbackEncoder encoder = node.Tag as FeedbackEncoder;
                if (encoder == null)
                {
                    return;
                }

                FeedbackEncoderEditorView form = new FeedbackEncoderEditorView(encoder);
                if (form.ShowDialog(this) == DialogResult.OK)
                {
                    this.RefreshTreeList();
                }
            }
            else if (node.Tag is Module)
            {
                Module module = node.Tag as Module;
                if (module == null)
                {
                    return;
                }

                ModuleEditorView form = new ModuleEditorView(module);
                if (form.ShowDialog(this) == DialogResult.OK)
                {
                    this.RefreshTreeList();
                }
            }
        }
        private void AddModule()
        {
            FeedbackEncoderEditorView form = new FeedbackEncoderEditorView();

            if (form.ShowDialog(this) == DialogResult.OK)
            {
                this.Refresh();
            }
        }
        internal void FeedbackEncoderAdd()
        {
            FeedbackEncoderWizardView wizard = new FeedbackEncoderWizardView();

            if (wizard.ShowDialog(this) == DialogResult.OK)
            {
                wizard.Encoder.Module = (tlsDecoders.Selection.Count > 0 ? tlsDecoders.Selection[0].Tag as Module : null);

                FeedbackEncoderEditorView editor = new FeedbackEncoderEditorView(wizard.Encoder);
                if (editor.ShowDialog(this) == DialogResult.OK)
                {
                    this.RefreshTreeList();
                }
            }
        }
        private void EditModule()
        {
            if (grdModuleView.SelectedRowsCount <= 0)
            {
                MessageBox.Show("You must select the module you want to edit.", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            if (!(grdModuleView.GetRow(grdModuleView.GetSelectedRows()[0]) is FeedbackDecoder device))
            {
                return;
            }

            FeedbackEncoderEditorView form = new FeedbackEncoderEditorView(device);

            if (form.ShowDialog(this) == DialogResult.OK)
            {
                this.Refresh();
            }
        }