Esempio n. 1
0
        public override void Init(FdoCache cache, Mediator mediator, XmlNode recordListNode)
        {
            CheckDisposed();

            // <recordList owner="ReversalIndex" property="AllEntries" assemblyPath="RBRExtensions.dll" class="RBRExtensions.AllReversalEntriesRecordList"/>
            BaseInit(cache, mediator, recordListNode);
            //string owner = XmlUtils.GetOptionalAttributeValue(recordListNode, "owner");
            IVwVirtualHandler vh = cache.VwCacheDaAccessor.GetVirtualHandlerName("ReversalIndex", "AllEntries");

            if (vh == null)
            {
                vh = new AllReversalEntriesVh(null, cache);
                cache.VwCacheDaAccessor.InstallVirtual(vh);
            }
            m_flid = vh.Tag;
            int rih = GetReversalIndexHvo(mediator);

            if (rih > 0)
            {
                IReversalIndex ri = ReversalIndex.CreateFromDBObject(cache, rih);
                m_owningObject = ri;
                m_fontName     = ri.WritingSystemRA.DefaultSerif;
            }
            m_oldLength = 0;
        }
        public bool OnPromoteReversalindexEntry(object cmd)
        {
            //Command command = (Command) cmd;
            Slice slice = m_dataEntryForm.CurrentSlice;

            Debug.Assert(slice != null, "No slice was current");
            if (slice != null)
            {
                FdoCache            cache = m_dataEntryForm.Cache;
                IReversalIndexEntry entry = slice.Object as IReversalIndexEntry;
                int hvoNewOwner           = cache.GetOwnerOfObject(entry.OwnerHVO);
                switch (cache.GetClassOfObject(hvoNewOwner))
                {
                default:
                    throw new ArgumentException("Illegal class.");

                case ReversalIndex.kclsidReversalIndex:
                {
                    IReversalIndex ri = ReversalIndex.CreateFromDBObject(cache, hvoNewOwner);
                    ri.EntriesOC.Add(entry);
                    break;
                }

                case ReversalIndexEntry.kclsidReversalIndexEntry:
                {
                    IReversalIndexEntry rie = ReversalIndexEntry.CreateFromDBObject(cache, hvoNewOwner);
                    rie.SubentriesOC.Add(entry);
                    break;
                }
                }
                // We may need to notify everyone that a virtual property changed.
                //NotifyVirtualChanged(cache, slice);
            }
            return(true);
        }
Esempio n. 3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="argument"></param>
        public virtual void OnDeleteReversalIndex(object argument)
        {
            CheckDisposed();

            string sHvo = m_mediator.PropertyTable.GetStringProperty("ReversalIndexHvo", null);

            if (sHvo == null)
            {
                return;
            }
            int hvo = Convert.ToInt32(sHvo);

            if (hvo <= 0)
            {
                return;
            }
            if (m_cache == null)
            {
                m_cache = (FdoCache)m_mediator.PropertyTable.GetValue("cache");
            }
            if (m_cache == null)
            {
                return;
            }
            IReversalIndex ri = ReversalIndex.CreateFromDBObject(m_cache, hvo);

            DeleteReversalIndex(ri);
        }
Esempio n. 4
0
        public override void Init(FdoCache cache, Mediator mediator, XmlNode recordListNode)
        {
            CheckDisposed();

            // <recordList owner="ReversalIndex" property="AllEntries" assemblyPath="RBRExtensions.dll" class="RBRExtensions.AllReversalEntriesRecordList"/>
            BaseInit(cache, mediator, recordListNode);
            m_flid = (int)CmPossibilityList.CmPossibilityListTags.kflidPossibilities;
            int rih = AllReversalEntriesRecordList.GetReversalIndexHvo(mediator);

            if (rih > 0)
            {
                IReversalIndex ri = ReversalIndex.CreateFromDBObject(cache, rih);
                m_owningObject = ri.PartsOfSpeechOA;
                m_fontName     = ri.WritingSystemRA.DefaultSerif;
            }
            m_oldLength = 0;
        }
