private void AddButton_Click(object sender, EventArgs e)
        {
            if (this.data != null)
            {
                switch (this.typeComboBox.SelectedIndex)
                {
                case 0:
                    MaiRPanel1View panel1View = new MaiRPanel1View(this);
                    panel1View.ValueChanged += new MaiRControlValue.ValueChangedHandler(View_ValueChanged);
                    this.data.PanelItems.Add((IMaiRPanel)panel1View);
                    break;

                case 1:
                    MaiRPanel2View panel2View = new MaiRPanel2View(this);
                    panel2View.ValueChanged += new MaiRControlValue.ValueChangedHandler(View_ValueChanged);
                    this.data.PanelItems.Add((IMaiRPanel)panel2View);
                    break;

                case 2:
                    MaiRPanel3View panel3View = new MaiRPanel3View(this);
                    panel3View.ValueChanged += new MaiRControlValue.ValueChangedHandler(View_ValueChanged);
                    this.data.PanelItems.Add((IMaiRPanel)panel3View);
                    break;

                case 3:
                    MaiRPanel4View panel4View = new MaiRPanel4View(this);
                    panel4View.ValueChanged += new MaiRControlValue.ValueChangedHandler(View_ValueChanged);
                    this.data.PanelItems.Add((IMaiRPanel)panel4View);
                    break;
                }
                ShowMaiRPanel(this.data.PanelItems.Count - 1);
                this.changed = true;
                UpdateFormTitle();
            }
        }
        public MaiRimoconData ConvertXmlToData(MainForm mainForm, MaiRControlValue.ValueChangedHandler handler)
        {
            MaiRimoconData data = new MaiRimoconData();

            if (this.Valid == true)
            {
                XmlNode node = doc.SelectSingleNode("/rimokoninfo/title");
                if (node != null)
                {
                    data.Title = node.InnerText;
                }

                node = doc.SelectSingleNode("/rimokoninfo/description");
                if (node != null)
                {
                    data.Description = node.InnerText;
                }

                XmlNodeList panelNodeList = doc.SelectNodes("/rimokoninfo/panelinfo");
                if (panelNodeList != null)
                {
                    List <IMaiRPanel> panelList = new List <IMaiRPanel>();
                    for (int i = 0; i < panelNodeList.Count; i++)
                    {
                        try
                        {
                            XmlNodeList        buttonNodeList = panelNodeList.Item(i).SelectNodes("buttoninfo");
                            List <IMaiRButton> buttonList     = new List <IMaiRButton>();
                            if (buttonNodeList != null)
                            {
                                for (int j = 0; j < buttonNodeList.Count; j++)
                                {
                                    int            format    = IRFrame.FORMAT_DENKYO;
                                    List <IRFrame> frameList = new List <IRFrame>();
                                    try
                                    {
                                        XmlNodeList frameNodeList = buttonNodeList.Item(j).SelectNodes("irinfo");
                                        if (frameNodeList != null)
                                        {
                                            for (int k = 0; k < frameNodeList.Count; k++)
                                            {
                                                node = frameNodeList.Item(k).SelectSingleNode("format");
                                                if (k == 0)
                                                {
                                                    format = Convert.ToInt32(node.InnerText);
                                                }
                                                int format2 = Convert.ToInt32(node.InnerText);
                                                node = frameNodeList.Item(k).SelectSingleNode("carrierhigh");
                                                int carrierHigh = Convert.ToInt32(node.InnerText);

                                                node = frameNodeList.Item(k).SelectSingleNode("carrierlow");
                                                int carrierLow = Convert.ToInt32(node.InnerText);

                                                node = frameNodeList.Item(k).SelectSingleNode("leaderhigh");
                                                int leaderHigh = Convert.ToInt32(node.InnerText);

                                                node = frameNodeList.Item(k).SelectSingleNode("leaderlow");
                                                int leaderLow = Convert.ToInt32(node.InnerText);

                                                node = frameNodeList.Item(k).SelectSingleNode("pulse0modulation");
                                                int pulse0Modulation = Convert.ToInt32(node.InnerText);

                                                node = frameNodeList.Item(k).SelectSingleNode("pulse0high");
                                                int pulse0High = Convert.ToInt32(node.InnerText);

                                                node = frameNodeList.Item(k).SelectSingleNode("pulse0low");
                                                int pulse0Low = Convert.ToInt32(node.InnerText);

                                                node = frameNodeList.Item(k).SelectSingleNode("pulse1modulation");
                                                int pulse1Modulation = Convert.ToInt32(node.InnerText);

                                                node = frameNodeList.Item(k).SelectSingleNode("pulse1high");
                                                int pulse1High = Convert.ToInt32(node.InnerText);

                                                node = frameNodeList.Item(k).SelectSingleNode("pulse1low");
                                                int pulse1Low = Convert.ToInt32(node.InnerText);

                                                node = frameNodeList.Item(k).SelectSingleNode("stophigh");
                                                int stopHigh = Convert.ToInt32(node.InnerText);

                                                node = frameNodeList.Item(k).SelectSingleNode("stoplow");
                                                int stopLow = Convert.ToInt32(node.InnerText);

                                                node = frameNodeList.Item(k).SelectSingleNode("frameinterval");
                                                int frameInterval = Convert.ToInt32(node.InnerText);

                                                node = frameNodeList.Item(k).SelectSingleNode("repeathigh");
                                                int repeatHigh = Convert.ToInt32(node.InnerText);

                                                node = frameNodeList.Item(k).SelectSingleNode("repeatlow");
                                                int repeatLow = Convert.ToInt32(node.InnerText);

                                                node = frameNodeList.Item(k).SelectSingleNode("data");
                                                List <byte> dataList = new List <byte>();
                                                for (int l = 0; l < node.InnerText.Length; l = l + 2)
                                                {
                                                    byte b = Convert.ToByte(node.InnerText.Substring(l, 2), 16);
                                                    dataList.Add(b);
                                                }

                                                node = frameNodeList.Item(k).SelectSingleNode("len");
                                                int len = Convert.ToInt32(node.InnerText);

                                                if (dataList.Count > 0 && len > 0)
                                                {
                                                    IRFrameParam param = new IRFrameParam(carrierHigh, carrierLow,
                                                                                          leaderHigh, leaderLow,
                                                                                          pulse0Modulation, pulse0High, pulse0Low,
                                                                                          pulse1Modulation, pulse1High, pulse1Low,
                                                                                          stopHigh, stopLow,
                                                                                          frameInterval,
                                                                                          repeatHigh, repeatLow);
                                                    IRFrameValue value = new IRFrameValue();
                                                    value.ValueList   = dataList;
                                                    value.ValueLength = len;
                                                    IRFrame frame = new IRFrame(format2, param, value);
                                                    frameList.Add(frame);
                                                }
                                            }
                                        }
                                    }
                                    catch
                                    {
                                    }
                                    node = buttonNodeList.Item(j).SelectSingleNode("type");
                                    int buttontype = Convert.ToInt32(node.InnerText);

                                    node = buttonNodeList.Item(j).SelectSingleNode("upperlabel");
                                    String upperlabel = node.InnerText;

                                    node = buttonNodeList.Item(j).SelectSingleNode("innerlabel");
                                    String innerlabel = node.InnerText;

                                    node = buttonNodeList.Item(j).SelectSingleNode("color");
                                    int color = Convert.ToInt32(node.InnerText);

                                    node = buttonNodeList.Item(j).SelectSingleNode("longpush");
                                    bool longpush = Convert.ToBoolean(node.InnerText);

                                    node = buttonNodeList.Item(j).SelectSingleNode("disable");
                                    bool disable = Convert.ToBoolean(node.InnerText);

                                    MaiRButtonView buttonView = new MaiRButtonView();
                                    switch (buttontype)
                                    {
                                    case (int)MaiRControlValue.ButtonType.Type1:
                                        buttonView.Type = MaiRControlValue.ButtonType.Type1;
                                        break;

                                    case (int)MaiRControlValue.ButtonType.Type2:
                                        buttonView.Type = MaiRControlValue.ButtonType.Type2;
                                        break;

                                    case (int)MaiRControlValue.ButtonType.Type3:
                                        buttonView.Type = MaiRControlValue.ButtonType.Type3;
                                        break;
                                    }
                                    buttonView.UpperLabel = upperlabel;
                                    buttonView.InnerLabel = innerlabel;
                                    switch (color)
                                    {
                                    case (int)MaiRControlValue.ButtonColor.Default:
                                        buttonView.Color = MaiRControlValue.ButtonColor.Default;
                                        break;

                                    case (int)MaiRControlValue.ButtonColor.Blue:
                                        buttonView.Color = MaiRControlValue.ButtonColor.Blue;
                                        break;

                                    case (int)MaiRControlValue.ButtonColor.Red:
                                        buttonView.Color = MaiRControlValue.ButtonColor.Red;
                                        break;

                                    case (int)MaiRControlValue.ButtonColor.Green:
                                        buttonView.Color = MaiRControlValue.ButtonColor.Green;
                                        break;

                                    case (int)MaiRControlValue.ButtonColor.Yellow:
                                        buttonView.Color = MaiRControlValue.ButtonColor.Yellow;
                                        break;
                                    }
                                    buttonView.LongPush = longpush;
                                    buttonView.Disable  = disable;
                                    buttonView.Frames   = frameList;

                                    buttonList.Add(buttonView);
                                }
                            }
                            node = panelNodeList.Item(i).SelectSingleNode("title");
                            String title = node.InnerText;
                            node = panelNodeList.Item(i).SelectSingleNode("type");
                            int paneltype = Convert.ToInt32(node.InnerText);
                            switch (paneltype)
                            {
                            case (int)MaiRControlValue.PanelType.Type1:
                                MaiRPanel1View panel1view = new MaiRPanel1View(mainForm);
                                panel1view.Title         = title;
                                panel1view.ButtonItems   = buttonList;
                                panel1view.ValueChanged += handler;
                                panelList.Add(panel1view);
                                break;

                            case (int)MaiRControlValue.PanelType.Type2:
                                MaiRPanel2View panel2view = new MaiRPanel2View(mainForm);
                                panel2view.Title         = title;
                                panel2view.ButtonItems   = buttonList;
                                panel2view.ValueChanged += handler;
                                panelList.Add(panel2view);
                                break;

                            case (int)MaiRControlValue.PanelType.Type3:
                                MaiRPanel3View panel3view = new MaiRPanel3View(mainForm);
                                panel3view.Title         = title;
                                panel3view.ButtonItems   = buttonList;
                                panel3view.ValueChanged += handler;
                                panelList.Add(panel3view);
                                break;

                            case (int)MaiRControlValue.PanelType.Type4:
                                MaiRPanel4View panel4view = new MaiRPanel4View(mainForm);
                                panel4view.Title         = title;
                                panel4view.ButtonItems   = buttonList;
                                panel4view.ValueChanged += handler;
                                panelList.Add(panel4view);
                                break;
                            }
                        }
                        catch
                        {
                        }
                    }
                    data.PanelItems = panelList;
                }
            }
            return(data);
        }