/// <summary>
        /// Shows the text style edtior for the specified styleable node
        /// </summary>
        /// <param name="styleable"></param>
        protected void ShowTextStyleEditor(INStyleable styleable)
        {
            if (styleable == null)
            {
                return;
            }

            NTextStyle textStyle    = styleable.ComposeTextStyle();
            NTextStyle newTextStyle = null;

            if (NTextStyleTypeEditor.Edit(textStyle, textStyle != NStyle.GetTextStyle(styleable), out newTextStyle))
            {
                NStyle.SetTextStyle(styleable, newTextStyle);
                document.SmartRefreshAllViews();
            }
        }
        /// <summary>
        /// Shows the bridge style edtior for the specified styleable node
        /// </summary>
        /// <param name="styleable"></param>
        protected void ShowBridgeStyleEditor(INStyleable styleable)
        {
            if (styleable == null)
            {
                return;
            }

            NBridgeStyle bridgeStyle    = styleable.ComposeBridgeStyle();
            NBridgeStyle newBridgeStyle = null;

            if (NBridgeStyleTypeEditor.Edit(bridgeStyle, out newBridgeStyle, bridgeStyle != NStyle.GetBridgeStyle(styleable)))
            {
                NStyle.SetBridgeStyle(styleable, newBridgeStyle);
                document.RefreshAllViews();
            }
        }
        /// <summary>
        /// Shows the shadow style editor for the specified styleable node
        /// </summary>
        /// <param name="styleable"></param>
        protected void ShowShadowStyleEditor(INStyleable styleable)
        {
            if (styleable == null)
            {
                return;
            }

            NShadowStyle shadowStyle    = styleable.ComposeShadowStyle();
            NShadowStyle newShadowStyle = null;

            if (NShadowStyleTypeEditor.Edit(shadowStyle, out newShadowStyle))
            {
                NStyle.SetShadowStyle(styleable, newShadowStyle);
                document.RefreshAllViews();
            }
        }
        /// <summary>
        /// Shows the fill style editor for the specified styleable node
        /// </summary>
        /// <param name="styleable"></param>
        protected void ShowFillStyleEditor(INStyleable styleable)
        {
            if (styleable == null)
            {
                return;
            }

            NFillStyle fillStyle    = styleable.ComposeFillStyle();
            NFillStyle newFillStyle = null;

            if (NFillStyleTypeEditor.Edit(fillStyle, out newFillStyle))
            {
                NStyle.SetFillStyle(styleable, newFillStyle);
                document.RefreshAllViews();
            }
        }
        /// <summary>
        /// Shows the end arrowhead style editor for the specified styleable node
        /// </summary>
        /// <param name="styleable"></param>
        protected void ShowEndArrowheadStyleEditor(INStyleable styleable)
        {
            if (styleable == null)
            {
                return;
            }

            NArrowheadStyle arrowheadStyle    = styleable.ComposeEndArrowheadStyle();
            NArrowheadStyle newArrowheadStyle = null;

            if (NArrowheadStyleTypeEditor.Edit(arrowheadStyle, out newArrowheadStyle, false, arrowheadStyle != NStyle.GetEndArrowheadStyle(styleable)))
            {
                NStyle.SetEndArrowheadStyle(styleable, newArrowheadStyle);
                document.RefreshAllViews();
            }
        }