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); }
/// <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); }
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; }
/// <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); } }
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); } } }
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(); }