SIL.FieldWorks.IText.ConcordanceControl.FindMatchingItems C# (CSharp) Method

FindMatchingItems() private method

private FindMatchingItems ( ) : List
return List
		private List<IParaFragment> FindMatchingItems()
		{
			var result = new List<IParaFragment>();
			var target = GetMatchObject();
			if (target == null)
			{
				m_hvoMatch = 0;
				HasLoadedMatches = false;
				return result; // shouldn't happen... :)
			}
			int clid = target.ClassID;
			var analyses = new HashSet<IAnalysis>();
			switch (clid)
			{
				case WfiGlossTags.kClassId:
				case WfiAnalysisTags.kClassId:
					{
						analyses.Add(m_cache.ServiceLocator.GetObject(m_hvoMatch) as IAnalysis);
						return GetOccurrencesOfAnalyses(analyses);
					}
				case PartOfSpeechTags.kClassId:
					{
						foreach (var analysis in m_cache.ServiceLocator.GetInstance<IWfiAnalysisRepository>().AllInstances())
						{
							if (analysis.CategoryRA == target)
							{
								analyses.Add(analysis);
							}
						}
						return GetOccurrencesOfAnalyses(analyses);
					}
				case LexEntryTags.kClassId:
					{
						foreach (var mb in m_cache.ServiceLocator.GetInstance<IWfiMorphBundleRepository>().AllInstances())
						{
							if (mb.MorphRA != null && mb.MorphRA.Owner == target)
							{
								analyses.Add(mb.Owner as IWfiAnalysis);
							}
						}
						return GetOccurrencesOfAnalyses(analyses);
					}
				case LexSenseTags.kClassId:
					{
						foreach (var mb in m_cache.ServiceLocator.GetInstance<IWfiMorphBundleRepository>().AllInstances())
						{
							if (mb.SenseRA == target)
							{
								analyses.Add(mb.Owner as IWfiAnalysis);
							}
						}
						return GetOccurrencesOfAnalyses(analyses);
					}
				case MoStemMsaTags.kClassId:
				case MoInflAffMsaTags.kClassId:
				case MoDerivAffMsaTags.kClassId:
				case MoUnclassifiedAffixMsaTags.kClassId:
					// In the interlinear texts analysis tab the user selects Concord On -> Lex Gram Info while right clicking on a
					// morpheme.
					// This code finds each Wordform with a morpheme bundle that matched the morpheme selected.
					foreach (var mb in m_cache.ServiceLocator.GetInstance<IWfiMorphBundleRepository>().AllInstances())
					{
						if (mb.MsaRA != null && mb.MsaRA.ComponentsRS != null)
						{
							if (mb.MsaRA.Hvo == m_hvoMatch)
							{
								analyses.Add(mb.Owner as IWfiAnalysis);
							}
						}
					}
					return GetOccurrencesOfAnalyses(analyses);
				default:
					if (m_cache.ClassIsOrInheritsFrom((int)clid, (int)MoFormTags.kClassId))
					{
						foreach (
							var mb in m_cache.ServiceLocator.GetInstance<IWfiMorphBundleRepository>().AllInstances())
						{
							if (mb.MorphRA == target)
							{
								analyses.Add(mb.Owner as IWfiAnalysis);
							}
						}
						return GetOccurrencesOfAnalyses(analyses);
					}
					return new List<IParaFragment>();
			}
		}