private void recursiveCreateGvl(object dl, XElement el, List <string> nst) { Data nd = new Data(); switch (el.Attribute("Type").Value) { case "structure": nd = new Data(); DataSequence sd = new DataSequence(); sd.initValue(); nd.selectStructure(sd); if (dl is List <Data> ) { (dl as List <Data>).Add(nd); } else if (dl is Data) { if ((dl as Data).isStructureSelected()) { (dl as Data).Structure.Value.Add(nd); } else { Logger.getLogger().LogError("Error: Invalid parent data type !"); } } else { Logger.getLogger().LogError("Error: Invalid parent data type !"); } break; case "boolean": nd = new Data(); nd.selectBoolean(el.Attribute("Value").Value == "True" ? true : false); //nd.ValueChanged += new EventHandler(_ValueChanged); if (el.Attribute("Desc") != null) { nd.Description = el.Attribute("Desc").Value; } if (dl is List <Data> ) { (dl as List <Data>).Add(nd); } else if (dl is Data) { if ((dl as Data).isStructureSelected()) { (dl as Data).Structure.Value.Add(nd); } else { Logger.getLogger().LogError("Error: Invalid parent data type !"); } } else { Logger.getLogger().LogError("Error: Invalid parent data type !"); } break; case "integer": nd = new Data(); nd.selectInteger(Convert.ToInt32(el.Attribute("Value").Value)); //nd.ValueChanged += new EventHandler(_ValueChanged); if (el.Attribute("Desc") != null) { nd.Description = el.Attribute("Desc").Value; } if (dl is List <Data> ) { (dl as List <Data>).Add(nd); } else if (dl is Data) { if ((dl as Data).isStructureSelected()) { (dl as Data).Structure.Value.Add(nd); } else { Logger.getLogger().LogError("Error: Invalid parent data type !"); } } else { Logger.getLogger().LogError("Error: Invalid parent data type !"); } break; /* * case "float": * nd = new Data(); * nd.selectFloatingpoint(new FloatingPoint(new byte[] { 0 })); * nd.ValueChanged += new EventHandler(_ValueChanged); * if (dl is List<Data>) * (dl as List<Data>).Add(nd); * else if (dl is Data) * { * if ((dl as Data).isStructureSelected()) * (dl as Data).Structure.Value.Add(nd); * else * MessageBox.Show("Error: Invalid parent data type !"); * } * else * MessageBox.Show("Error: Invalid parent data type !"); * break; */ case "bit_string": nd = new Data(); StringToDataConverter Converter = new StringToDataConverter(); BitString bs = Converter.ConvertToBitstring(el.Attribute("Value").Value); if (bs != null) { nd.selectBitstring(bs); } else { nd.selectBitstring(new BitString(new byte[] { 0 })); nd.Bitstring.TrailBitsCnt = 8; } if (el.Attribute("Desc") != null) { nd.Description = el.Attribute("Desc").Value; } //nd.ValueChanged += new EventHandler(_ValueChanged); if (dl is List <Data> ) { (dl as List <Data>).Add(nd); } else if (dl is Data) { if ((dl as Data).isStructureSelected()) { (dl as Data).Structure.Value.Add(nd); } else { Logger.getLogger().LogError("Error: Invalid parent data type !"); } } else { Logger.getLogger().LogError("Error: Invalid parent data type !"); } break; default: if (!nst.Contains(el.Attribute("Type").Value)) { nst.Add(el.Attribute("Type").Value); } break; } if (el.HasElements) { foreach (XElement ndcn in el.Elements()) { recursiveCreateGvl(nd, ndcn, nst); } } }
private void recursiveCreateDataList(object dl, XElement el) { Data nd = new Data(); switch (el.Attribute("Type").Value) { case "structure": nd = new Data(); DataSequence sd = new DataSequence(); sd.initValue(); nd.selectStructure(sd); if (dl is List <Data> ) { (dl as List <Data>).Add(nd); } else if (dl is Data) { if ((dl as Data).isStructureSelected()) { (dl as Data).Structure.Value.Add(nd); } else { Logger.getLogger().LogError("Error: Invalid parent data type !"); } } else { Logger.getLogger().LogError("Error: Invalid parent data type !"); } break; case "boolean": nd = new Data(); nd.selectBoolean(el.Attribute("Value").Value == "True" ? true : false); if (el.Attribute("Desc") != null) { nd.Description = el.Attribute("Desc").Value; } if (dl is List <Data> ) { (dl as List <Data>).Add(nd); } else if (dl is Data) { if ((dl as Data).isStructureSelected()) { (dl as Data).Structure.Value.Add(nd); } else { Logger.getLogger().LogError("Error: Invalid parent data type !"); } } else { Logger.getLogger().LogError("Error: Invalid parent data type !"); } break; case "integer": nd = new Data(); nd.selectInteger(Convert.ToInt32(el.Attribute("Value").Value)); if (el.Attribute("Desc") != null) { nd.Description = el.Attribute("Desc").Value; } if (dl is List <Data> ) { (dl as List <Data>).Add(nd); } else if (dl is Data) { if ((dl as Data).isStructureSelected()) { (dl as Data).Structure.Value.Add(nd); } else { Logger.getLogger().LogError("Error: Invalid parent data type !"); } } else { Logger.getLogger().LogError("Error: Invalid parent data type !"); } break; case "bit_string": nd = new Data(); StringToDataConverter Converter = new StringToDataConverter(); BitString bs = Converter.ConvertToBitstring(el.Attribute("Value").Value); if (el.Attribute("Desc") != null) { nd.Description = el.Attribute("Desc").Value; } if (bs != null) { nd.selectBitstring(bs); } else { nd.selectBitstring(new BitString(new byte[] { 0 })); nd.Bitstring.TrailBitsCnt = 8; } if (dl is List <Data> ) { (dl as List <Data>).Add(nd); } else if (dl is Data) { if ((dl as Data).isStructureSelected()) { (dl as Data).Structure.Value.Add(nd); } else { Logger.getLogger().LogError("Error: Invalid parent data type !"); } } else { Logger.getLogger().LogError("Error: Invalid parent data type !"); } break; default: break; } if (el.HasElements) { foreach (XElement ndcn in el.Elements()) { recursiveCreateDataList(nd, ndcn); } } }
void OnAddDataClick(object sender, EventArgs e) { switch ((sender as ToolStripItem).Text) { case "Add Structure": Data nd = new Data(); DataSequence sd = new DataSequence(); sd.initValue(); nd.selectStructure(sd); if ((sender as ToolStripItem).Tag is List <Data> ) { ((sender as ToolStripItem).Tag as List <Data>).Add(nd); } else if (((sender as ToolStripItem).Tag is NodeGData)) { if ((((sender as ToolStripItem).Tag as NodeGData).Tag is Data) && ((((sender as ToolStripItem).Tag as NodeGData).Tag as Data).isStructureSelected())) { (((sender as ToolStripItem).Tag as NodeGData).Tag as Data).Structure.Value.Add(nd); } else { MessageBox.Show("Error: Invalid parent data type !"); } } else { MessageBox.Show("Error: Invalid parent data type !"); } break; case "Add Boolean": nd = new Data(); nd.selectBoolean(false); nd.ValueChanged += new EventHandler(_ValueChanged); if ((sender as ToolStripItem).Tag is List <Data> ) { ((sender as ToolStripItem).Tag as List <Data>).Add(nd); } else if (((sender as ToolStripItem).Tag is NodeGData)) { if ((((sender as ToolStripItem).Tag as NodeGData).Tag is Data) && ((((sender as ToolStripItem).Tag as NodeGData).Tag as Data).isStructureSelected())) { (((sender as ToolStripItem).Tag as NodeGData).Tag as Data).Structure.Value.Add(nd); } else { MessageBox.Show("Error: Invalid parent data type !"); } } else { MessageBox.Show("Error: Invalid parent data type !"); } break; case "Add Integer": nd = new Data(); nd.selectInteger(0); nd.ValueChanged += new EventHandler(_ValueChanged); if ((sender as ToolStripItem).Tag is List <Data> ) { ((sender as ToolStripItem).Tag as List <Data>).Add(nd); } else if (((sender as ToolStripItem).Tag is NodeGData)) { if ((((sender as ToolStripItem).Tag as NodeGData).Tag is Data) && ((((sender as ToolStripItem).Tag as NodeGData).Tag as Data).isStructureSelected())) { (((sender as ToolStripItem).Tag as NodeGData).Tag as Data).Structure.Value.Add(nd); } else { MessageBox.Show("Error: Invalid parent data type !"); } } else { MessageBox.Show("Error: Invalid parent data type !"); } break; case "Add Float": nd = new Data(); nd.selectFloatingpoint(new FloatingPoint(new byte[] { 0 })); nd.ValueChanged += new EventHandler(_ValueChanged); if ((sender as ToolStripItem).Tag is List <Data> ) { ((sender as ToolStripItem).Tag as List <Data>).Add(nd); } else if (((sender as ToolStripItem).Tag is NodeGData)) { if ((((sender as ToolStripItem).Tag as NodeGData).Tag is Data) && ((((sender as ToolStripItem).Tag as NodeGData).Tag as Data).isStructureSelected())) { (((sender as ToolStripItem).Tag as NodeGData).Tag as Data).Structure.Value.Add(nd); } else { MessageBox.Show("Error: Invalid parent data type !"); } } else { MessageBox.Show("Error: Invalid parent data type !"); } break; case "Add Bitstring": nd = new Data(); nd.selectBitstring(new BitString()); nd.ValueChanged += new EventHandler(_ValueChanged); if ((sender as ToolStripItem).Tag is List <Data> ) { ((sender as ToolStripItem).Tag as List <Data>).Add(nd); } else if (((sender as ToolStripItem).Tag is NodeGData)) { if ((((sender as ToolStripItem).Tag as NodeGData).Tag is Data) && ((((sender as ToolStripItem).Tag as NodeGData).Tag as Data).isStructureSelected())) { (((sender as ToolStripItem).Tag as NodeGData).Tag as Data).Structure.Value.Add(nd); } else { MessageBox.Show("Error: Invalid parent data type !"); } } else { MessageBox.Show("Error: Invalid parent data type !"); } break; case "Delete": if (((sender as ToolStripItem).Tag is NodeGData)) { listViewGoose_Clear(); if ((((sender as ToolStripItem).Tag as NodeGData).Tag is Data)) { (((sender as ToolStripItem).Tag as NodeGData).Tag as Data).ValueChanged -= new EventHandler(_ValueChanged); _dataList.Remove((((sender as ToolStripItem).Tag as NodeGData).Tag as Data)); } } break; default: break; } updateTree(); }