/// ------------------------------------------------------------------------------------ /// <summary> /// Called when the add button is pressed /// </summary> /// <param name="sender"></param> /// <param name="e"></param> /// ------------------------------------------------------------------------------------ protected void m_btnAdd_Click(object sender, System.EventArgs e) { IPubHFSet HFSet = m_cache.ServiceLocator.GetInstance <IPubHFSetFactory>().Create(); m_HfSetOwner.HeaderFooterSetsOC.Add(HFSet); IPubHeaderFactory phFactory = m_cache.ServiceLocator.GetInstance <IPubHeaderFactory>(); HFSet.DefaultFooterOA = phFactory.Create(); HFSet.DefaultHeaderOA = phFactory.Create(); HFSet.FirstFooterOA = phFactory.Create(); HFSet.FirstHeaderOA = phFactory.Create(); HFSet.EvenFooterOA = phFactory.Create(); HFSet.EvenHeaderOA = phFactory.Create(); using (HeaderFooterModifyDlg dlg = new HeaderFooterModifyDlg(m_cache, HFSet as IPubHFSet, m_pub, m_helpProvider)) { if (dlg.ShowDialog() == DialogResult.OK) { UpdateNameBox(null); UpdatePreView(); } else { // We don't want a new PubHFSet after all... m_cache.DomainDataByFlid.DeleteObj(HFSet.Hvo); } } }
/// ------------------------------------------------------------------------------------ /// <summary> /// Refreshes the display of the preview /// </summary> /// ------------------------------------------------------------------------------------ private void UpdatePreView() { IPubHFSet hfset = CurrentHFSet; // description m_txtBoxDescription.Text = hfset.Description.Text; UpdateFirstPagePreview(); UpdateEvenPagePreview(); // odd page if (m_hfsvOddTop != null) { m_hfsvOddTop.Header = hfset.DefaultHeaderOA.Hvo; m_hfsvOddTop.MakeRoot(); m_hfsvOddTop.PerformLayout(); } if (m_hfsvOddBottom != null) { m_hfsvOddBottom.Header = hfset.DefaultFooterOA.Hvo; m_hfsvOddBottom.MakeRoot(); m_hfsvOddBottom.PerformLayout(); } }
/// ------------------------------------------------------------------------------------ /// <summary> /// Initializes a new instance of the <see cref="HeaderFooterConfigurer"/> class. /// </summary> /// <param name="cache">The cache representing our DB connection.</param> /// <param name="hvoHeaderFooterSet">Id of the header/footer set to be used</param> /// <param name="wsDefault">Default writing system</param> /// <param name="printDateTime">printing date/time</param> /// ------------------------------------------------------------------------------------ public HeaderFooterConfigurer(FdoCache cache, int hvoHeaderFooterSet, int wsDefault, DateTime printDateTime) { m_fdoCache = cache; if (hvoHeaderFooterSet > 0) m_hfSet = m_fdoCache.ServiceLocator.GetInstance<IPubHFSetRepository>().GetObject(hvoHeaderFooterSet); m_wsDefault = wsDefault; m_printDateTime = printDateTime; }
/// ------------------------------------------------------------------------------------ /// <summary> /// Updates the preview when the user selects a different set /// </summary> /// <param name="sender"></param> /// <param name="e"></param> /// ------------------------------------------------------------------------------------ private void m_lstBoxName_SelectedIndexChanged(object sender, System.EventArgs e) { UpdatePreView(); // If the selected set is built-in, don't allow the user to delete it. IPubHFSet currentSet = CurrentHFSet; m_btnDelete.Enabled = (m_lstBoxName.Items.Count > 1 && (m_protectedHFSets == null || !m_protectedHFSets.Contains(currentSet.Name))); }
/// ------------------------------------------------------------------------------------ /// <summary> /// Called when the delete button is pressed /// </summary> /// <param name="sender"></param> /// <param name="e"></param> /// ------------------------------------------------------------------------------------ protected void m_btnDelete_Click(object sender, System.EventArgs e) { IPubHFSet hfSet = CurrentHFSet; int i = m_lstBoxName.SelectedIndex; i = (i > 0) ? (i - 1) : i + 1; m_lstBoxName.SelectedItem = m_lstBoxName.Items[i]; m_lstBoxName.Items.Remove(hfSet); // Application.DoEvents(); // no noticeable issues when this is not called m_HfSetOwner.HeaderFooterSetsOC.Remove(hfSet); }
/// ------------------------------------------------------------------------------------ /// <summary> /// Replaces all the header/footer panels with HFSetView's initialized with the correct /// H/F info /// </summary> /// ------------------------------------------------------------------------------------ private void ReplacePanelsWithHFSetViews() { IPubHFSet hfSet = CurrentHFSet; m_hfsvFirstTop = MakeHFSetView(m_pnlFirstTop, hfSet.FirstHeaderOA, 1); m_hfsvFirstBottom = MakeHFSetView(m_pnlFirstBottom, hfSet.FirstFooterOA, 1); m_hfsvEvenTop = MakeHFSetView(m_pnlEvenTop, hfSet.EvenHeaderOA, 2); m_hfsvEvenBottom = MakeHFSetView(m_pnlEvenBottom, hfSet.EvenFooterOA, 2); m_hfsvOddTop = MakeHFSetView(m_pnlOddTop, hfSet.DefaultHeaderOA, 3); m_hfsvOddBottom = MakeHFSetView(m_pnlOddBottom, hfSet.DefaultFooterOA, 3); }
/// ------------------------------------------------------------------------------------ /// <summary> /// Initializes a new instance of the <see cref="HeaderFooterConfigurer"/> class. /// </summary> /// <param name="cache">The cache representing our DB connection.</param> /// <param name="hvoHeaderFooterSet">Id of the header/footer set to be used</param> /// <param name="wsDefault">Default writing system</param> /// <param name="printDateTime">printing date/time</param> /// ------------------------------------------------------------------------------------ public HeaderFooterConfigurer(FdoCache cache, int hvoHeaderFooterSet, int wsDefault, DateTime printDateTime) { m_fdoCache = cache; if (hvoHeaderFooterSet > 0) { m_hfSet = m_fdoCache.ServiceLocator.GetInstance <IPubHFSetRepository>().GetObject(hvoHeaderFooterSet); } m_wsDefault = wsDefault; m_printDateTime = printDateTime; }
/// ------------------------------------------------------------------------------------ /// <summary> /// Handle the OK button press /// </summary> /// <param name="sender"></param> /// <param name="e"></param> /// ------------------------------------------------------------------------------------ private void m_btnOk_Click(object sender, System.EventArgs e) { IPubHFSet currentSet = CurrentHFSet; IPubHFSet pubSet = m_pubDiv.HFSetOA; m_pubDiv.DifferentEvenHF = !m_chkEvenSameAsOdd.Checked; m_pubDiv.DifferentFirstHF = !m_chkFirstSameAsOdd.Checked; // Copy the Header / Footer Sets to the Publication pubSet.Name = currentSet.Name; pubSet.CloneDetails(currentSet); Close(); }
/// ------------------------------------------------------------------------------------ /// <summary> /// Refreshes the display of the even page preview /// </summary> /// ------------------------------------------------------------------------------------ private void UpdateEvenPagePreview() { IPubHFSet hfset = CurrentHFSet; if (m_hfsvEvenTop != null) { m_hfsvEvenTop.Header = (m_chkEvenSameAsOdd.Checked ? hfset.DefaultHeaderOA.Hvo : hfset.EvenHeaderOA.Hvo); m_hfsvEvenTop.MakeRoot(); m_hfsvEvenTop.PerformLayout(); } if (m_hfsvEvenBottom != null) { m_hfsvEvenBottom.Header = (m_chkEvenSameAsOdd.Checked ? hfset.DefaultFooterOA.Hvo : hfset.EvenFooterOA.Hvo); m_hfsvEvenBottom.MakeRoot(); m_hfsvEvenBottom.PerformLayout(); } }
/// ------------------------------------------------------------------------------------ /// <summary> /// Refreshes the display of the first page preview /// </summary> /// ------------------------------------------------------------------------------------ private void UpdateFirstPagePreview() { IPubHFSet hfset = CurrentHFSet; if (m_hfsvFirstTop != null) { m_hfsvFirstTop.Header = (m_chkFirstSameAsOdd.Checked ? hfset.DefaultHeaderOA.Hvo : hfset.FirstHeaderOA.Hvo); m_hfsvFirstTop.MakeRoot(); m_hfsvFirstTop.PerformLayout(); } if (m_hfsvFirstBottom != null) { m_hfsvFirstBottom.Header = (m_chkFirstSameAsOdd.Checked ? hfset.DefaultFooterOA.Hvo : hfset.FirstFooterOA.Hvo); m_hfsvFirstBottom.MakeRoot(); m_hfsvFirstBottom.PerformLayout(); } }
/// ------------------------------------------------------------------------------------ /// <summary> /// Copy the details from the given pub H/F set to this one. /// </summary> /// <param name="copyFrom">The set to clone</param> /// ------------------------------------------------------------------------------------ public void CloneDetails(IPubHFSet copyFrom) { Description.UnderlyingTsString = copyFrom.Description.UnderlyingTsString; Name = copyFrom.Name; // if the header and the footer were null (if they are missing in the database) // then create them if (DefaultHeaderOA == null) { DefaultHeaderOA = new PubHeader(); } if (DefaultFooterOA == null) { DefaultFooterOA = new PubHeader(); } DefaultHeaderOA.OutsideAlignedText.UnderlyingTsString = copyFrom.DefaultHeaderOA.OutsideAlignedText.UnderlyingTsString; DefaultHeaderOA.CenteredText.UnderlyingTsString = copyFrom.DefaultHeaderOA.CenteredText.UnderlyingTsString; DefaultHeaderOA.InsideAlignedText.UnderlyingTsString = copyFrom.DefaultHeaderOA.InsideAlignedText.UnderlyingTsString; DefaultFooterOA.OutsideAlignedText.UnderlyingTsString = copyFrom.DefaultFooterOA.OutsideAlignedText.UnderlyingTsString; DefaultFooterOA.CenteredText.UnderlyingTsString = copyFrom.DefaultFooterOA.CenteredText.UnderlyingTsString; DefaultFooterOA.InsideAlignedText.UnderlyingTsString = copyFrom.DefaultFooterOA.InsideAlignedText.UnderlyingTsString; PubDivision owningDiv = new PubDivision(Cache, OwnerHVO); if (owningDiv.DifferentFirstHF) { // if the header and the footer were null (if they are the same as the odd page) // then create them if (FirstHeaderOA == null) { FirstHeaderOA = new PubHeader(); } if (FirstFooterOA == null) { FirstFooterOA = new PubHeader(); } FirstHeaderOA.OutsideAlignedText.UnderlyingTsString = copyFrom.FirstHeaderOA.OutsideAlignedText.UnderlyingTsString; FirstHeaderOA.CenteredText.UnderlyingTsString = copyFrom.FirstHeaderOA.CenteredText.UnderlyingTsString; FirstHeaderOA.InsideAlignedText.UnderlyingTsString = copyFrom.FirstHeaderOA.InsideAlignedText.UnderlyingTsString; FirstFooterOA.OutsideAlignedText.UnderlyingTsString = copyFrom.FirstFooterOA.OutsideAlignedText.UnderlyingTsString; FirstFooterOA.CenteredText.UnderlyingTsString = copyFrom.FirstFooterOA.CenteredText.UnderlyingTsString; FirstFooterOA.InsideAlignedText.UnderlyingTsString = copyFrom.FirstFooterOA.InsideAlignedText.UnderlyingTsString; } else { FirstHeaderOA = null; FirstFooterOA = null; } if (owningDiv.DifferentEvenHF) { // if the header and the footer were null (if they are the same as the odd page) // then create them if (EvenHeaderOA == null) { EvenHeaderOA = new PubHeader(); } if (EvenFooterOA == null) { EvenFooterOA = new PubHeader(); } EvenHeaderOA.OutsideAlignedText.UnderlyingTsString = copyFrom.EvenHeaderOA.OutsideAlignedText.UnderlyingTsString; EvenHeaderOA.CenteredText.UnderlyingTsString = copyFrom.EvenHeaderOA.CenteredText.UnderlyingTsString; EvenHeaderOA.InsideAlignedText.UnderlyingTsString = copyFrom.EvenHeaderOA.InsideAlignedText.UnderlyingTsString; EvenFooterOA.OutsideAlignedText.UnderlyingTsString = copyFrom.EvenFooterOA.OutsideAlignedText.UnderlyingTsString; EvenFooterOA.CenteredText.UnderlyingTsString = copyFrom.EvenFooterOA.CenteredText.UnderlyingTsString; EvenFooterOA.InsideAlignedText.UnderlyingTsString = copyFrom.EvenFooterOA.InsideAlignedText.UnderlyingTsString; } else { EvenHeaderOA = null; EvenFooterOA = null; } }
/// ------------------------------------------------------------------------------------ /// <summary> /// Create the dialog for modifying headers and footers /// </summary> /// <param name="cache">the cache</param> /// <param name="curHFSet">publication header/footer set</param> /// <param name="pub">publication (used to determine if the publication is right-bound /// or left-bound to determine placement of objects and dialog labels in dialog</param> /// <param name="helpProvider">provides context-senstive help for this dialog</param> /// ------------------------------------------------------------------------------------ public HeaderFooterModifyDlg(FdoCache cache, IPubHFSet curHFSet, IPublication pub, IHelpTopicProvider helpProvider) { m_caches = new CachePair(); m_caches.MainCache = cache; m_caches.CreateSecCache(); m_curHFSet = curHFSet; m_pub = pub; m_helpProvider = helpProvider; LoadRealDataIntoSec(); InitializeComponent(); m_innerHeaderText = m_lblLeftHeader.Text; m_innerFooterText = m_lblLeftFooter.Text; m_outerHeaderText = m_lblRightHeader.Text; m_outerFooterText = m_lblRightFooter.Text; ChangePanelsToViews(); m_lastFocusedView = m_hfsvHeader; m_txtBoxDescription.Text = m_curHFSet.Description.Text; m_txtBoxName.Text = m_curHFSet.Name; UpdateOKButton(); }
/// ------------------------------------------------------------------------------------ /// <summary> /// helper function verifies a complete HeaderFooterSet containing "Test Literals" data /// </summary> /// <param name="hfSet">the HeaderFooterSet to verify</param> /// ------------------------------------------------------------------------------------ private void VerifyHeaderFooterSetTestLiterals(IPubHFSet hfSet) { //verify header/footer set name Assert.AreEqual("Test Literals", hfSet.Name); // verify header/footer set description Assert.AreEqual("Test Description", hfSet.Description.Text); //verify DefaultHeader IPubHeader hf = hfSet.DefaultHeaderOA; Assert.AreEqual("Right top", hf.OutsideAlignedText.Text); Assert.AreEqual("Center top", hf.CenteredText.Text); Assert.AreEqual("Left top", hf.InsideAlignedText.Text); //verify DefaultFooter hf = hfSet.DefaultFooterOA; Assert.AreEqual("Right bottom", hf.OutsideAlignedText.Text); Assert.AreEqual("Center bottom", hf.CenteredText.Text); Assert.AreEqual("Left bottom", hf.InsideAlignedText.Text); //verify FirstHeader hf = hfSet.FirstHeaderOA; Assert.AreEqual("Right top1", hf.OutsideAlignedText.Text); Assert.IsNotNull(hf.CenteredText, "Should retrieve an empty tss"); Assert.AreEqual(0, hf.CenteredText.Length); Assert.AreEqual("Left top1", hf.InsideAlignedText.Text); //verify FirstFooter hf = hfSet.FirstFooterOA; Assert.AreEqual("Right bottom1", hf.OutsideAlignedText.Text); Assert.AreEqual("Center bottom1", hf.CenteredText.Text); Assert.AreEqual("Left bottom1", hf.InsideAlignedText.Text); //verify EvenHeader hf = hfSet.EvenHeaderOA; Assert.AreEqual("Left top E", hf.OutsideAlignedText.Text); Assert.AreEqual("Center top E", hf.CenteredText.Text); Assert.AreEqual("Right top E", hf.InsideAlignedText.Text); //verify EvenFooter hf = hfSet.EvenFooterOA; Assert.AreEqual("Left bottom E", hf.OutsideAlignedText.Text); Assert.AreEqual("Center bottom E", hf.CenteredText.Text); Assert.AreEqual("Right bottom E", hf.InsideAlignedText.Text); }
/// ------------------------------------------------------------------------------------ /// <summary> /// helper function verifies a complete HeaderFooterSet containing "Default" data /// </summary> /// <param name="hfSet">the HeaderFooterSet to verify</param> /// <param name="fOwnedByDivision">if set to <c>true</c> then this H/F sett is owned by /// a division.</param> /// ------------------------------------------------------------------------------------ private void VerifyHeaderFooterSetDefault(IPubHFSet hfSet, bool fOwnedByDivision) { //verify name Assert.AreEqual("default headers & footers", hfSet.Name); //verify Default Header and Footer VerifyDefaultHeaderOrFooter(hfSet.DefaultHeaderOA); VerifyDefaultHeaderOrFooter(hfSet.DefaultFooterOA); //verify First and Even if (fOwnedByDivision) { Assert.IsNull(hfSet.FirstHeaderOA); Assert.IsNull(hfSet.FirstFooterOA); Assert.IsNull(hfSet.EvenHeaderOA); Assert.IsNull(hfSet.EvenFooterOA); } else { VerifyDefaultHeaderOrFooter(hfSet.FirstHeaderOA); VerifyDefaultHeaderOrFooter(hfSet.FirstFooterOA); VerifyDefaultHeaderOrFooter(hfSet.EvenHeaderOA); VerifyDefaultHeaderOrFooter(hfSet.EvenFooterOA); } }
/// ------------------------------------------------------------------------------------ /// <summary> /// Init the given Header/Footer Set by reading the given header/footer set XML node. /// </summary> /// <param name="hfSet">the PubHFSet object to initialize</param> /// <param name="hfSetNode">the given header/footer set XML node to read.</param> /// <param name="fMustInitFirstHf">if true, the First h and f must be initialized</param> /// <param name="fMustInitEvenHf">if true, the Even h and f must be initialized</param> /// <remarks>If the node is null, or any child nodes are absent, the results are: /// defaultHeader and defaultFooter will always be initialized. Other headers and footers /// are initialized if the fMustInit params are true, otherwise set to null.</remarks> /// ------------------------------------------------------------------------------------ private void ReadHeaderFooterSet(IPubHFSet hfSet, XmlNode hfSetNode, bool fMustInitFirstHf, bool fMustInitEvenHf) { //Set defaults, in case any nodes are missing hfSet.Name = "default headers & footers"; XmlNode defaultHeaderNode = null; XmlNode defaultFooterNode = null; XmlNode firstHeaderNode = null; XmlNode firstFooterNode = null; XmlNode evenHeaderNode = null; XmlNode evenFooterNode = null; //Gather all info in the h/f settings node, if it exists if (hfSetNode != null) { XmlAttributeCollection attributes = hfSetNode.Attributes; string name = GetString(attributes, "Name"); if (name != null) hfSet.Name = name; string description = GetString(attributes, "Description"); if (description != null) { // This seems wrong. We don't know why the PubHFSet.Description // is a BigString, but for now we'll build a TsString to populate it. ITsStrFactory strFactory = TsStrFactoryClass.Create(); hfSet.Description.UnderlyingTsString = strFactory.MakeString(description, m_scr.Cache.DefaultUserWs); } //get the header/footer xml nodes, if they exist defaultHeaderNode = hfSetNode.SelectSingleNode("DefaultHeader"); defaultFooterNode = hfSetNode.SelectSingleNode("DefaultFooter"); firstHeaderNode = hfSetNode.SelectSingleNode("FirstHeader"); firstFooterNode = hfSetNode.SelectSingleNode("FirstFooter"); evenHeaderNode = hfSetNode.SelectSingleNode("EvenHeader"); evenFooterNode = hfSetNode.SelectSingleNode("EvenFooter"); } // read the default header - required hfSet.DefaultHeaderOA = new PubHeader(); ReadHeaderOrFooter(hfSet.DefaultHeaderOA, defaultHeaderNode); // read the default footer - required hfSet.DefaultFooterOA = new PubHeader(); ReadHeaderOrFooter(hfSet.DefaultFooterOA, defaultFooterNode); // first header & footer are optional if (firstHeaderNode != null || firstFooterNode != null || fMustInitFirstHf) { hfSet.FirstHeaderOA = new PubHeader(); ReadHeaderOrFooter(hfSet.FirstHeaderOA, firstHeaderNode); hfSet.FirstFooterOA = new PubHeader(); ReadHeaderOrFooter(hfSet.FirstFooterOA, firstFooterNode); } else { hfSet.FirstHeaderOA = null; hfSet.FirstFooterOA = null; } // even header & footer are optional if (evenHeaderNode != null || evenFooterNode != null || fMustInitEvenHf) { hfSet.EvenHeaderOA = new PubHeader(); ReadHeaderOrFooter(hfSet.EvenHeaderOA, evenHeaderNode); hfSet.EvenFooterOA = new PubHeader(); ReadHeaderOrFooter(hfSet.EvenFooterOA, evenFooterNode); } else { hfSet.EvenHeaderOA = null; hfSet.EvenFooterOA = null; } }
/// ------------------------------------------------------------------------------------ /// <summary> /// Creates 2 fake HF sets for use in testing /// </summary> /// <returns>the created publication</returns> /// ------------------------------------------------------------------------------------ private IPublication CreateFakeHFSets() { // create a publication IPublication pub = Cache.ServiceLocator.GetInstance <IPublicationFactory>().Create(); Cache.LanguageProject.LexDbOA.PublicationsOC.Add(pub); IPubDivision pubDiv = Cache.ServiceLocator.GetInstance <IPubDivisionFactory>().Create(); pub.DivisionsOS.Add(pubDiv); // create the current HF set for the publication pubDiv.HFSetOA = Cache.ServiceLocator.GetInstance <IPubHFSetFactory>().Create(); IPubHeaderFactory phFactory = Cache.ServiceLocator.GetInstance <IPubHeaderFactory>(); pubDiv.HFSetOA.DefaultHeaderOA = phFactory.Create(); pubDiv.HFSetOA.DefaultFooterOA = phFactory.Create(); pubDiv.HFSetOA.FirstHeaderOA = phFactory.Create(); pubDiv.HFSetOA.FirstFooterOA = phFactory.Create(); pubDiv.HFSetOA.EvenHeaderOA = phFactory.Create(); pubDiv.HFSetOA.EvenFooterOA = phFactory.Create(); pubDiv.HFSetOA.Name = "Test HF Set of Matthew printed in Tabaluga"; // create a dummy HF set int userWs = Cache.WritingSystemFactory.UserWs; ITsStrFactory tsf = Cache.TsStrFactory; IPubHFSet hfset = Cache.ServiceLocator.GetInstance <IPubHFSetFactory>().Create(); m_hfSets.Add(hfset); hfset.Name = "Test HF Set created today"; hfset.Description = tsf.MakeString("This is a test HF set", userWs); hfset.DefaultHeaderOA = phFactory.Create(); hfset.DefaultFooterOA = phFactory.Create(); hfset.EvenHeaderOA = phFactory.Create(); hfset.EvenFooterOA = phFactory.Create(); hfset.FirstFooterOA = phFactory.Create(); hfset.FirstHeaderOA = phFactory.Create(); hfset.DefaultFooterOA.OutsideAlignedText = tsf.MakeString("outside text", userWs); hfset.DefaultFooterOA.CenteredText = tsf.MakeString("Song of songs", userWs); hfset.EvenHeaderOA.CenteredText = tsf.MakeString("Song even pages", userWs); hfset.EvenHeaderOA.InsideAlignedText = tsf.MakeString("Inside text", userWs); hfset.FirstFooterOA.InsideAlignedText = tsf.MakeString("Inside text", userWs); // create another dummy HF set IPubHFSet hfset2 = Cache.ServiceLocator.GetInstance <IPubHFSetFactory>().Create(); m_hfSets.Add(hfset2); hfset2.Name = "Test HF Set of Matthew printed in Tabaluga"; hfset2.Description = tsf.MakeString("This is another test HF set", userWs); hfset2.DefaultHeaderOA = phFactory.Create(); hfset2.DefaultFooterOA = phFactory.Create(); hfset2.EvenHeaderOA = phFactory.Create(); hfset2.EvenFooterOA = phFactory.Create(); hfset2.FirstFooterOA = phFactory.Create(); hfset2.FirstHeaderOA = phFactory.Create(); hfset2.DefaultHeaderOA.OutsideAlignedText = TsStringUtils.CreateOrcFromGuid(HeaderFooterVc.PageNumberGuid, FwObjDataTypes.kodtContextString, Cache.DefaultUserWs); hfset2.DefaultFooterOA.CenteredText = tsf.MakeString("Matthew", userWs); hfset2.EvenFooterOA.CenteredText = tsf.MakeString("From Reference", userWs); hfset2.EvenHeaderOA.InsideAlignedText = tsf.MakeString("nothing", userWs); hfset2.FirstFooterOA.InsideAlignedText = tsf.MakeString("Inside text", userWs); return(pub); }
/// ------------------------------------------------------------------------------------ /// <summary> /// Copy the details from the given pub H/F set to this one. /// </summary> /// <param name="copyFrom">The set to clone</param> /// ------------------------------------------------------------------------------------ public void CloneDetails(IPubHFSet copyFrom) { Description.UnderlyingTsString = copyFrom.Description.UnderlyingTsString; Name = copyFrom.Name; // if the header and the footer were null (if they are missing in the database) // then create them if (DefaultHeaderOA == null) DefaultHeaderOA = new PubHeader(); if (DefaultFooterOA == null) DefaultFooterOA = new PubHeader(); DefaultHeaderOA.OutsideAlignedText.UnderlyingTsString = copyFrom.DefaultHeaderOA.OutsideAlignedText.UnderlyingTsString; DefaultHeaderOA.CenteredText.UnderlyingTsString = copyFrom.DefaultHeaderOA.CenteredText.UnderlyingTsString; DefaultHeaderOA.InsideAlignedText.UnderlyingTsString = copyFrom.DefaultHeaderOA.InsideAlignedText.UnderlyingTsString; DefaultFooterOA.OutsideAlignedText.UnderlyingTsString = copyFrom.DefaultFooterOA.OutsideAlignedText.UnderlyingTsString; DefaultFooterOA.CenteredText.UnderlyingTsString = copyFrom.DefaultFooterOA.CenteredText.UnderlyingTsString; DefaultFooterOA.InsideAlignedText.UnderlyingTsString = copyFrom.DefaultFooterOA.InsideAlignedText.UnderlyingTsString; PubDivision owningDiv = new PubDivision(Cache, OwnerHVO); if (owningDiv.DifferentFirstHF) { // if the header and the footer were null (if they are the same as the odd page) // then create them if (FirstHeaderOA == null) FirstHeaderOA = new PubHeader(); if (FirstFooterOA == null) FirstFooterOA = new PubHeader(); FirstHeaderOA.OutsideAlignedText.UnderlyingTsString = copyFrom.FirstHeaderOA.OutsideAlignedText.UnderlyingTsString; FirstHeaderOA.CenteredText.UnderlyingTsString = copyFrom.FirstHeaderOA.CenteredText.UnderlyingTsString; FirstHeaderOA.InsideAlignedText.UnderlyingTsString = copyFrom.FirstHeaderOA.InsideAlignedText.UnderlyingTsString; FirstFooterOA.OutsideAlignedText.UnderlyingTsString = copyFrom.FirstFooterOA.OutsideAlignedText.UnderlyingTsString; FirstFooterOA.CenteredText.UnderlyingTsString = copyFrom.FirstFooterOA.CenteredText.UnderlyingTsString; FirstFooterOA.InsideAlignedText.UnderlyingTsString = copyFrom.FirstFooterOA.InsideAlignedText.UnderlyingTsString; } else { FirstHeaderOA = null; FirstFooterOA = null; } if (owningDiv.DifferentEvenHF) { // if the header and the footer were null (if they are the same as the odd page) // then create them if (EvenHeaderOA == null) EvenHeaderOA = new PubHeader(); if (EvenFooterOA == null) EvenFooterOA = new PubHeader(); EvenHeaderOA.OutsideAlignedText.UnderlyingTsString = copyFrom.EvenHeaderOA.OutsideAlignedText.UnderlyingTsString; EvenHeaderOA.CenteredText.UnderlyingTsString = copyFrom.EvenHeaderOA.CenteredText.UnderlyingTsString; EvenHeaderOA.InsideAlignedText.UnderlyingTsString = copyFrom.EvenHeaderOA.InsideAlignedText.UnderlyingTsString; EvenFooterOA.OutsideAlignedText.UnderlyingTsString = copyFrom.EvenFooterOA.OutsideAlignedText.UnderlyingTsString; EvenFooterOA.CenteredText.UnderlyingTsString = copyFrom.EvenFooterOA.CenteredText.UnderlyingTsString; EvenFooterOA.InsideAlignedText.UnderlyingTsString = copyFrom.EvenFooterOA.InsideAlignedText.UnderlyingTsString; } else { EvenHeaderOA = null; EvenFooterOA = null; } }
/// ------------------------------------------------------------------------------------ /// <summary> /// Init the given Header/Footer Set by reading the given header/footer set XML node. /// </summary> /// <param name="hfSet">the PubHFSet object to initialize</param> /// <param name="hfSetNode">the given header/footer set XML node to read.</param> /// <param name="fMustInitFirstHf">if true, the First h and f must be initialized</param> /// <param name="fMustInitEvenHf">if true, the Even h and f must be initialized</param> /// <remarks>If the node is null, or any child nodes are absent, the results are: /// defaultHeader and defaultFooter will always be initialized. Other headers and footers /// are initialized if the fMustInit params are true, otherwise set to null.</remarks> /// ------------------------------------------------------------------------------------ private void ReadHeaderFooterSet(IPubHFSet hfSet, XmlNode hfSetNode, bool fMustInitFirstHf, bool fMustInitEvenHf) { //Set defaults, in case any nodes are missing hfSet.Name = "default headers & footers"; XmlNode defaultHeaderNode = null; XmlNode defaultFooterNode = null; XmlNode firstHeaderNode = null; XmlNode firstFooterNode = null; XmlNode evenHeaderNode = null; XmlNode evenFooterNode = null; //Gather all info in the h/f settings node, if it exists if (hfSetNode != null) { XmlAttributeCollection attributes = hfSetNode.Attributes; string name = GetString(attributes, "Name"); if (name != null) hfSet.Name = name; string description = GetString(attributes, "Description"); if (description != null) { // We'll build a TsString to populate it. hfSet.Description = m_scr.Cache.TsStrFactory.MakeString(description, m_defUserWs); } //get the header/footer xml nodes, if they exist defaultHeaderNode = hfSetNode.SelectSingleNode("DefaultHeader"); defaultFooterNode = hfSetNode.SelectSingleNode("DefaultFooter"); firstHeaderNode = hfSetNode.SelectSingleNode("FirstHeader"); firstFooterNode = hfSetNode.SelectSingleNode("FirstFooter"); evenHeaderNode = hfSetNode.SelectSingleNode("EvenHeader"); evenFooterNode = hfSetNode.SelectSingleNode("EvenFooter"); } // read the default header - required hfSet.DefaultHeaderOA = m_cache.ServiceLocator.GetInstance<IPubHeaderFactory>().Create(); ReadHeaderOrFooter(hfSet.DefaultHeaderOA, defaultHeaderNode); // read the default footer - required hfSet.DefaultFooterOA = m_cache.ServiceLocator.GetInstance<IPubHeaderFactory>().Create(); ReadHeaderOrFooter(hfSet.DefaultFooterOA, defaultFooterNode); // first header & footer are optional if (firstHeaderNode != null || firstFooterNode != null || fMustInitFirstHf) { hfSet.FirstHeaderOA = m_cache.ServiceLocator.GetInstance<IPubHeaderFactory>().Create(); ReadHeaderOrFooter(hfSet.FirstHeaderOA, firstHeaderNode); hfSet.FirstFooterOA = m_cache.ServiceLocator.GetInstance<IPubHeaderFactory>().Create(); ReadHeaderOrFooter(hfSet.FirstFooterOA, firstFooterNode); } else { hfSet.FirstHeaderOA = null; hfSet.FirstFooterOA = null; } // even header & footer are optional if (evenHeaderNode != null || evenFooterNode != null || fMustInitEvenHf) { hfSet.EvenHeaderOA = m_cache.ServiceLocator.GetInstance<IPubHeaderFactory>().Create(); ReadHeaderOrFooter(hfSet.EvenHeaderOA, evenHeaderNode); hfSet.EvenFooterOA = m_cache.ServiceLocator.GetInstance<IPubHeaderFactory>().Create(); ReadHeaderOrFooter(hfSet.EvenFooterOA, evenFooterNode); } else { hfSet.EvenHeaderOA = null; hfSet.EvenFooterOA = null; } }