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); } } } }
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); } }