/// <summary> /// Individuates and remove the node corresponding to the deleted entity. /// </summary> /// <param name="args">The ServiceBusHelperEventArgs object containing the reference to the deleted entity.</param> void serviceBusHelper_OnDelete(ServiceBusHelperEventArgs args) { try { serviceBusTreeView.SuspendDrawing(); serviceBusTreeView.SuspendLayout(); panelMain.Controls.Clear(); panelMain.BackColor = SystemColors.Window; panelMain.HeaderText = Entity; serviceBusTreeView.SelectedNode = rootNode; // QueueDescription Entity if (args.EntityType == EntityType.Queue) { string queueName = null; if (args.EntityInstance is string) { queueName = args.EntityInstance as string; } else { if (args.EntityInstance is QueueDescription) { queueName = ((QueueDescription) args.EntityInstance).Path; } } var queueListNode = FindNode(QueueEntities, rootNode); if (!string.IsNullOrEmpty(queueName)) { DeleteNode(queueName, queueListNode); } else { GetEntities(EntityType.Queue); } serviceBusTreeView.SelectedNode = queueListNode; HandleNodeMouseClick(queueListNode); return; } // TopicDescription Entity if (args.EntityType == EntityType.Topic) { string topicName = null; if (args.EntityInstance is string) { topicName = args.EntityInstance as string; } else { if (args.EntityInstance is TopicDescription) { topicName = ((TopicDescription)args.EntityInstance).Path; } } var topicListNode = FindNode(TopicEntities, rootNode); if (!string.IsNullOrEmpty(topicName)) { DeleteNode(topicName, topicListNode); } else { GetEntities(EntityType.Topic); } serviceBusTreeView.SelectedNode = topicListNode; HandleNodeMouseClick(topicListNode); return; } // SubscriptionDescription Entity if (args.EntityType == EntityType.Subscription) { var topicListNode = FindNode(TopicEntities, rootNode); var subscription = args.EntityInstance as SubscriptionDescription; if (subscription != null && !string.IsNullOrEmpty(subscription.TopicPath)) { var topicNode = FindNode(subscription.TopicPath, topicListNode); if (topicNode == null) { GetEntities(EntityType.Topic); return; } if (topicNode.Nodes.ContainsKey(SubscriptionEntities)) { var subscriptionsNode = topicNode.Nodes[SubscriptionEntities]; if (subscriptionsNode.Nodes.ContainsKey(subscription.Name)) { subscriptionsNode.Nodes.RemoveByKey(subscription.Name); if (subscriptionsNode.Nodes.Count == 0) { topicNode.Nodes.Clear(); serviceBusTreeView.SelectedNode = topicNode; HandleNodeMouseClick(topicNode); } else { subscriptionsNode.Expand(); serviceBusTreeView.SelectedNode = subscriptionsNode; HandleNodeMouseClick(subscriptionsNode); } } else { GetEntities(EntityType.Topic); return; } } else { GetEntities(EntityType.Topic); return; } } else { GetEntities(EntityType.Topic); return; } serviceBusTreeView.SelectedNode = null; return; } // RuleDescription Entity if (args.EntityType == EntityType.Rule) { var topicListNode = FindNode(TopicEntities, rootNode); var wrapper = args.EntityInstance as RuleWrapper; if (wrapper != null && wrapper.RuleDescription != null && wrapper.SubscriptionDescription != null && !string.IsNullOrEmpty(wrapper.RuleDescription.Name) && !string.IsNullOrEmpty(wrapper.SubscriptionDescription.TopicPath)) { var topicNode = FindNode(wrapper.SubscriptionDescription.TopicPath, topicListNode); if (topicNode == null) { GetEntities(EntityType.Topic); return; } if (topicNode.Nodes.ContainsKey(SubscriptionEntities)) { var subscriptionsNode = topicNode.Nodes[SubscriptionEntities]; if (subscriptionsNode.Nodes.ContainsKey(wrapper.SubscriptionDescription.Name)) { var subscriptionNode = subscriptionsNode.Nodes[wrapper.SubscriptionDescription.Name]; if (subscriptionNode.Nodes.ContainsKey(RuleEntities)) { var rulesNode = subscriptionNode.Nodes[RuleEntities]; if (rulesNode.Nodes.ContainsKey(wrapper.RuleDescription.Name)) { rulesNode.Nodes.RemoveByKey(wrapper.RuleDescription.Name); if (rulesNode.Nodes.Count == 0) { subscriptionNode.Nodes.Clear(); serviceBusTreeView.SelectedNode = subscriptionNode; HandleNodeMouseClick(subscriptionsNode); } else { rulesNode.Expand(); serviceBusTreeView.SelectedNode = rulesNode; HandleNodeMouseClick(rulesNode); } } } else { GetEntities(EntityType.Topic); return; } } else { GetEntities(EntityType.Topic); return; } } else { GetEntities(EntityType.Topic); return; } } else { GetEntities(EntityType.Topic); return; } serviceBusTreeView.SelectedNode = null; } } catch (Exception ex) { HandleException(ex); } finally { serviceBusTreeView.ResumeDrawing(); serviceBusTreeView.ResumeLayout(); } }
/// <summary> /// Adds a node to the treeview for the newly created entity. /// </summary> /// <param name="args">The ServiceBusHelperEventArgs object containing the reference to the newly created entity.</param> void serviceBusHelper_OnCreate(ServiceBusHelperEventArgs args) { try { serviceBusTreeView.SuspendDrawing(); serviceBusTreeView.SuspendLayout(); // QueueDescription Entity if (args.EntityType == EntityType.Queue) { var queue = args.EntityInstance as QueueDescription; if (queue != null) { var queueListNode = FindNode(QueueEntities, rootNode); var node = CreateNode(queue.Path, queue, queueListNode, false); serviceBusTreeView.Sort(); panelMain.HeaderText = string.Format(ViewQueueFormat, queue.Path); if (!importing) { serviceBusTreeView.SelectedNode = node; HandleNodeMouseClick(serviceBusTreeView.SelectedNode); } else { queueListNode.Expand(); } } return; } // TopicDescription Entity if (args.EntityType == EntityType.Topic) { var topic = args.EntityInstance as TopicDescription; if (topic != null) { var topicListNode = FindNode(TopicEntities, rootNode); var node = CreateNode(topic.Path, topic, topicListNode, false); serviceBusTreeView.Sort(); panelMain.HeaderText = string.Format(ViewTopicFormat, topic.Path); if (!importing) { serviceBusTreeView.SelectedNode = node; HandleNodeMouseClick(serviceBusTreeView.SelectedNode); } else { topicListNode.Expand(); } } return; } // SubscriptionDescription Entity if (args.EntityType == EntityType.Subscription) { var wrapper = args.EntityInstance as SubscriptionWrapper; if (wrapper == null || wrapper.TopicDescription == null || wrapper.SubscriptionDescription == null) { return; } var topicListNode = FindNode(TopicEntities, rootNode); var topicNode = FindNode(wrapper.TopicDescription.Path, topicListNode); if (topicNode != null) { TreeNode subscriptionsNode; if (topicNode.Nodes.ContainsKey(SubscriptionEntities)) { subscriptionsNode = topicNode.Nodes[SubscriptionEntities]; } else { subscriptionsNode = topicNode.Nodes.Add(SubscriptionEntities, SubscriptionEntities, SubscriptionListIconIndex, SubscriptionListIconIndex); subscriptionsNode.ContextMenuStrip = subscriptionsContextMenuStrip; subscriptionsNode.Tag = new SubscriptionWrapper(null, wrapper.TopicDescription); } var subscriptionNode = subscriptionsNode.Nodes.Add(wrapper.SubscriptionDescription.Name, wrapper.SubscriptionDescription.Name, SubscriptionIconIndex, SubscriptionIconIndex); subscriptionNode.ContextMenuStrip = subscriptionContextMenuStrip; subscriptionNode.Tag = new SubscriptionWrapper(wrapper.SubscriptionDescription, wrapper.TopicDescription); subscriptionsNode.Expand(); panelMain.HeaderText = string.Format(ViewSubscriptionFormat, wrapper.SubscriptionDescription.Name); if (!importing) { serviceBusTreeView.SelectedNode = subscriptionsNode.Nodes[wrapper.SubscriptionDescription.Name]; HandleNodeMouseClick(serviceBusTreeView.SelectedNode); } var rules = serviceBusHelper.GetRules(wrapper.SubscriptionDescription); if (rules != null && rules.Count() > 0) { subscriptionNode.Nodes.Clear(); var rulesNode = subscriptionNode.Nodes.Add(RuleEntities, RuleEntities, RuleListIconIndex, RuleListIconIndex); rulesNode.ContextMenuStrip = rulesContextMenuStrip; rulesNode.Tag = new RuleWrapper(null, wrapper.SubscriptionDescription); foreach (var rule in rules) { var ruleNode = rulesNode.Nodes.Add(rule.Name, rule.Name, RuleIconIndex, RuleIconIndex); ruleNode.ContextMenuStrip = ruleContextMenuStrip; ruleNode.Tag = new RuleWrapper(rule, wrapper.SubscriptionDescription); } } } return; } // RuleDescription Entity if (args.EntityType == EntityType.Rule) { var wrapper = args.EntityInstance as RuleWrapper; if (wrapper == null || wrapper.SubscriptionDescription == null || wrapper.RuleDescription == null) { return; } var topicListNode = FindNode(TopicEntities, rootNode); var topicNode = FindNode(wrapper.SubscriptionDescription.TopicPath, topicListNode); if (topicNode != null) { if (topicNode.Nodes.ContainsKey(SubscriptionEntities)) { var subscriptionsNode = topicNode.Nodes[SubscriptionEntities]; if (subscriptionsNode.Nodes.ContainsKey(wrapper.SubscriptionDescription.Name)) { var subscriptionNode = subscriptionsNode.Nodes[wrapper.SubscriptionDescription.Name]; TreeNode rulesNode; if (subscriptionNode.Nodes.ContainsKey(RuleEntities)) { rulesNode = subscriptionNode.Nodes[RuleEntities]; } else { rulesNode = subscriptionNode.Nodes.Add(RuleEntities, RuleEntities, RuleListIconIndex, RuleListIconIndex); rulesNode.ContextMenuStrip = rulesContextMenuStrip; rulesNode.Tag = new RuleWrapper(null, wrapper.SubscriptionDescription); } TreeNode ruleNode = rulesNode.Nodes.Add(wrapper.RuleDescription.Name, wrapper.RuleDescription.Name, RuleIconIndex, RuleIconIndex); ruleNode.ContextMenuStrip = ruleContextMenuStrip; ruleNode.Tag = wrapper; rulesNode.Expand(); panelMain.HeaderText = string.Format(ViewRuleFormat, wrapper.RuleDescription.Name); if (!importing) { serviceBusTreeView.SelectedNode = rulesNode.Nodes[wrapper.RuleDescription.Name]; } } } } } } catch (Exception ex) { HandleException(ex); } finally { serviceBusTreeView.ResumeDrawing(); serviceBusTreeView.ResumeLayout(); } }