private void addParserFromSequenceToolStripMenuItem_Click(object sender, EventArgs e) { ToolStripItem item = sender as ToolStripItem; if ((item != null) && (item.Tag is SequenceParserType)) { ParserType type = item.Tag as ParserType; type = new StreamParserType(GenerateName(String.Format("{0}_Parser", type.Name)), type); _document.AddParserType(type); treeViewTypes.SelectedNode = AddTreeNode(_parserNode, type, true); } }
private void removeToolStripMenuItem_Click(object sender, EventArgs e) { TreeNode selectedNode = treeViewTypes.SelectedNode; if (selectedNode != null) { ParserType type = selectedNode.Tag as ParserType; if (type != null) { if (MessageBox.Show(this, String.Format(CANAPE.Properties.Resources.ParserDocumentControl_RemoveType, type.Name), String.Format(CANAPE.Properties.Resources.ParserDocumentControl_RemoveTypeCaption, type.Name), MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { RemoveTreeNode(type); ParserType[] types = _document.Types.ToArray(); foreach (ParserType t in types) { if (t is SequenceParserType) { SequenceParserType seq = t as SequenceParserType; List <MemberEntry> removeList = new List <MemberEntry>(); foreach (MemberEntry entry in seq.Members) { if (entry.BaseType.Uuid == type.Uuid) { removeList.Add(entry); } } foreach (MemberEntry ent in removeList) { seq.RemoveMember(ent); } } else if (t is StreamParserType) { StreamParserType parser = t as StreamParserType; if (parser.BaseType.Uuid == type.Uuid) { RemoveTreeNode(parser); } } } } } } }