/// <summary>
 /// Displays a popup dialog box for users to add a new rule
 /// </summary>
 /// <param name="rule"></param>
 /// <param name="partition"></param>
 public void OnAddRule(ServerRule rule, ServerPartition partition)
 {
     AddEditDataRuleControl.Mode       = AddEditDataRuleDialogMode.New;
     AddEditDataRuleControl.ServerRule = null;
     AddEditDataRuleControl.Partition  = partition;
     AddEditDataRuleControl.Show();
 }
 /// <summary>
 /// Displays a popup dialog box for users to edit a rule
 /// </summary>
 /// <param name="rule"></param>
 /// <param name="partition"></param>
 public void OnEditRule(ServerRule rule, ServerPartition partition)
 {
     AddEditDataRuleControl.Mode       = AddEditDataRuleDialogMode.Edit;
     AddEditDataRuleControl.ServerRule = rule;
     AddEditDataRuleControl.Partition  = partition;
     AddEditDataRuleControl.Show();
 }
        /// <summary>
        /// Displays a popup dialog box for users to edit a rule
        /// </summary>
        /// <param name="rule"></param>
        /// <param name="partition"></param>
        public void OnCopyRule(ServerRule rule, ServerPartition partition)
        {
            var copiedRule = new ServerRule(rule.RuleName + " (Copy)", rule.ServerPartitionKey, rule.ServerRuleTypeEnum, rule.ServerRuleApplyTimeEnum, rule.Enabled, rule.DefaultRule, rule.ExemptRule, (XmlDocument)rule.RuleXml.CloneNode(true));

            // Store a dummy entity key
            copiedRule.SetKey(new ServerEntityKey("ServerRule", Guid.NewGuid()));

            AddEditDataRuleControl.Mode       = AddEditDataRuleDialogMode.Copy;
            AddEditDataRuleControl.ServerRule = copiedRule;
            AddEditDataRuleControl.Partition  = partition;
            AddEditDataRuleControl.Show();
        }