2013年11月24日日曜日

ConnectorAccessor

using Microsoft.Office.Core;
using OfficeExcel = Microsoft.Office.Interop.Excel;

namespace Core.File.Excel
{
    /// <summary>
    /// ExcelのConnectorアクセサー
    /// </summary>
    public class ConnectorAccessor : BaseShapeAccessor
    {
        #region 構築・破棄

        /// <summary>
        /// コンストラクタ
        /// </summary>
        /// <param name="shape"></param>
        /// <param name="application">ExcelApplicationアクセサー</param>
        private ConnectorAccessor(OfficeExcel.Shape shape, ExcelAccessor application)
            : base(shape, application)
        {
        }

        /// <summary>
        /// 構成子
        /// </summary>
        /// <param name="shape"></param>
        /// <param name="application">ExcelApplicationアクセサー</param>
        /// <returns></returns>
        internal static ConnectorAccessor GetAccessor(OfficeExcel.Shape shape, ExcelAccessor application)
        {
            return new ConnectorAccessor(shape, application);
        }

        #endregion

        #region メソッド

        /// <summary>
        /// コネクタに接続されている図形間で、コネクタの距離が最も短くなるように、コネクタの経路を変更します。
        /// </summary>
        public void RerouteConnections()
        {
            Shape.RerouteConnections();
        }

        #endregion

        #region Line

        /// <summary>線の先の矢印の形</summary>
        public ExcelArrowheadStyle BeginArrowheadStyle
        {
            get
            {
                return (ExcelArrowheadStyle)Line.BeginArrowheadStyle;
            }
            set
            {
                Line.BeginArrowheadStyle = (MsoArrowheadStyle)value;
            }
        }

        /// <summary>線の先の矢印の形</summary>
        public ExcelArrowheadStyle EndArrowheadStyle
        {
            get
            {
                return (ExcelArrowheadStyle)Line.EndArrowheadStyle;
            }
            set
            {
                Line.EndArrowheadStyle = (MsoArrowheadStyle)value;
            }
        }

        /// <summary>線の矢印の終点部の幅</summary>
        public ExcelArrowheadWidth BeginArrowheadWidth
        {
            get
            {
                return (ExcelArrowheadWidth)Line.BeginArrowheadWidth;
            }
            set
            {
                Line.BeginArrowheadWidth = (MsoArrowheadWidth)value;
            }
        }

        /// <summary>線の矢印の終点部の幅</summary>
        public ExcelArrowheadWidth EndArrowheadWidth
        {
            get
            {
                return (ExcelArrowheadWidth)Line.EndArrowheadWidth;
            }
            set
            {
                Line.EndArrowheadWidth = (MsoArrowheadWidth)value;
            }
        }

        /// <summary>線の矢印の終点部の長さ</summary>
        public ExcelArrowheadLength BeginArrowheadLength
        {
            get
            {
                return (ExcelArrowheadLength)Line.BeginArrowheadLength;
            }
            set
            {
                Line.BeginArrowheadLength = (MsoArrowheadLength)value;
            }
        }

        /// <summary>線の矢印の終点部の長さ</summary>
        public ExcelArrowheadLength EndArrowheadLength
        {
            get
            {
                return (ExcelArrowheadLength)Line.EndArrowheadLength;
            }
            set
            {
                Line.EndArrowheadLength = (MsoArrowheadLength)value;
            }
        }

        #endregion

        #region ConnectorFormat

        /// <summary>ConnectorFormat</summary>
        private OfficeExcel.ConnectorFormat connectorFormat;
        /// <summary>ConnectorFormat</summary>
        private OfficeExcel.ConnectorFormat ConnectorFormat
        {
            get
            {
                if (this.connectorFormat == null)
                {
                    this.connectorFormat = Shape.ConnectorFormat;
                    ReleaseComObjects.Add(this.connectorFormat);
                }
                return this.connectorFormat;
            }
        }

