private void FillMultiLinkForEntity(IList <CompletionSet> completionSets, ITrackingSpan applicableTo, ConnectionIntellisenseData intellisenseData, EntityIntellisenseData entityData) { TupleList <string, string> childEntities = new TupleList <string, string>(); if (entityData.OneToManyRelationships != null) { foreach (var item in entityData.OneToManyRelationships.Values) { childEntities.Add(item.ChildEntityName, item.ChildEntityAttributeName); } } if (!entityData.IsIntersectEntity.GetValueOrDefault() && entityData.ManyToManyRelationships != null) { foreach (var item in entityData.ManyToManyRelationships.Values) { if (string.Equals(entityData.EntityLogicalName, item.Entity1Name, StringComparison.InvariantCultureIgnoreCase)) { childEntities.Add(item.IntersectEntityName, item.Entity1IntersectAttributeName); } else if (string.Equals(entityData.EntityLogicalName, item.Entity2Name, StringComparison.InvariantCultureIgnoreCase)) { childEntities.Add(item.IntersectEntityName, item.Entity2IntersectAttributeName); } } } List <CrmCompletion> list = new List <CrmCompletion>(); foreach (var relation in childEntities.OrderBy(e => e.Item1).ThenBy(e => e.Item2)) { if (intellisenseData.Entities.ContainsKey(relation.Item1)) { var childEntityData = intellisenseData.Entities[relation.Item1]; if (childEntityData.Attributes != null && childEntityData.Attributes.ContainsKey(relation.Item2)) { var childAttribute = childEntityData.Attributes[relation.Item2]; List <string> compareValues = CrmIntellisenseCommon.GetCompareValuesForEntity(childEntityData); compareValues.Add(relation.Item2); var insertText = string.Format("multi {0} {1}", relation.Item2, relation.Item1); list.Add(CreateCompletion(CrmIntellisenseCommon.GetDisplayTextEntityAndAttribute(childEntityData, childAttribute), insertText, CrmIntellisenseCommon.CreateEntityAndAttributeDescription(childEntityData, childAttribute), _defaultGlyph, compareValues)); } } } if (list.Count > 0) { completionSets.Add(new CrmCompletionSet(SourceNameMoniker, "Child Entities", applicableTo, list, Enumerable.Empty <CrmCompletion>())); } }
public EntityMetadataFilter() { InitializeComponent(); FillRoleEditorLayoutTabs(); panelFilters.Children.Clear(); StackPanel panel = null; foreach (var item in _filters.OrderBy(i => i.Item1)) { var checkBox = new CheckBox() { Name = item.Item1, Content = item.Item1, Tag = item.Item2, IsThreeState = true, IsChecked = null, }; checkBox.Checked += this.CheckBox_Checked; checkBox.Indeterminate += this.CheckBox_Checked; checkBox.Unchecked += this.CheckBox_Checked; if (_checkBoxes.Count % _countInColumn == 0) { panel = new StackPanel() { Orientation = Orientation.Vertical, }; panelFilters.Children.Add(panel); } _checkBoxes.Add(checkBox); panel.Children.Add(checkBox); } this.FilterChanged = false; }