An image.
Inheritance: System.Web.UI.WebControls.WebControl, ControlTreeDataLoader
        WebControl ActionControlStyle.SetUpControl(WebControl control, string defaultText, Unit width, Unit height, Action <Unit> widthSetter)
        {
            widthSetter(width);
            control.CssClass = control.CssClass.ConcatenateWithSpace("ewfBlockContainer " + CssElementCreator.AllStylesClass + " " + CssElementCreator.BoxStyleClass);

            var span = new HtmlGenericControl("span");

            span.Attributes.Add("class", CssElementCreator.BoxStyleSideAndBackgroundImageBoxClass);
            span.Style.Add("margin-left", leftImageWidth.Value + "px");
            span.Style.Add("margin-right", rightImageWidth.Value + "px");
            span.Style.Add("background-image", control.GetClientUrl(backgroundImageUrl));

            var leftImage = new EwfImage(new ExternalResourceInfo(leftImageUrl))
            {
                CssClass = "left"
            };

            leftImage.Style.Add("margin-left", -leftImageWidth + "px");

            var rightImage = new EwfImage(new ExternalResourceInfo(rightImageUrl))
            {
                CssClass = "right"
            };

            rightImage.Style.Add("margin-right", -rightImageWidth + "px");

            var label = new Label {
                Text = Text.Length > 0 ? Text : defaultText, CssClass = CssElementCreator.BoxStyleTextClass
            };

            label.Style.Add("line-height", imageHeight + "px");

            control.Controls.Add(span.AddControlsReturnThis(leftImage, rightImage, label));
            return(label);
        }
        WebControl ActionControlStyle.SetUpControl(WebControl control, string defaultText, Unit width, Unit height, Action <Unit> widthSetter)
        {
            control.CssClass = control.CssClass.ConcatenateWithSpace(CssElementCreator.AllStylesClass + " " + CssElementCreator.ImageStyleClass);

            var image = new EwfImage(imageInfo)
            {
                AlternateText = AlternateText
            };

            if (SizesToAvailableWidth)
            {
                control.CssClass  = control.CssClass.ConcatenateWithSpace("ewfBlockContainer");
                image.IsAutoSizer = true;
            }
            else
            {
                image.Width  = width;
                image.Height = height;
            }

            if (rolloverImageInfo != null && getClientUrl(control, rolloverImageInfo) != getClientUrl(control, imageInfo))
            {
                // NOTE: These events should be handled at the PostBackButton level instead of the image element level so rolling over the PostBackButton border works.
                image.AddJavaScriptEventScript(JavaScriptWriting.JsWritingMethods.onmouseover, "src='" + getClientUrl(control, rolloverImageInfo) + "'");
                image.AddJavaScriptEventScript(JavaScriptWriting.JsWritingMethods.onmouseout, "src='" + getClientUrl(control, imageInfo) + "'");
            }

            control.Controls.Add(image);
            return(null);
        }
        WebControl ActionControlStyle.SetUpControl( WebControl control, string defaultText, Unit width, Unit height, Action<Unit> widthSetter )
        {
            control.CssClass = control.CssClass.ConcatenateWithSpace( CssElementCreator.AllStylesClass + " " + CssElementCreator.ImageStyleClass );

            var image = new EwfImage( imageInfo ) { AlternateText = AlternateText };
            if( SizesToAvailableWidth ) {
                control.CssClass = control.CssClass.ConcatenateWithSpace( "ewfBlockContainer" );
                image.IsAutoSizer = true;
            }
            else {
                image.Width = width;
                image.Height = height;
            }

            if( rolloverImageInfo != null && getClientUrl( control, rolloverImageInfo ) != getClientUrl( control, imageInfo ) ) {
                // NOTE: These events should be handled at the PostBackButton level instead of the image element level so rolling over the PostBackButton border works.
                image.AddJavaScriptEventScript( JavaScriptWriting.JsWritingMethods.onmouseover, "src='" + getClientUrl( control, rolloverImageInfo ) + "'" );
                image.AddJavaScriptEventScript( JavaScriptWriting.JsWritingMethods.onmouseout, "src='" + getClientUrl( control, imageInfo ) + "'" );
            }

            control.Controls.Add( image );
            return null;
        }
        WebControl ActionControlStyle.SetUpControl( WebControl control, string defaultText, Unit width, Unit height, Action<Unit> widthSetter )
        {
            widthSetter( width );
            control.CssClass = control.CssClass.ConcatenateWithSpace( "ewfBlockContainer " + CssElementCreator.AllStylesClass + " " + CssElementCreator.BoxStyleClass );

            var span = new HtmlGenericControl( "span" );
            span.Attributes.Add( "class", CssElementCreator.BoxStyleSideAndBackgroundImageBoxClass );
            span.Style.Add( "margin-left", leftImageWidth.Value + "px" );
            span.Style.Add( "margin-right", rightImageWidth.Value + "px" );
            span.Style.Add( "background-image", control.GetClientUrl( backgroundImageUrl ) );

            var leftImage = new EwfImage( new ExternalResourceInfo( leftImageUrl ) ) { CssClass = "left" };
            leftImage.Style.Add( "margin-left", -leftImageWidth + "px" );

            var rightImage = new EwfImage( new ExternalResourceInfo( rightImageUrl ) ) { CssClass = "right" };
            rightImage.Style.Add( "margin-right", -rightImageWidth + "px" );

            var label = new Label { Text = Text.Length > 0 ? Text : defaultText, CssClass = CssElementCreator.BoxStyleTextClass };
            label.Style.Add( "line-height", imageHeight + "px" );

            control.Controls.Add( span.AddControlsReturnThis( leftImage, rightImage, label ) );
            return label;
        }