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

OnJumpToRecord() public method

public OnJumpToRecord ( object argument ) : bool
argument object
return bool
		public bool OnJumpToRecord(object argument)
		{
			CheckDisposed();
			// Check if we're the right tool, and that we have a valid object id.
			string toolName = m_mediator.PropertyTable.GetStringProperty("currentContentControl", null);
			string areaName = m_mediator.PropertyTable.GetStringProperty("areaChoice", null);
			string concordOn = m_mediator.PropertyTable.GetStringProperty("ConcordOn", null);
			m_mediator.PropertyTable.RemoveProperty("ConcordOn");
			Debug.Assert(!String.IsNullOrEmpty(toolName) && !String.IsNullOrEmpty(areaName));
			if (areaName != "textsWords" || toolName != "concordance")
				return false;
			int hvoTarget = (int)argument;
			if (!m_cache.ServiceLocator.IsValidObjectId(hvoTarget))
				return false;
			try
			{
				ICmObject target = m_cache.ServiceLocator.GetObject(hvoTarget);
				int clid = target.ClassID;
				int ws = 0;
				ITsString tss;
				switch (clid)
				{
					case WfiWordformTags.kClassId:
						var wwf = (IWfiWordform)target;
						if (wwf.Form != null && wwf.Form.TryWs(WritingSystemServices.kwsFirstVern, out ws, out tss))
							InitializeConcordanceSearch(tss.Text, ws, ConcordanceLines.kWord);
						break;
					case LexEntryTags.kClassId:
					case LexSenseTags.kClassId:
					case WfiAnalysisTags.kClassId:
					case PartOfSpeechTags.kClassId:
					case WfiGlossTags.kClassId:
						if (!String.IsNullOrEmpty(concordOn) && concordOn.Equals("WordPartOfSpeech"))
						{
							InitializeConcordanceSearchWordPOS(target);
						}
						else
						{
							InitializeConcordanceSearch(target);
						}
						break;
					case MoStemMsaTags.kClassId:
					case MoInflAffMsaTags.kClassId:
					case MoDerivAffMsaTags.kClassId:
					case MoUnclassifiedAffixMsaTags.kClassId:
						if (!String.IsNullOrEmpty(concordOn) && concordOn.Equals("PartOfSpeechGramInfo"))
						{
							Debug.Assert(target is IMoMorphSynAnalysis);
							var msa = target as IMoMorphSynAnalysis;
							InitializeConcordanceSearch(target, msa.InterlinearNameTSS);
						}
						else
						{
							InitializeConcordanceSearch(target);
						}
						break;
					default:
						if (m_cache.ClassIsOrInheritsFrom(clid, MoFormTags.kClassId))
							InitializeConcordanceSearch(target);
						break;
				}
			}
			finally
			{
				// indicate that OnJumpToRecord has been handled.
				m_clerk.SuspendLoadingRecordUntilOnJumpToRecord = false;
			}
			return true;
		}