示例#1
0
        private XmlNode WriteConditionToXmlNode(ICondition condition)
        {
            string     conditionName    = condition.GetConditionDef().GetConditionName();
            XmlElement conditionElement = m_doc.CreateElement(conditionName);

            if (condition is AbstractCompositeCondition)
            {
                if (condition is AbstractMultipleCondition)
                {
                    AbstractMultipleCondition multipleCondition = condition as AbstractMultipleCondition;
                    foreach (ICondition subCondition in multipleCondition.ConditionList)
                    {
                        conditionElement.AppendChild(WriteConditionToXmlNode(subCondition));
                    }
                }
                else
                {
                    AbstractSingleCondition singleCondition = condition as AbstractSingleCondition;
                    conditionElement.AppendChild(
                        WriteConditionToXmlNode(singleCondition.ConditionList[0]));
                }
            }
            else
            {
                AbstractAtomicCondition atomicCondition = condition as AbstractAtomicCondition;
                conditionElement.SetAttribute(RuleFileConstants.Operator,
                                              atomicCondition.Operator.GetOperatorName());
                conditionElement.SetAttribute(RuleFileConstants.Value, atomicCondition.Value);
            }
            return(conditionElement);
        }
        public static TreeNode GetConditionTreeNode(ICondition condition)
        {
            TreeNode conditionNode = new TreeNode();

            if (condition is AbstractCompositeCondition)
            {
                AbstractCompositeCondition compositeCondition = condition as AbstractCompositeCondition;

                foreach (ICondition subCondition in compositeCondition.ConditionList)
                {
                    conditionNode.Nodes.Add(GetConditionTreeNode(subCondition));
                }

                // Append the "<Empty>" node.
                AbstractCompositeConditionDef compositeConditionDef =
                    condition.GetConditionDef() as AbstractCompositeConditionDef;
                if (conditionNode.Nodes.Count < compositeConditionDef.GetMaxSubconditionNumber())
                {
                    conditionNode.Nodes.Add(GetEmptyConditionTreeNode());
                }
            }
            conditionNode.Text = GetConditionNodeText(condition);
            conditionNode.Tag  = condition;
            SetRuleTreeNodeImage(conditionNode);
            return(conditionNode);
        }
示例#3
0
 private XmlNode WriteConditionToXmlNode(ICondition condition)
 {
     string conditionName = condition.GetConditionDef().GetConditionName();
     XmlElement conditionElement = m_doc.CreateElement(conditionName);
     if (condition is AbstractCompositeCondition)
     {
         if (condition is AbstractMultipleCondition)
         {
             var multipleCondition = condition as AbstractMultipleCondition;
             foreach (ICondition subCondition in multipleCondition.ConditionList)
             {
                 conditionElement.AppendChild(WriteConditionToXmlNode(subCondition));
             }
         }
         else
         {
             var singleCondition = condition as AbstractSingleCondition;
             conditionElement.AppendChild(
                 WriteConditionToXmlNode(singleCondition.ConditionList[0]));
         }
     }
     else
     {
         var atomicCondition = condition as AbstractAtomicCondition;
         conditionElement.SetAttribute(RuleFileConstants.Operator,
             atomicCondition.Operator.GetOperatorName());
         conditionElement.SetAttribute(RuleFileConstants.Value, atomicCondition.Value);
     }
     return conditionElement;
 }
