/// <summary>
        /// Renders a table cell for a <see cref="BocValueColumnDefinition"/>.
        /// </summary>
        protected override void RenderCellContents(
            BocColumnRenderingContext <TBocColumnDefinition> renderingContext,
            BocListDataRowRenderEventArgs dataRowRenderEventArgs,
            int rowIndex,
            bool showIcon)
        {
            ArgumentUtility.CheckNotNull("renderingContext", renderingContext);
            ArgumentUtility.CheckNotNull("dataRowRenderEventArgs", dataRowRenderEventArgs);

            int             originalRowIndex = dataRowRenderEventArgs.ListIndex;
            IBusinessObject businessObject   = dataRowRenderEventArgs.BusinessObject;

            IEditableRow editableRow = renderingContext.Control.EditModeController.GetEditableRow(originalRowIndex);

            bool hasEditModeControl  = editableRow != null && editableRow.HasEditControl(renderingContext.ColumnIndex);
            bool showEditModeControl = hasEditModeControl && !editableRow.GetEditControl(renderingContext.ColumnIndex).IsReadOnly;

            string valueColumnText = null;

            if (!showEditModeControl)
            {
                valueColumnText = renderingContext.ColumnDefinition.GetStringValue(businessObject);
            }

            bool enforceWidth     = RenderCropSpanBeginTag(renderingContext, showEditModeControl, valueColumnText);
            bool isCommandEnabled = RenderBeginTag(renderingContext, originalRowIndex, businessObject, valueColumnText);

            if (!hasEditModeControl)
            {
                if (showIcon)
                {
                    RenderCellIcon(renderingContext, businessObject);
                }

                RenderOtherIcons(renderingContext, businessObject);
            }
            if (showEditModeControl)
            {
                RenderCellDataForEditMode(renderingContext, businessObject, editableRow);
            }
            else
            {
                RenderValueColumnCellText(renderingContext, valueColumnText);
            }

            RenderEndTag(renderingContext, isCommandEnabled);
            RenderCropSpanEndTag(renderingContext, enforceWidth);
        }
Example #2
0
        /// <summary>
        /// Renders either the string value of the <paramref name="businessObject"/> or the edit mode controls,
        /// depending on <paramref name="showEditModeControl"/>
        /// </summary>
        /// <param name="renderingContext">The <see cref="BocColumnRenderingContext{BocColumnDefinition}"/>. </param>
        /// <param name="businessObject">The <see cref="IBusinessObject"/> for the current row.</param>
        /// <param name="showEditModeControl">Specifies if the edit controls will be rendered (<see langword="true"/>) or
        /// a string representation of <paramref name="businessObject"/> will be displayed (<see langword="false"/>).</param>
        /// <param name="editableRow">The <see cref="EditableRow"/> object used to actually render the edit row controls.
        /// May be <see langword="null"/> if <paramref name="showEditModeControl"/> is <see langword="false"/>.</param>
        protected override void RenderCellText(
            BocColumnRenderingContext <BocSimpleColumnDefinition> renderingContext,
            IBusinessObject businessObject,
            bool showEditModeControl,
            IEditableRow editableRow)
        {
            ArgumentUtility.CheckNotNull("renderingContext", renderingContext);
            ArgumentUtility.CheckNotNull("businessObject", businessObject);

            if (showEditModeControl)
            {
                RenderEditModeControl(renderingContext, businessObject, editableRow);
            }
            else
            {
                RenderValueColumnCellText(renderingContext, renderingContext.ColumnDefinition.GetStringValue(businessObject));
            }
        }
        public void RenderEditModeControl()
        {
            var firstObject = (IBusinessObject)((TypeWithReference)BusinessObject).FirstValue;

            IEditableRow editableRow = MockRepository.GenerateMock <IEditableRow>();

            editableRow.Stub(mock => mock.HasEditControl(0)).IgnoreArguments().Return(true);
            editableRow.Stub(mock => mock.GetEditControl(0)).IgnoreArguments().Return(MockRepository.GenerateStub <IBocTextValue>());
            editableRow.Expect(
                mock => mock.RenderSimpleColumnCellEditModeControl(
                    Html.Writer,
                    Column,
                    firstObject,
                    0));

            List.EditModeController.Stub(mock => mock.GetEditableRow(EventArgs.ListIndex)).Return(editableRow);

            IBocColumnRenderer renderer = new BocSimpleColumnRenderer(new FakeResourceUrlFactory(), RenderingFeatures.Default, _bocListCssClassDefinition);

            renderer.RenderDataCell(_renderingContext, 0, false, EventArgs);

            var document = Html.GetResultDocument();

            var td = Html.GetAssertedChildElement(document, "td", 0);

            Html.AssertAttribute(td, "class", _bocListCssClassDefinition.DataCell);

            var span = Html.GetAssertedChildElement(td, "span", 0);

            Html.AssertAttribute(span, "class", _bocListCssClassDefinition.Content);

            var clickSpan = Html.GetAssertedChildElement(span, "span", 0);

            Html.AssertAttribute(clickSpan, "onclick", "BocList_OnCommandClick();");

            editableRow.AssertWasCalled(
                mock => mock.RenderSimpleColumnCellEditModeControl(
                    Html.Writer,
                    Column,
                    firstObject,
                    0));
        }
        /// <summary>
        /// Renders a command control with an icon, text, or both.
        /// </summary>
        /// <remarks>
        /// A <see cref="BocCommandColumnDefinition"/> can contain both an object icon and a command icon. The former is rendered according to
        /// <paramref name="showIcon"/>, the latter if the column defintion's <see cref="BocCommandColumnDefinition.Icon"/> property contains
        /// an URL. Furthermore, the command text in <see cref="BocCommandColumnDefinition.Text"/> is rendered after any icons.
        /// </remarks>
        protected override void RenderCellContents(
            BocColumnRenderingContext <BocCommandColumnDefinition> renderingContext,
            BocListDataRowRenderEventArgs dataRowRenderEventArgs,
            int rowIndex,
            bool showIcon)
        {
            ArgumentUtility.CheckNotNull("renderingContext", renderingContext);
            ArgumentUtility.CheckNotNull("dataRowRenderEventArgs", dataRowRenderEventArgs);

            int             originalRowIndex = dataRowRenderEventArgs.ListIndex;
            IBusinessObject businessObject   = dataRowRenderEventArgs.BusinessObject;

            IEditableRow editableRow = renderingContext.Control.EditModeController.GetEditableRow(originalRowIndex);

            bool hasEditModeControl = editableRow != null && editableRow.HasEditControl(renderingContext.ColumnIndex);

            bool isCommandEnabled = RenderBeginTag(renderingContext, originalRowIndex, businessObject);

            RenderCellIcon(renderingContext, businessObject, hasEditModeControl, showIcon);
            RenderCellCommand(renderingContext);

            RenderEndTag(renderingContext, isCommandEnabled);
        }
        private void RenderEditModeControl(
            BocColumnRenderingContext <BocSimpleColumnDefinition> renderingContext, IBusinessObject businessObject, IEditableRow editableRow)
        {
            if (renderingContext.Control.HasClientScript)
            {
                renderingContext.Writer.AddAttribute(HtmlTextWriterAttribute.Onclick, c_onCommandClickScript);
            }
            renderingContext.Writer.RenderBeginTag(HtmlTextWriterTag.Span); // Begin span

            editableRow.RenderSimpleColumnCellEditModeControl(
                renderingContext.Writer,
                renderingContext.ColumnDefinition,
                businessObject,
                renderingContext.ColumnIndex);

            renderingContext.Writer.RenderEndTag(); // End span
        }
        /// <summary>
        /// Renders the edit mode control.
        /// </summary>
        /// <param name="renderingContext">The <see cref="BocColumnRenderingContext{BocColumnDefinition}"/>.</param>
        /// <param name="businessObject">The <see cref="IBusinessObject"/> whose property will be rendered.</param>
        /// <param name="editableRow">The <see cref="EditableRow"/> object used to actually render the edit row controls.</param>
        protected override void RenderCellDataForEditMode(
            BocColumnRenderingContext <BocSimpleColumnDefinition> renderingContext, IBusinessObject businessObject, IEditableRow editableRow)
        {
            ArgumentUtility.CheckNotNull("renderingContext", renderingContext);
            ArgumentUtility.CheckNotNull("businessObject", businessObject);
            ArgumentUtility.CheckNotNull("editableRow", editableRow);

            RenderEditModeControl(renderingContext, businessObject, editableRow);
        }
 protected abstract void RenderCellText(
     BocColumnRenderingContext <TBocColumnDefinition> renderingContext,
     IBusinessObject businessObject,
     bool showEditModeControl,
     IEditableRow editableRow);
