/// <summary> /// Create a deep clone of this EventListeners object. /// </summary> /// <remarks>A possible Attached Style wouldn't be cloned!</remarks> /// <returns> /// A clone of this object. /// </returns> public object Clone() { EventListeners eventListenersClone = null; if(this.Document != null && this.Node != null) { MainContentProcessor mcp = new MainContentProcessor(this.Document); eventListenersClone = mcp.CreateEventListeners(this.Node.CloneNode(true)); } return eventListenersClone; }
/// <summary> /// Reads the content. /// </summary> private void ReadContent() { /* * NOTICE: * Do not change this order! */ // 1. load content file this._document.XmlDoc = new XmlDocument(); this._document.XmlDoc.Load(Path.Combine(m_dirInfo.Dir, "content.xml")); // 2. Read local styles LocalStyleProcessor lsp = new LocalStyleProcessor(this._document, false); lsp.ReadStyles(); // 3. Import common styles and read common styles this.ImportCommonStyles(); lsp = new LocalStyleProcessor(this._document, true); lsp.ReadStyles(); if (_document is TextDocument) { FormsProcessor fp= new FormsProcessor(this._document); fp.ReadFormNodes(); TextDocument td = _document as TextDocument; td.VariableDeclarations.Clear(); XmlNode nodeText = td.XmlDoc.SelectSingleNode( TextDocumentHelper.OfficeTextPath, td.NamespaceManager); if (nodeText != null) { XmlNode nodeVarDecls = nodeText.SelectSingleNode("text:variable-decls", td.NamespaceManager); if (nodeVarDecls != null) { foreach (XmlNode vd in nodeVarDecls.CloneNode(true).SelectNodes("text:variable-decl", td.NamespaceManager)) { td.VariableDeclarations.Add(new VariableDecl(td, vd)); } nodeVarDecls.InnerXml = ""; } } } // 4. Register warnig events MainContentProcessor mcp = new MainContentProcessor(this._document); mcp.Warning += mcp_OnWarning; // 5. Read the content mcp.ReadContentNodes(); // 6.1 load master pages and styles for TextDocument if (this._document is TextDocument) { MasterPageFactory.RenameMasterStyles( ((TextDocument)this._document).DocumentStyles.Styles, this._document.XmlDoc, this._document.NamespaceManager); // Read the moved and renamed styles lsp = new LocalStyleProcessor(this._document, false); lsp.ReReadKnownAutomaticStyles(); new MasterPageFactory(m_dirInfo).FillFromXMLDocument(this._document as TextDocument); } }
/// <summary> /// Create a deep clone of this Header object. /// </summary> /// <remarks>A possible Attached Style wouldn't be cloned!</remarks> /// <returns> /// A clone of this object. /// </returns> public object Clone() { Header headerClone = null; if (this.Document != null && this.Node != null) { MainContentProcessor mcp = new MainContentProcessor(this.Document); headerClone = mcp.CreateHeader(this.Node.CloneNode(true)); } return headerClone; }
/// <summary> /// Gets the content for headers and footers. /// </summary> /// <param name="contentNode">The content node.</param> /// <param name="textDocument">The text document.</param> /// <returns>The contents as IContentCollection.</returns> public ContentCollection GetContentHeaderFooter(XmlNode contentNode, TextDocument textDocument) { ContentCollection contents = new ContentCollection(); if (contentNode != null && contentNode.HasChildNodes) { XmlNode node = null; if (textDocument.XmlDoc != contentNode.OwnerDocument) { node = textDocument.XmlDoc.ImportNode(contentNode, true); } else { node = contentNode; } MainContentProcessor mcp = new MainContentProcessor(textDocument); foreach(XmlNode nodeChild in node.ChildNodes) { IContent iContent = mcp.CreateContent(nodeChild); if (iContent != null) { if (iContent is AODL.Document.Content.Tables.Table) ((AODL.Document.Content.Tables.Table)iContent).BuildNode(); contents.Add(iContent); } } } return contents; }
/// <summary> /// Create a deep clone of this paragraph object. /// </summary> /// <remarks>A possible Attached Style wouldn't be cloned!</remarks> /// <returns> /// A clone of this object. /// </returns> public object Clone() { Paragraph pargaphClone = null; if (this.Document != null && this.Node != null) { MainContentProcessor mcp = new MainContentProcessor(this.Document); pargaphClone = mcp.CreateParagraph(this.Node.CloneNode(true)); } return pargaphClone; }
/// <summary> /// Reads the content. /// </summary> private void ReadContent() { try { this._document.XmlDoc = new XmlDocument(); this._document.XmlDoc.Load(dir+"\\content.xml"); // Apply tweaks to fix compatibility issues. This currently does the following: // 1. Expands repeated rows and columns. Assembly ass = Assembly.GetExecutingAssembly(); using ( Stream str = ass.GetManifestResourceStream( "AODL.Resources.OD.tweakcontent.xsl" ) ) using ( XmlReader xr = XmlReader.Create( str ) ) using ( MemoryStream ms = new MemoryStream() ) { XslCompiledTransform xsl = new XslCompiledTransform(); xsl.Load( xr ); using ( XmlWriter xw = XmlWriter.Create( ms ) ) { xsl.Transform( _document.XmlDoc, xw ); } ms.Position = 0; _document.XmlDoc.Load( ms ); } //Read local styles LocalStyleProcessor lsp = new LocalStyleProcessor(this._document, false); lsp.ReadStyles(); //Import common styles and read common styles this.ImportCommonStyles(); lsp = new LocalStyleProcessor(this._document, true); lsp.ReadStyles(); MainContentProcessor mcp = new MainContentProcessor(this._document); mcp.OnWarning +=new AODL.Document.Import.OpenDocument.NodeProcessors.MainContentProcessor.Warning(mcp_OnWarning); TextContentProcessor.OnWarning +=new AODL.Document.Import.OpenDocument.NodeProcessors.TextContentProcessor.Warning(TextContentProcessor_OnWarning); mcp.ReadContentNodes(); } catch(Exception ex) { throw; } }
private void CopyCellContens(Cell source, Cell destination) { foreach (IContent content in source.Content) { IContent clonedContent = new MainContentProcessor(content.Document) .CreateContent(content.Node); destination.Content.Add(clonedContent); } }