示例#4
0
        public void InitBeforeShow(TreeNode modifiedTreeNode,
                                   ICategory fixedCategory, ICondition fixedCondition)
        {
            m_modifiedTreeNode = modifiedTreeNode;
            m_fixedCategory    = fixedCategory;
            m_fixedCondition   = fixedCondition;
            // Init conditionComboBox
            List <IConditionDef> conditionDefList =
                RuleEngine.GetConditionManager().GetPossibleConditionDefList(m_fixedCategory);

            conditionComboBox.Items.Clear();
            foreach (IConditionDef conditionDef in conditionDefList)
            {
                conditionComboBox.Items.Add(conditionDef.GetConditionName());
            }
            if (m_fixedCondition != null)
            {
                // Select the inital one.
                // And this line, will call conditionComboBox_SelectedIndexChanged synchronously.
                conditionComboBox.SelectedItem =
                    m_fixedCondition.GetConditionDef().GetConditionName();
                //ResizeControl();
                //UpdateOperatorComboBox();
                //UpdateValueComboBox();
                if (m_fixedCondition is AbstractAtomicCondition)
                {
                    AbstractAtomicCondition atomicCondition = m_fixedCondition as AbstractAtomicCondition;
                    operatorComboBox.SelectedItem = atomicCondition.Operator.GetOperatorName();
                    if (m_fixedCondition is NativeParameterIndexCondition)
                    {
                        parameterIndexNumericUpDown.Value = Int32.Parse(
                            atomicCondition.Value, CultureInfo.InvariantCulture);
                    }
                    else
                    {
                        valueComboBox.Text = atomicCondition.Value;
                    }
                }
            }
            else
            {
                SetControlVisibility();
            }
        }
 public void InitBeforeShow(TreeNode modifiedTreeNode, 
     ICategory fixedCategory, ICondition fixedCondition)
 {
     m_modifiedTreeNode = modifiedTreeNode;
     m_fixedCategory = fixedCategory;
     m_fixedCondition = fixedCondition;
     // Init conditionComboBox
     List<IConditionDef> conditionDefList =
         RuleEngine.GetConditionManager().GetPossibleConditionDefList(m_fixedCategory);
     conditionComboBox.Items.Clear();
     foreach (IConditionDef conditionDef in conditionDefList)
     {
         conditionComboBox.Items.Add(conditionDef.GetConditionName());
     }
     if (m_fixedCondition != null)
     {
         // Select the inital one.
         // And this line, will call conditionComboBox_SelectedIndexChanged synchronously.
         conditionComboBox.SelectedItem =
             m_fixedCondition.GetConditionDef().GetConditionName();
         //ResizeControl();
         //UpdateOperatorComboBox();
         //UpdateValueComboBox();
         if (m_fixedCondition is AbstractAtomicCondition)
         {
             var atomicCondition = (AbstractAtomicCondition) m_fixedCondition;
             operatorComboBox.SelectedItem = atomicCondition.Operator.GetOperatorName();
             if (m_fixedCondition is NativeParameterIndexCondition)
             {
                 parameterIndexNumericUpDown.Value = Int32.Parse(
                     atomicCondition.Value, CultureInfo.InvariantCulture);
             }
             else
             {
                 valueComboBox.Text = atomicCondition.Value;
             }
         }
     }
     else
     {
         SetControlVisibility();
     }
 }
示例#6
0
 private bool CheckCondition(ICondition condition)
 {
     if (condition is AbstractCompositeCondition)
     {
         var compositeCondition = (AbstractCompositeCondition) condition;
         List<ICondition> list = compositeCondition.ConditionList;
         if (list.Count == 0)
         {
             MessageBox.Show(Resource.FormatString("Wrn_EmptyCompositeCondition",
                                                   condition.GetConditionDef().GetConditionName()));
             return false;
         }
         return list.All(t => CheckCondition(t));
     }
     else
     {
         return true;
     }
 }
示例#7
0
 private bool CanConditionApplyToCategory(ICondition condition, ICategory category)
 {
     if (condition is AbstractAtomicCondition)
         return condition.GetConditionDef().CanApplyToCategory(category);
     else
     {
         // AbstractCompositeCondition
         var compositeCondition = condition as AbstractCompositeCondition;
         foreach (ICondition subCondition in compositeCondition.ConditionList)
         {
             if (!subCondition.GetConditionDef().CanApplyToCategory(category))
                 return false;
         }
         return condition.GetConditionDef().CanApplyToCategory(category);
     }
 }
        public static TreeNode GetConditionTreeNode(ICondition condition)
        {
            TreeNode conditionNode = new TreeNode();
            if (condition is AbstractCompositeCondition)
            {
                var compositeCondition = (AbstractCompositeCondition) condition;

                foreach (ICondition subCondition in compositeCondition.ConditionList)
                {
                    conditionNode.Nodes.Add(GetConditionTreeNode(subCondition));
                }

                // Append the "<Empty>" node.
                AbstractCompositeConditionDef compositeConditionDef =
                    (AbstractCompositeConditionDef) condition.GetConditionDef();
                if (conditionNode.Nodes.Count < compositeConditionDef.GetMaxSubconditionNumber())
                {
                    conditionNode.Nodes.Add(GetEmptyConditionTreeNode());
                }
            }
            conditionNode.Text = GetConditionNodeText(condition);
            conditionNode.Tag = condition;
            SetRuleTreeNodeImage(conditionNode);
            return conditionNode;
        }