/******************************************************************************* * You may amend and distribute as you like, but don't remove this header! * * EPPlus provides server-side generation of Excel 2007/2010 spreadsheets. * See http://www.codeplex.com/EPPlus for details. * * Copyright (C) 2011 Jan Källman * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU Lesser General Public License for more details. * * The GNU Lesser General Public License can be viewed at http://www.opensource.org/licenses/lgpl-license.php * If you unfamiliar with this license or have questions about it, here is an http://www.gnu.org/licenses/gpl-faq.html * * All code and executables are provided "as is" with no warranty either express or implied. * The author accepts no liability for any damage or loss of business that this product may cause. * * Code change notes: * * Author Change Date * ****************************************************************************** * Jan Källman Initial Release 2009-10-01 * Jan Källman License changed GPL-->LGPL 2011-12-16 *******************************************************************************/ using System; using System.Collections.Generic; using System.Text; using System.Xml; namespace OfficeOpenXml.Style.XmlAccess { /// /// Xml access class for border top level /// public sealed class ExcelBorderXml : StyleXmlHelper { internal ExcelBorderXml(XmlNamespaceManager nameSpaceManager) : base(nameSpaceManager) { } internal ExcelBorderXml(XmlNamespaceManager nsm, XmlNode topNode) : base(nsm, topNode) { _left = new ExcelBorderItemXml(nsm, topNode.SelectSingleNode(leftPath, nsm)); _right = new ExcelBorderItemXml(nsm, topNode.SelectSingleNode(rightPath, nsm)); _top = new ExcelBorderItemXml(nsm, topNode.SelectSingleNode(topPath, nsm)); _bottom = new ExcelBorderItemXml(nsm, topNode.SelectSingleNode(bottomPath, nsm)); _diagonal = new ExcelBorderItemXml(nsm, topNode.SelectSingleNode(diagonalPath, nsm)); } internal override string Id { get { return Left.Id + Right.Id + Top.Id + Bottom.Id + Diagonal.Id + DiagonalUp.ToString() + DiagonalDown.ToString(); } } const string leftPath = "d:left"; ExcelBorderItemXml _left = null; /// /// Left border style properties /// public ExcelBorderItemXml Left { get { return _left; } internal set { _left = value; } } const string rightPath = "d:right"; ExcelBorderItemXml _right = null; /// /// Right border style properties /// public ExcelBorderItemXml Right { get { return _right; } internal set { _right = value; } } const string topPath = "d:top"; ExcelBorderItemXml _top = null; /// /// Top border style properties /// public ExcelBorderItemXml Top { get { return _top; } internal set { _top = value; } } const string bottomPath = "d:bottom"; ExcelBorderItemXml _bottom = null; /// /// Bottom border style properties /// public ExcelBorderItemXml Bottom { get { return _bottom; } internal set { _bottom = value; } } const string diagonalPath = "d:diagonal"; ExcelBorderItemXml _diagonal = null; /// /// Diagonal border style properties /// public ExcelBorderItemXml Diagonal { get { return _diagonal; } internal set { _diagonal = value; } } const string diagonalUpPath = "@diagonalUp"; bool _diagonalUp = false; /// /// Diagonal up border /// public bool DiagonalUp { get { return _diagonalUp; } internal set { _diagonalUp = value; } } const string diagonalDownPath = "@diagonalDown"; bool _diagonalDown = false; /// /// Diagonal down border /// public bool DiagonalDown { get { return _diagonalDown; } internal set { _diagonalDown = value; } } internal ExcelBorderXml Copy() { ExcelBorderXml newBorder = new ExcelBorderXml(NameSpaceManager); newBorder.Bottom = _bottom.Copy(); newBorder.Diagonal = _diagonal.Copy(); newBorder.Left = _left.Copy(); newBorder.Right = _right.Copy(); newBorder.Top = _top.Copy(); newBorder.DiagonalUp = _diagonalUp; newBorder.DiagonalDown = _diagonalDown; return newBorder; } internal override XmlNode CreateXmlNode(XmlNode topNode) { TopNode = topNode; CreateNode(leftPath); topNode.AppendChild(_left.CreateXmlNode(TopNode.SelectSingleNode(leftPath, NameSpaceManager))); CreateNode(rightPath); topNode.AppendChild(_right.CreateXmlNode(TopNode.SelectSingleNode(rightPath, NameSpaceManager))); CreateNode(topPath); topNode.AppendChild(_top.CreateXmlNode(TopNode.SelectSingleNode(topPath, NameSpaceManager))); CreateNode(bottomPath); topNode.AppendChild(_bottom.CreateXmlNode(TopNode.SelectSingleNode(bottomPath, NameSpaceManager))); CreateNode(diagonalPath); topNode.AppendChild(_diagonal.CreateXmlNode(TopNode.SelectSingleNode(diagonalPath, NameSpaceManager))); if (_diagonalUp) { SetXmlNodeString(diagonalUpPath, "1"); } if (_diagonalDown) { SetXmlNodeString(diagonalDownPath, "1"); } return topNode; } } }