private void AddGenericsToToolBox <T>(MultiPicker <T> picker) where T : class
        {
            ILNode AddToolBoxNode   = new ILNode(null, null, null, StructureView.None);
            ILNode GenericExtension = AddToolBoxNode.Add("<Local GenericParameter>", "<Local GenericParameter>", null, StructureView.Structure);

            if (methodDefinition.HasGenericParameters)
            {
                foreach (GenericParameter gpar in methodDefinition.GenericParameters)
                {
                    GenericExtension.Add(gpar.Name, gpar.FullName, gpar, StructureView.Classes);
                }
            }
            TypeDefinition recdef = methodDefinition.DeclaringType;

            while (recdef != null)
            {
                if (recdef.HasGenericParameters)
                {
                    foreach (GenericParameter gpar in recdef.GenericParameters)
                    {
                        GenericExtension.Add(gpar.Name, gpar.FullName, gpar, StructureView.Classes);
                    }
                }
                if (recdef.IsNested)
                {
                    recdef = recdef.DeclaringType;
                }
                else
                {
                    recdef = null;
                }
            }
            picker.AddToolboxNode(AddToolBoxNode);
        }
Beispiel #2
0
        public void MultiPickerFilter_CheckedValueSetMatchAllOf_MatchingResults()
        {
            //given
            var selectedValues = new[] { _tagA, _tagC };

            MapperConfiguration.Configure();
            var source   = _tags.Select(x => new Selectable(x)).ToArray();
            var selector = new MultiPicker(MultiPickerType.Tag, source)
            {
                IsChecked = true, CanMatchMultipleElements = true, ShouldMatchAllOfTheElements = true
            };

            foreach (var result in selector.ComboBox.InternalDisplayableSearchResults)
            {
                if (selectedValues.Any(x => x.Id == result.Id))
                {
                    result.IsSelected = true;
                }
            }

            var filter   = MultiPickerFilter.Create(selector);
            var expected = new[] { _positions[2] };

            //when
            var results = filter.Execute(_positions);

            //then
            Assert.Equal(expected.Length, results.Count());
            Assert.Equal(expected, results);
        }
        private void btnTMFPicker_Click(object sender, EventArgs e)
        {
            switch (currentPOT)
            {
            case PickOperandType.None:
                ((InstructionInfo)instructionEditor.DragItem).NewInstruction.Operand = null;
                lblTMFPicker.Text = string.Empty;
                RedrawBoth();
                break;

            case PickOperandType.FieldReference:
                MultiPicker <FieldReference> .ShowStructure(dataStruct, StructureView.Fields, x => true, ApplyOperand);

                break;

            case PickOperandType.MethodReference:
                MultiPicker <MethodReference> .ShowStructure(dataStruct, StructureView.Methods, x => true, ApplyOperand);

                break;

            case PickOperandType.TypeReference:
                var typPicker = MultiPicker <TypeReference> .ShowStructure(dataStruct, StructureView.Classes, x => true, ApplyOperand);

                AddGenericsToToolBox(typPicker);
                break;

            case PickOperandType.TMFReferenceDynamic:
                var mrfPicker = MultiPicker <MemberReference> .ShowStructure(dataStruct, StructureView.All, x => true, ApplyOperand);

                AddGenericsToToolBox(mrfPicker);
                break;

            case PickOperandType.InstructionArrReference:
                Instruction[] oldop = ((InstructionInfo)instructionEditor.DragItem).NewInstruction.Operand as Instruction[];
                InstructArrPicker.Instance.ShowStructure(mInstructBox.Items, oldop, x => ApplyOperand(x));
                break;

            default:
                Log.Write(Log.Level.Warning, $"OperandType \"{currentPOT}\" cannot be processed with the TMFPicker");
                break;
            }
        }
 public static MultiPickerFilter Create(MultiPicker picker)
 {
     return(new MultiPickerFilter(picker));
 }
 private MultiPickerFilter(MultiPicker picker)
 {
     _picker = picker;
     _picker.PropertyChanged += PickerOnPropertyChanged;
 }
 private void btnPickMethod_Click(object sender, EventArgs e)
 {
     MultiPicker <MethodDefinition> .ShowStructure(dataStruct, StructureView.Methods, x => true, LoadMetDef, true);
 }