void iContextMenu_Opening(object sender, CancelEventArgs e) { // Populate the context menu appropriate to whatever was // clicked on, or cancel it if the node doesn't have any // actions. iContextMenu.Items.Clear(); e.Cancel = false; object nodeTag = iDeviceTreeView.SelectedNode.Tag; ZappSpy.UpnpServiceInfo serviceInfo = nodeTag as ZappSpy.UpnpServiceInfo; if (serviceInfo != null) { iContextMenu.Items.Add( new ToolStripMenuItem( "Show Service XML", null, (aSender, aE) => { var form = new ShowXmlForm(); form.XmlContent = serviceInfo.DescriptionXml; form.Text = serviceInfo.ServiceId + " - Service XML"; form.Show(); })); return; } ZappSpy.UpnpDeviceInfo deviceInfo = nodeTag as ZappSpy.UpnpDeviceInfo; if (deviceInfo != null) { iContextMenu.Items.Add( new ToolStripMenuItem( "Show Device XML", null, (aSender, aE) => { var form = new ShowXmlForm(); form.XmlContent = deviceInfo.DeviceXml; form.Text = deviceInfo.FriendlyName + " - Device XML"; form.Show(); })); return; } e.Cancel = true; return; }
private TreeNode ServiceInfoToTreeNode(ZappSpy.UpnpServiceInfo aServiceInfo) { return(new TreeNode( aServiceInfo.ServiceId, ( from action in aServiceInfo.Description.Actions orderby action.Name select ActionInfoToTreeNode(action) ).Concat( new[] { new TreeNode( "State variables", ( from variable in aServiceInfo.Description.StateVariables orderby variable.Name select StateVariableInfoToTreeNode(variable) ).ToArray()) } ).ToArray()) { Tag = aServiceInfo, ContextMenuStrip = ContextMenu }); }