        /// <summary>
        /// 指定したコネクタの始点を、指定した図形に接続します。
        /// </summary>
        /// <param name="ConnectedShape">コネクタの始点を接続する図形</param>
        /// <param name="ConnectionSite">図形の結合点</param>
        public void BeginConnect(ShapeAccessor connectedShape, int connectionSite)
        {
            ConnectorFormat.BeginConnect(GetShape(connectedShape), connectionSite);
        }

        /// <summary>
        /// 指定したコネクタの終点を、指定した図形に接続します。
        /// </summary>
        /// <param name="ConnectedShape">コネクタの終点を接続する図形</param>
        /// <param name="ConnectionSite">図形の結合点</param>
        public void EndConnect(ShapeAccessor connectedShape, int connectionSite)
        {
            ConnectorFormat.EndConnect(GetShape(connectedShape), connectionSite);
        }

        #endregion
    }

    #region 列挙型

    /// <summary>コネクタの種類</summary>
    public enum ExcelConnectorType
    {
        /// <summary>曲線コネクタ</summary>
        msoConnectorCurve = MsoConnectorType.msoConnectorCurve,
        /// <summary>カギ線コネクタ</summary>
        msoConnectorElbow = MsoConnectorType.msoConnectorElbow,
        /// <summary>直線コネクタ</summary>
        msoConnectorStraight = MsoConnectorType.msoConnectorStraight,
        /// <summary>値の取得のみ可能です。他の状態の組み合わせを示します。</summary>
        msoConnectorTypeMixed = MsoConnectorType.msoConnectorTypeMixed
    }

    /// <summary>線の先の矢印の形</summary>
    public enum ExcelArrowheadStyle
    {
        /// <summary>ひし形矢印</summary>
        ArrowheadDiamond = MsoArrowheadStyle.msoArrowheadDiamond,
        /// <summary>矢印なし</summary>
        ArrowheadNone = MsoArrowheadStyle.msoArrowheadNone,
        /// <summary>開いた矢印</summary>
        ArrowheadOpen = MsoArrowheadStyle.msoArrowheadOpen,
        /// <summary>円形矢印</summary>
        ArrowheadOval = MsoArrowheadStyle.msoArrowheadOval,
        /// <summary>鋭い矢印</summary>
        ArrowheadStealth = MsoArrowheadStyle.msoArrowheadStealth,
        /// <summary>値の取得のみ可能です。他の状態の組み合わせを示します。</summary>
        ArrowheadStyleMixed = MsoArrowheadStyle.msoArrowheadStyleMixed,
        /// <summary>三角矢印</summary>
        ArrowheadTriangle = MsoArrowheadStyle.msoArrowheadTriangle
    }

    /// <summary>線の矢印の終点部の幅</summary>
    public enum ExcelArrowheadWidth
    {
        /// <summary>小</summary>
        ArrowheadNarrow = MsoArrowheadWidth.msoArrowheadNarrow,
        /// <summary>大</summary>
        ArrowheadWide = MsoArrowheadWidth.msoArrowheadWide,
        /// <summary>中</summary>
        ArrowheadWidthMedium = MsoArrowheadWidth.msoArrowheadWidthMedium,
        /// <summary>値の取得のみ可能です。他の状態の組み合わせを示します。</summary>
        ArrowheadWidthMixed = MsoArrowheadWidth.msoArrowheadWidthMixed
    }

    /// <summary>線の矢印の終点部の長さ</summary>
    public enum ExcelArrowheadLength
    {
        /// <summary>中</summary>
        ArrowheadLengthMedium = MsoArrowheadLength.msoArrowheadLengthMedium,
        /// <summary>値の取得のみ可能です。指定した図形範囲に他の状態の組み合わせを示します。</summary>
        ArrowheadLengthMixed = MsoArrowheadLength.msoArrowheadLengthMixed,
        /// <summary>長</summary>
        ArrowheadLong = MsoArrowheadLength.msoArrowheadLong,
        /// <summary>短</summary>
        ArrowheadShort = MsoArrowheadLength.msoArrowheadShort
    }

    #endregion
}

0 件のコメント:

コメントを投稿