示例#1
0
 protected void UpdateInternal(List <bool> isAts)
 {
     for (int i = 0; i < isAts.Count; i++)
     {
         bool   isAt    = isAts[i];
         AtData data    = mAtDatas[i];
         Input  atInput = mBlock.GetInput(data.inputName);
         if (isAt)
         {
             if (atInput == null)
             {
                 atInput = InputFactory.Create(Define.EConnection.InputValue, data.inputName, Define.EAlign.Left, CHECK);
                 mBlock.AppendInput(atInput, data.atInputIndex);
             }
             else if (atInput.Type == Define.EConnection.DummyInput)
             {
                 //remove dummy input first
                 mBlock.RemoveInput(atInput);
                 atInput = InputFactory.Create(Define.EConnection.InputValue, data.inputName, Define.EAlign.Left, CHECK);
                 mBlock.AppendInput(atInput, data.atInputIndex);
             }
         }
         else
         {
             if (atInput != null)
             {
                 mBlock.RemoveInput(atInput);
             }
         }
     }
 }
示例#2
0
        protected override void OnAttached()
        {
            if (mBlock.GetField("WHERE") != null)
            {
                AtData data = new AtData();
                data.whereDropdown = mBlock.GetField("WHERE") as FieldDropdown;
                data.atInputIndex  = mBlock.InputList.FindIndex(input => "AT".Equals(input.Name));
                data.xmlAttr       = "at";
                data.inputName     = "AT";
                mAtDatas.Add(data);

                mIsOnly = true;
            }
            else if (mBlock.GetField("WHERE1") != null)
            {
                int i = 1;
                while (true)
                {
                    FieldDropdown dropdown = mBlock.GetField("WHERE" + i) as FieldDropdown;
                    if (dropdown == null)
                    {
                        break;
                    }
                    AtData data = new AtData();
                    data.whereDropdown = dropdown;
                    data.atInputIndex  = mBlock.InputList.FindIndex(input => ("AT" + i).Equals(input.Name));
                    data.xmlAttr       = "at" + i;
                    data.inputName     = "AT" + i;
                    mAtDatas.Add(data);
                    i++;
                }

                mIsOnly = false;
            }
            else
            {
                throw new Exception("FieldDropDown \"WHERE\" not found.");
            }

            UpdateInternal();

            //register observer
            mObserver = new MemorySafeMutatorObserver(this);
            foreach (AtData atData in mAtDatas)
            {
                atData.whereDropdown.AddObserver(mObserver);
            }
        }