/// <summary> /// Have the main FLEx window jump to the appropriate item /// </summary> /// <param name="hvo">item whose parent will indcate where to jump to</param> public void JumpToToolBasedOnHvo(int hvo) { if (hvo == 0) { return; } string sTool = null; int parentClassId = 0; ICmObject obj = CmObject.CreateFromDBObject(m_cache, hvo); switch (obj.ClassID) { case MoForm.kclsidMoForm: // fall through case MoAffixAllomorph.kclsidMoAffixAllomorph: // fall through case MoStemAllomorph.kclsidMoStemAllomorph: // fall through case MoInflAffMsa.kclsidMoInflAffMsa: // fall through case MoDerivAffMsa.kclsidMoDerivAffMsa: // fall through case MoUnclassifiedAffixMsa.kclsidMoUnclassifiedAffixMsa: // fall through case MoStemMsa.kclsidMoStemMsa: // fall through case MoMorphSynAnalysis.kclsidMoMorphSynAnalysis: case MoAffixProcess.kclsidMoAffixProcess: sTool = "lexiconEdit"; parentClassId = LexEntry.kclsidLexEntry; break; case MoInflAffixSlot.kclsidMoInflAffixSlot: // fall through case MoInflAffixTemplate.kclsidMoInflAffixTemplate: // fall through case PartOfSpeech.kclsidPartOfSpeech: sTool = "posEdit"; parentClassId = PartOfSpeech.kclsidPartOfSpeech; break; // still need to test compound rule ones case MoCoordinateCompound.kclsidMoCoordinateCompound: case MoEndoCompound.kclsidMoEndoCompound: case MoExoCompound.kclsidMoExoCompound: sTool = "compoundRuleAdvancedEdit"; parentClassId = obj.ClassID; break; case PhRegularRule.kclsidPhRegularRule: // fall through case PhMetathesisRule.kclsidPhMetathesisRule: sTool = "PhonologicalRuleEdit"; parentClassId = obj.ClassID; break; } if (parentClassId <= 0) { return; // do nothing } int parentHvo = CmObjectUi.GetParentOfClass(m_cache, hvo, parentClassId); if (parentHvo <= 0) { return; // do nothing } m_mediator.PostMessage("FollowLink", SIL.FieldWorks.FdoUi.FwLink.Create(sTool, m_cache.GetGuidFromId(parentHvo), m_cache.ServerName, m_cache.DatabaseName)); }