Example #8
0
        /// <summary>
        /// Renders a string representation of the property of <paramref name="businessObject"/> that is shown in the column.
        /// </summary>
        /// <param name="renderingContext">The <see cref="BocColumnRenderingContext{BocColumnDefinition}"/>.</param>
        /// <param name="businessObject">The <see cref="IBusinessObject"/> whose property will be rendered.</param>
        /// <param name="showEditModeControl">Prevents rendering if <see langword="true"/>.</param>
        /// <param name="editableRow">Ignored.</param>
        protected override void RenderCellText(BocColumnRenderingContext <BocCompoundColumnDefinition> renderingContext, IBusinessObject businessObject, bool showEditModeControl, IEditableRow editableRow)
        {
            ArgumentUtility.CheckNotNull("renderingContext", renderingContext);
            ArgumentUtility.CheckNotNull("businessObject", businessObject);

            string valueColumnText = null;

            if (!showEditModeControl)
            {
                valueColumnText = renderingContext.ColumnDefinition.GetStringValue(businessObject);
            }

            RenderValueColumnCellText(renderingContext, valueColumnText);
        }
Example #9
0
        /// <summary>
        /// Renders a string representation of the property of <paramref name="businessObject"/> that is shown in the column.
        /// </summary>
        /// <param name="renderingContext">The <see cref="BocColumnRenderingContext{BocColumnDefinition}"/>.</param>
        /// <param name="businessObject">The <see cref="IBusinessObject"/> whose property will be rendered.</param>
        /// <param name="editableRow">Ignored.</param>
        protected override void RenderCellDataForEditMode(
            BocColumnRenderingContext <BocCompoundColumnDefinition> renderingContext, IBusinessObject businessObject, IEditableRow editableRow)
        {
            ArgumentUtility.CheckNotNull("renderingContext", renderingContext);
            ArgumentUtility.CheckNotNull("businessObject", businessObject);

            RenderValueColumnCellText(renderingContext, renderingContext.ColumnDefinition.GetStringValue(businessObject));
        }
 protected abstract void RenderCellDataForEditMode(
     BocColumnRenderingContext <TBocColumnDefinition> renderingContext, IBusinessObject businessObject, IEditableRow editableRow);