Esempio n. 5
0
        /// <summary>
        /// Look for a simple writing system spec as part of a node...currently either 'analysis' or 'vernacular'.
        /// If not found, answer 0.
        /// If found, answer the ID of the appropriate writing system, or throw exception if not valid.
        /// </summary>
        /// <param name="cache"></param>
        /// <param name="node"></param>
        /// <returns></returns>
        static int GetWs(Mediator mediator, FdoCache cache, XmlNode node)
        {
            string wsSpec = XmlUtils.GetOptionalAttributeValue(node, "ws");

            if (wsSpec != null)
            {
                int ws = 0;
                switch (wsSpec)
                {
                case "vernacular":
                    ws = cache.LangProject.DefaultVernacularWritingSystem;
                    break;

                case "analysis":
                    ws = cache.LangProject.DefaultAnalysisWritingSystem;
                    break;

                case "pronunciation":
                    ws = cache.LangProject.DefaultPronunciationWritingSystem;
                    break;

                case "reversal":
                    int rih = int.Parse((string)mediator.PropertyTable.GetValue("ReversalIndexHvo"));
                    if (rih > 0)
                    {
                        IReversalIndex ri = ReversalIndex.CreateFromDBObject(cache, rih);
                        ws = ri.WritingSystemRAHvo;
                    }
                    else
                    {
                        throw new ApplicationException("Couldn't find current reversal index.");
                    }
                    break;

                default:
                    throw new ApplicationException("ws must be 'vernacular', 'analysis', 'pronunciation',  or 'reversal';" + " it said '" + wsSpec + "'.");
                }
                return(ws);
            }
            else
            {
                return(0);
            }
        }
Esempio n. 6
0
 private void ChangeOwningObject(int id)
 {
     if (id > 0)
     {
         if (m_cache == null)
         {
             m_cache = (FdoCache)m_mediator.PropertyTable.GetValue("cache");
         }
         IReversalIndex ri           = ReversalIndex.CreateFromDBObject(m_cache, id);
         ICmObject      newOwningObj = NewOwningObject(ri);
         if (newOwningObj != OwningObject)
         {
             OwningObject = newOwningObj;
             m_mediator.PropertyTable.SetProperty("ActiveClerkOwningObject", newOwningObj, false);
             m_mediator.PropertyTable.SetPropertyPersistence("ActiveClerkOwningObject", false);
             m_mediator.SendMessage("ClerkOwningObjChanged", this);
         }
     }
 }
Esempio n. 7
0
        public override void PropChanged(int hvo, int tag, int ivMin, int cvIns, int cvDel)
        {
            CheckDisposed();

            if (hvo == m_cache.LangProject.LexDbOAHvo &&
                tag == (int)LexDb.LexDbTags.kflidReversalIndexes &&
                cvDel > 0)
            {
                // Our owning object may have been deleted.
                int rih = int.Parse((string)m_mediator.PropertyTable.GetValue("ReversalIndexHvo"));
                if (rih > 0 && !m_cache.IsValidObject(rih))
                {
                    if (m_owningObject != null && m_owningObject.Hvo != rih && m_owningObject.IsValidObject())
                    {
                        rih = m_owningObject.Hvo;
                    }
                    else
                    {
                        int cobjNew;
                        rih = ReversalClerk.ReversalIndexAfterDeletion(m_cache, out cobjNew);
                    }
                    m_mediator.PropertyTable.SetProperty("ReversalIndexHvo", rih.ToString());
                }
                if (rih > 0 && (m_owningObject == null || m_owningObject.Hvo != rih))
                {
                    IReversalIndex ri = ReversalIndex.CreateFromDBObject(m_cache, rih);
                    m_owningObject = ri;
                    m_fontName     = ri.WritingSystemRA.DefaultSerif;
                }
                else
                {
                    return;                             // We're still okay without any changes.
                }
            }
            else if (m_owningObject != null && m_owningObject.Hvo != hvo)
            {
                return;                         // This PropChanged doesn't apply to us.
            }
            ReloadListIfPossible();
        }