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);
        }
 public static string GetConditionNodeText(ICondition condition)
 {
     if (condition is AbstractCompositeCondition)
     {
         AbstractCompositeCondition compositeCondition = condition as AbstractCompositeCondition;
         return(compositeCondition.GetConditionDef().GetConditionName());
     }
     else if (condition is AbstractAtomicCondition)
     {
         AbstractAtomicCondition singleCondition = condition as AbstractAtomicCondition;
         return(singleCondition.GetExpression());
     }
     else
     {
         return(TreeNodeConstants.EmptyCondition);
     }
 }