コード例 #1
0
        /// <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));
        }