예제 #1
0
        /// <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);
			}
		}
예제 #3
0
		/// <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;
		}
예제 #5
0
		/// <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;
		}
예제 #6
0
        /// <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;
            }
        }
예제 #7
0
		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);
			}
		}