예제 #1
0
 private void SetControlVisibility()
 {
     this.operatorComboBox.Visible            = false;
     this.parameterIndexNumericUpDown.Visible = false;
     this.valueComboBox.Visible          = false;
     this.buttonValueInputHelper.Visible = false;
     if (conditionComboBox.SelectedItem != null)
     {
         string        conditionName = conditionComboBox.SelectedItem.ToString();
         IConditionDef conditionDef  =
             RuleEngine.GetConditionManager().GetConditionDef(conditionName);
         if (conditionDef is AbstractAtomicConditionDef)
         {
             if (conditionDef == NativeSignatureConditionDef.GetInstance())
             {
                 this.operatorComboBox.Visible       = true;
                 this.valueComboBox.Visible          = true;
                 this.buttonValueInputHelper.Visible = true;
             }
             else if (conditionDef == NativeParameterIndexConditionDef.GetInstance())
             {
                 this.operatorComboBox.Visible            = true;
                 this.parameterIndexNumericUpDown.Visible = true;
             }
             else
             {
                 this.operatorComboBox.Visible = true;
                 this.valueComboBox.Visible    = true;
             }
             return;
         }
     }
     // Composite Condition or Empty Condition
     this.Width = conditionComboBox.Width;
 }
예제 #2
0
        private void UpdateOperatorComboBox()
        {
            if (conditionComboBox.SelectedItem == null)
            {
                return;
            }
            string        conditionName = conditionComboBox.SelectedItem.ToString();
            IConditionDef conditionDef  =
                RuleEngine.GetConditionManager().GetConditionDef(conditionName);

            if (conditionDef is AbstractAtomicConditionDef)
            {
                // Init Operators
                List <IOperator> operatorList =
                    RuleEngine.GetOperatorManager().GetPossibleOperatorList(conditionDef);
                operatorComboBox.Items.Clear();
                foreach (IOperator Operator in operatorList)
                {
                    operatorComboBox.Items.Add(Operator.GetOperatorName());
                }
                // default for operator
                if (operatorComboBox.Items.Count != 0)
                {
                    operatorComboBox.SelectedIndex = 0;
                }
                else
                {
                    operatorComboBox.SelectedIndex = -1;
                }
            }
        }
예제 #3
0
 /// <summary>
 /// Create condition using the IConditionDef whose name is "conditionName".
 /// </summary>
 public ICondition CreateCondition(string conditionName)
 {
     if (m_registeredConditionDef.ContainsKey(conditionName))
     {
         IConditionDef conditionDef = m_registeredConditionDef[conditionName];
         ICondition    action       = conditionDef.Create();
         return(action);
     }
     return(null);
 }
예제 #4
0
 public List<IOperator> GetPossibleOperatorList(IConditionDef conditionDef)
 {
     var operatorList = new List<IOperator>();
     var enumerator = m_registeredOperator.GetEnumerator();
     while (enumerator.MoveNext())
     {
         if (enumerator.Current.Value.CanApplyToCondition(conditionDef))
             operatorList.Add(enumerator.Current.Value);
     }
     return operatorList;
 }
예제 #5
0
        private void UpdateValuePart()
        {
            if (conditionComboBox.SelectedItem == null)
            {
                return;
            }
            string        conditionName = conditionComboBox.SelectedItem.ToString();
            IConditionDef conditionDef  =
                RuleEngine.GetConditionManager().GetConditionDef(conditionName);

            if (conditionDef is AbstractAtomicConditionDef)
            {
                AbstractAtomicConditionDef atomicConditionDef =
                    conditionDef as AbstractAtomicConditionDef;
                if (atomicConditionDef == NativeParameterIndexConditionDef.GetInstance())
                {
                    valueComboBox.Visible = false;
                    parameterIndexNumericUpDown.Visible = true;
                }
                else
                {
                    parameterIndexNumericUpDown.Visible = false;
                    valueComboBox.Visible = true;
                    valueComboBox.Text    = "";
                    valueComboBox.Items.Clear();
                    // Disable valueComboBox? If yes, we need the ValueInputHelper.
                    if (atomicConditionDef == NativeSignatureConditionDef.GetInstance())
                    {
                        valueComboBox.Enabled = false;
                    }
                    else
                    {
                        valueComboBox.Enabled = true;
                    }
                    List <string> list = atomicConditionDef.GetMostPossibleValues();
                    if (list != null)
                    {
                        foreach (string stringValue in list)
                        {
                            valueComboBox.Items.Add(stringValue);
                        }
                        if (valueComboBox.Items.Count != 0)
                        {
                            valueComboBox.SelectedIndex = 0;
                        }
                    }
                }
            }
        }
예제 #6
0
        public List <IOperator> GetPossibleOperatorList(IConditionDef conditionDef)
        {
            List <IOperator> operatorList = new List <IOperator>();

            Dictionary <string, IOperator> .Enumerator enumerator =
                m_registeredOperator.GetEnumerator();
            while (enumerator.MoveNext())
            {
                if (enumerator.Current.Value.CanApplyToCondition(conditionDef))
                {
                    operatorList.Add(enumerator.Current.Value);
                }
            }
            return(operatorList);
        }
예제 #7
0
        private void buttonValueInputHelper_Click(object sender, EventArgs e)
        {
            string        conditionName = conditionComboBox.SelectedItem.ToString();
            IConditionDef conditionDef  =
                RuleEngine.GetConditionManager().GetConditionDef(conditionName);

            if (conditionDef == NativeSignatureConditionDef.GetInstance())
            {
                NativeSignatureInputHelper form = null;
                if (valueComboBox.Text.Trim().Equals(""))
                {
                    form = new NativeSignatureInputHelper();
                }
                else
                {
                    form = new NativeSignatureInputHelper(valueComboBox.Text);
                }
                if (form.ShowDialog() == DialogResult.OK)
                {
                    valueComboBox.Text = form.GetTypeString();
                }
            }
        }
예제 #8
0
 public bool CanApplyToCondition(IConditionDef conditionCreator)
 {
     return possibleConditionDefList.Contains(conditionCreator);
 }
예제 #9
0
 /// <summary>
 /// Register a condition in this manager.
 /// The condition name is used as the key of IConditionDef in the register collection.
 /// Usually, this method is called in the ctor of AbstractConditionManager's sub classes.
 /// </summary>
 protected void RegisterCondition(string conditionName, IConditionDef conditionDef)
 {
     m_registeredConditionDef.Add(conditionName, conditionDef);
 }
예제 #10
0
 /// <summary>
 /// Register a condition in this manager.
 /// The condition name is used as the key of IConditionDef in the register collection.
 /// Usually, this method is called in the ctor of AbstractConditionManager's sub classes.
 /// </summary>
 protected void RegisterCondition(string conditionName, IConditionDef conditionDef)
 {
     m_registeredConditionDef.Add(conditionName, conditionDef);
 }
예제 #11
0
 public bool CanApplyToCondition(IConditionDef conditionCreator)
 {
     return(possibleConditionDefList.Contains(conditionCreator));
 }