コード例 #1
0
        public ProductCustomNode()
        {
            // level 0
            // count in category
            _count               = new TextElement();
            _count.Style         = new Style();
            _count.Style.Margins = new Thickness(2);
            // level 1
            // lable style
            var lStyle = new Style();

            lStyle.HorizontalAlignment = Alignment.Far;
            lStyle.Margins             = new Thickness(1);
            lStyle.Font = new Font("Calibri", 9, FontStyle.Regular);
            // elements style
            _eStyle         = new Style();
            _eStyle.Margins = new Thickness(1);
            _eStyle.Font    = new Font("Calibri", 9, FontStyle.Regular);
            // init elements
            _quantityPerUnit = new TextElement(_eStyle.Clone());
            _unitPrice       = new TextElement(_eStyle.Clone());
            _unitInStock     = new TextElement(_eStyle.Clone());
            _unitsOnOrder    = new TextElement(_eStyle.Clone());
            _reorderLevel    = new TextElement(_eStyle.Clone());
            // init a grid for text elements
            _gp = new GridPanel();
            _gp.Columns.Add(); // labels
            _gp.Columns[0].Width = 100;
            _gp.Columns.Add(); // text
            _gp.Columns[1].Width = 120;

            _gp.Rows.Add(); // ReorderLevel
            _gp[0, 0].Element = new TextElement(lStyle, "Reorder level:");
            _gp[0, 1].Element = _reorderLevel;
            _gp.Rows.Add(); // UnitPrice
            _gp[1, 0].Element = new TextElement(lStyle, "Unit price:");
            _gp[1, 1].Element = _unitPrice;
            _gp.Rows.Add(); // QuantityPerUnit
            _gp[2, 0].Element = new TextElement(lStyle, "Quantity per unit:");
            _gp[2, 1].Element = _quantityPerUnit;

            _gp.Columns.Add(); // labels
            _gp.Columns[2].Width = 100;
            _gp.Columns.Add(); // text
            // UnitsInStock
            _gp[0, 2].Element = new TextElement(lStyle, "Units in stock:");
            _gp[0, 3].Element = _unitInStock;
            // UnitsOnOrder
            _gp[1, 2].Element = new TextElement(lStyle, "Units on order:");
            _gp[1, 3].Element = _unitsOnOrder;
        }
コード例 #2
0
 public static Style AlignTopLeft(this Style style)
 {
     return(style
            .Clone()
            .Set(Label.YAlignProperty, TextAlignment.Start)
            .Set(Label.XAlignProperty, TextAlignment.Start));
 }
コード例 #3
0
 // Partial copy constructor
 public XhtmlStyleClass(Style source, StyleFilter filter)
 {
     _controlStyle = (Style)source.Clone();
     // Filter has bits set to zero for properties which don't need
     // to be written due to style inheritance from parent.
     _filter = filter;
 }
コード例 #4
0
ファイル: Label.cs プロジェクト: Zebra/iFactr-Android
        /// <summary>
        /// Creates a deep-copy clone of this instance.
        /// </summary>
        protected override object CloneOverride()
        {
            var clone = (Label)base.CloneOverride();

            clone.Style = Style.Clone();
            return(clone);
        }
コード例 #5
0
        private static Style MakeShadowsOpaque(Style selectedStyle)
        {
            Style converted = selectedStyle.Clone();

            converted.ShadowColor = DisableTransparency(converted.ShadowColor);
            return(converted);
        }
コード例 #6
0
 public static Style AlignBottomRight(this Style style)
 {
     return(style
            .Clone()
            .Set(Label.YAlignProperty, TextAlignment.End)
            .Set(Label.XAlignProperty, TextAlignment.End));
 }
コード例 #7
0
ファイル: DomElement.cs プロジェクト: EvKapskiy/ProgNet2012
        public override DomElement Clone()
        {
            var clone = new DomElement();

            clone.nodeNameID = nodeNameID;

            if (HasAttributes)
            {
                clone.Attributes = Attributes.Clone(clone);
            }
            if (HasClasses)
            {
                clone._Classes = new List <ushort>(_Classes);
            }
            if (HasStyles)
            {
                clone.Style = Style.Clone(clone);
            }
            // will not create ChildNodes lazy object unless results are returned (this is why we don't use AddRange)
            foreach (IDomObject child in CloneChildren())
            {
                clone.ChildNodes.Add(child);
            }

            return(clone);
        }
コード例 #8
0
 public static Style AlignCenterCenter(this Style style)
 {
     return(style
            .Clone()
            .Set(Label.YAlignProperty, TextAlignment.Center)
            .Set(Label.XAlignProperty, TextAlignment.Center));
 }
コード例 #9
0
ファイル: CSSFont.cs プロジェクト: Winster332/Quantum
 public object Clone()
 {
     return(new CSSFont
     {
         Style = Style.Clone() as CSSFontStyle,
         Variant = Variant.Clone() as CSSFontVariant,
         Weight = Weight.Clone() as CSSFontWeight,
     });
 }
コード例 #10
0
        protected void RenderInternal(Graphics g, Map map, BoundingBox envelope, RenderType rendertype)
        {
            if (!Style.Enabled)
            {
                return;
            }

            VectorStyle           vStyle = Style.Clone();
            Collection <Geometry> geoms;

            lock (_dataSource)
            {
                bool alreadyOpen = DataSource.IsOpen;

                if (!alreadyOpen)
                {
                    DataSource.Open();
                }

                geoms = DataSource.GetGeometriesInView(envelope);
                Console.Out.WriteLine(string.Format("Layer {0}, NumGeometries {1}", LayerName, geoms.Count));

                if (!alreadyOpen)
                {
                    DataSource.Close();
                }
            }
            if (CoordinateTransformation != null)
            {
                for (int i = 0; i < geoms.Count; i++)
#if !DotSpatialProjections
                { geoms[i] = GeometryTransform.TransformGeometry(geoms[i], CoordinateTransformation.MathTransform); }
            }
#else
                { geoms[i] = GeometryTransform.TransformGeometry(geoms[i], CoordinateTransformation.Source, CoordinateTransformation.Target); }
#endif
            if (vStyle.LineSymbolizer != null)
            {
                vStyle.LineSymbolizer.Begin(g, map, geoms.Count);
            }
            VectorRenderer.width = vStyle.Outline.Width;
            for (int i = 0; i < geoms.Count; i++)
            {
                if (geoms[i] != null)
                {
                    RenderGeometry(g, map, geoms[i], vStyle, rendertype);
                }
            }

            if (vStyle.LineSymbolizer != null)
            {
                vStyle.LineSymbolizer.Symbolize(g, map);
                vStyle.LineSymbolizer.End(g, map);
            }
        }
コード例 #11
0
        public override HtmlTag DeepClone(Span newSpan)
        {
            T ret = new T
            {
                Priority = Priority,
                Span     = newSpan,
                Style    = Style.Clone(),
            };

            return(ret);
        }
コード例 #12
0
ファイル: MathAtomTest.cs プロジェクト: zzxxhhzxh/CSharpMath
        public void TestCopyStyle()
        {
            var style = new Style(LineStyle.Script);

            Assert.Equal(LineStyle.Script, style.LineStyle);

            var clone = style.Clone(false);

            CheckClone(clone, style);
            Assert.Equal(clone.LineStyle, style.LineStyle);
        }
コード例 #13
0
        public object Clone()
        {
            var res = (VectorLayer)MemberwiseClone();

            res.Style = Style.Clone();
            if (Theme is ICloneable)
            {
                res.Theme = (IThemeEx)((ICloneable)Theme).Clone();
            }
            return(res);
        }
コード例 #14
0
        /// <summary>
        /// Clones the layer
        /// </summary>
        /// <returns>cloned object</returns>
        public override object Clone()
        {
            var vectorLayer = (VectorLayer)base.Clone();

            vectorLayer.Style           = (VectorStyle)Style.Clone();
            vectorLayer.SmoothingMode   = SmoothingMode;
            vectorLayer.ClippingEnabled = ClippingEnabled;


            return(vectorLayer);
        }
コード例 #15
0
 public sealed override Layer Clone()
 {
     return(new EllipseLayer(Name, Height, Width, Fill, Stroke, StrokeThickness)
     {
         IsLocked = IsLocked,
         IsVisible = IsVisible,
         Opacity = Opacity,
         Style = Style.Clone(),
         X = X,
         Y = Y,
     });
 }
        public void CalculateCurrentStyle(TimeSpan position)
        {
            var activeAnimations = Animations.WhereActiveAtPosition(position);

            if (activeAnimations.Any())
            {
                var animatedStyle = Style.Clone();
                activeAnimations.ForEach(i => i.MergeStyle(animatedStyle));
                CurrentStyle = animatedStyle;
            }

            Children.WhereActiveAtPosition(position)
            .ForEach(i => i.CalculateCurrentStyle(position));
        }
コード例 #17
0
        /// <summary>
        /// Creates a new Angular2LineDimension that is a copy of the current instance.
        /// </summary>
        /// <returns>A new Angular2LineDimension that is a copy of this instance.</returns>
        public override object Clone()
        {
            Angular2LineDimension entity = new Angular2LineDimension
            {
                //EntityObject properties
                Layer         = (Layer)Layer.Clone(),
                Linetype      = (Linetype)Linetype.Clone(),
                Color         = (AciColor)Color.Clone(),
                Lineweight    = Lineweight,
                Transparency  = (Transparency)Transparency.Clone(),
                LinetypeScale = LinetypeScale,
                Normal        = Normal,
                IsVisible     = IsVisible,
                //Dimension properties
                Style                   = (DimensionStyle)Style.Clone(),
                DefinitionPoint         = DefinitionPoint,
                TextReferencePoint      = TextReferencePoint,
                TextPositionManuallySet = TextPositionManuallySet,
                TextRotation            = TextRotation,
                AttachmentPoint         = AttachmentPoint,
                LineSpacingStyle        = LineSpacingStyle,
                LineSpacingFactor       = LineSpacingFactor,
                UserText                = UserText,
                Elevation               = Elevation,
                //Angular2LineDimension properties
                StartFirstLine     = startFirstLine,
                EndFirstLine       = endFirstLine,
                StartSecondLine    = startSecondLine,
                EndSecondLine      = endSecondLine,
                Offset             = offset,
                arcDefinitionPoint = arcDefinitionPoint
            };

            foreach (DimensionStyleOverride styleOverride in StyleOverrides.Values)
            {
                object     copy;
                ICloneable value = styleOverride.Value as ICloneable;
                copy = value != null?value.Clone() : styleOverride.Value;

                entity.StyleOverrides.Add(new DimensionStyleOverride(styleOverride.Type, copy));
            }

            foreach (XData data in XData.Values)
            {
                entity.XData.Add((XData)data.Clone());
            }

            return(entity);
        }
コード例 #18
0
ファイル: LabelLayer.cs プロジェクト: Sony-NS/SharpMap
        /// <summary>
        /// Clones the object
        /// </summary>
        /// <returns></returns>
        public override object Clone()
        {
            //don't use new LabelLayer since this clone is used in subclass NetworkCoverageLabelLayer
            var newLabelLayer = (LabelLayer)base.Clone();

            // Use the orgLabelLayer properties
            newLabelLayer.ShowInTreeView = ShowInTreeView;
            newLabelLayer.LabelFilter    = LabelFilter;
            //is this ok?
            newLabelLayer.LabelStringDelegate = LabelStringDelegate;
            newLabelLayer.Style       = (LabelStyle)Style.Clone();
            newLabelLayer.LabelColumn = LabelColumn;

            return(newLabelLayer);
        }
コード例 #19
0
ファイル: KimonoShape.cs プロジェクト: yjpark/KimonoDesigner
 /// <summary>
 /// Clones the attached style.
 /// </summary>
 /// <returns>A duplicate <c>KimonoStyle</c>.</returns>
 internal KimonoStyle CloneAttachedStyle()
 {
     // Take action based on the style type
     if (Style.StyleType == KimonoStyleType.Custom ||
         Style.StyleType == KimonoStyleType.CustomText)
     {
         // Custom style needs to be cloned
         return(Style.Clone(false));
     }
     else
     {
         // Linked styles should be directly
         // attached sans cloning
         return(Style);
     }
 }
コード例 #20
0
        /// <summary>
        /// Creates a new OrdinateDimension that is a copy of the current instance.
        /// </summary>
        /// <returns>A new OrdinateDimension that is a copy of this instance.</returns>
        public override object Clone()
        {
            OrdinateDimension entity = new OrdinateDimension
            {
                //EntityObject properties
                Layer         = (Layer)Layer.Clone(),
                Linetype      = (Linetype)Linetype.Clone(),
                Color         = (AciColor)Color.Clone(),
                Lineweight    = Lineweight,
                Transparency  = (Transparency)Transparency.Clone(),
                LinetypeScale = LinetypeScale,
                Normal        = Normal,
                IsVisible     = IsVisible,
                //Dimension properties
                Style                   = (DimensionStyle)Style.Clone(),
                DefinitionPoint         = defPoint,
                TextReferencePoint      = TextReferencePoint,
                TextPositionManuallySet = TextPositionManuallySet,
                TextRotation            = TextRotation,
                AttachmentPoint         = AttachmentPoint,
                LineSpacingStyle        = LineSpacingStyle,
                LineSpacingFactor       = LineSpacingFactor,
                UserText                = UserText,
                Elevation               = Elevation,
                //OrdinateDimension properties
                FeaturePoint   = firstPoint,
                LeaderEndPoint = secondPoint,
                Rotation       = rotation,
                Axis           = axis
            };

            foreach (DimensionStyleOverride styleOverride in StyleOverrides.Values)
            {
                object     copy;
                ICloneable value = styleOverride.Value as ICloneable;
                copy = value != null?value.Clone() : styleOverride.Value;

                entity.StyleOverrides.Add(new DimensionStyleOverride(styleOverride.Type, copy));
            }

            foreach (XData data in XData.Values)
            {
                entity.XData.Add((XData)data.Clone());
            }

            return(entity);
        }
コード例 #21
0
        public int Add(IStyle style)
        {
            int num = 9;

            if (style == null)
            {
                throw new ArgumentNullException(BookmarkStart.b("尮䔰䨲头制", num));
            }
            DocumentSerializable serializable = (DocumentSerializable)style;

            serializable.CloneRelationsTo(base.Document, null);
            serializable.method_0(base.Document);
            if ((style as Style).BaseStyle != null)
            {
                Style baseStyle = (style as Style).BaseStyle as Style;
                if (!(this.FindByName(baseStyle.Name, baseStyle.StyleType) is Style))
                {
                    this.Add(baseStyle.Clone());
                }
                if (style is ParagraphStyle)
                {
                    (style as ParagraphStyle).ApplyBaseStyle(baseStyle.Name);
                }
                else if (style is Class13)
                {
                    (style as Class13).ApplyBaseStyle(baseStyle.Name);
                }
                else
                {
                    (style as Style).ApplyBaseStyle(baseStyle.Name);
                }
            }
            if (this.styleCollection_0 != null)
            {
                this.styleCollection_0.method_4();
                this.styleCollection_0 = null;
            }
            return(base.InnerList.Add(style));
        }
コード例 #22
0
        Topic Clone(Dictionary <Topic, Topic> exchangeTable)
        {
            var topic = (Topic)this.MemberwiseClone();

            if (MindMap != null)
            {
                topic.ID = this.MindMap.GetNextObjectID();
            }
            else
            {
                topic.ID = null;
            }
            topic.Chart    = null;
            topic.Style    = (TopicStyle)Style.Clone();
            topic.Children = new XList <Topic>();
            topic.Links    = new XList <Link>();
            topic.Widgets  = new XList <Widget>();
            topic.Lines    = new List <TopicLine>();
            exchangeTable.Add(this, topic);

            foreach (Topic subTopic in this.Children)
            {
                topic.Children.Add(subTopic.Clone(exchangeTable));
            }

            foreach (var widget in this.Widgets)
            {
                var newWidget = widget.Clone();
                if (newWidget != null)
                {
                    topic.Widgets.Add(widget.Clone());
                }
            }

            return(topic);
        }
コード例 #23
0
        private void RenderItemDetailsWithoutTableTags(XhtmlMobileTextWriter writer, ObjectListItem item)
        {
            if (Control.VisibleItemCount == 0)
            {
                return;
            }

            Style style                   = this.Style;
            Style labelStyle              = Control.LabelStyle;
            Style subCommandStyle         = Control.CommandStyle;
            Style subCommandStyleNoItalic = (Style)subCommandStyle.Clone();

            subCommandStyleNoItalic.Font.Italic = BooleanOption.False;

            ConditionalRenderOpeningDivElement(writer);

            String cssClass   = GetCustomAttributeValue(XhtmlConstants.CssClassCustomAttribute);
            String labelClass = GetCustomAttributeValue(XhtmlConstants.CssLabelClassCustomAttribute);

            if (labelClass == null || labelClass.Length == 0)
            {
                labelClass = cssClass;
            }
            ConditionalEnterStyle(writer, labelStyle);
            bool requiresLabelClassSpan = CssLocation == StyleSheetLocation.PhysicalFile && labelClass != null && labelClass.Length > 0;

            if (requiresLabelClassSpan)
            {
                writer.WriteBeginTag("span");
                writer.WriteAttribute("class", labelClass, true);
                writer.Write(">");
            }
            writer.Write(item[Control.LabelFieldIndex]);
            writer.SetPendingBreak();
            if (requiresLabelClassSpan)
            {
                writer.WriteEndTag("span");
            }
            ConditionalExitStyle(writer, labelStyle);
            writer.WritePendingBreak();

            IObjectListFieldCollection fields = Control.AllFields;
            int fieldIndex = 0;

            ConditionalEnterStyle(writer, style);
            foreach (ObjectListField field in fields)
            {
                if (field.Visible)
                {
                    writer.Write(field.Title + ":");
                    writer.Write("&nbsp;");
                    writer.Write(item[fieldIndex]);
                    writer.WriteBreak();
                }
                fieldIndex++;
            }
            ConditionalExitStyle(writer, style);

            String commandClass = GetCustomAttributeValue(XhtmlConstants.CssCommandClassCustomAttribute);

            ConditionalEnterStyle(writer, subCommandStyleNoItalic);
            if ((String)Device[XhtmlConstants.BreaksOnInlineElements] != "true")
            {
                writer.Write("[&nbsp;");
            }
            ConditionalEnterStyle(writer, subCommandStyle);

            ObjectListCommandCollection commands = Control.Commands;

            foreach (ObjectListCommand command in commands)
            {
                RenderPostBackEventAsAnchor(writer, command.Name, command.Text);
                if ((String)Device[XhtmlConstants.BreaksOnInlineElements] != "true")
                {
                    writer.Write("&nbsp;|&nbsp;");
                }
            }
            String controlBCT      = Control.BackCommandText;
            String backCommandText = controlBCT == null || controlBCT.Length == 0 ?
                                     GetDefaultLabel(BackLabel) :
                                     Control.BackCommandText;

            RenderPostBackEventAsAnchor(writer, BackToList, backCommandText);
            ConditionalExitStyle(writer, subCommandStyle);
            if ((String)Device[XhtmlConstants.BreaksOnInlineElements] != "true")
            {
                writer.Write("&nbsp;]");
            }
            ConditionalExitStyle(writer, subCommandStyleNoItalic);

            ConditionalRenderClosingDivElement(writer);
        }
コード例 #24
0
        Report NewReport(string Title)
        {
            Report report = new Report();

            Style defaultStyle = report.DefaultStyle.Clone();

            defaultStyle.Font   = new Font("Arial", 11, GraphicsUnit.Point);
            report.DefaultStyle = defaultStyle;

            Style titleStyle = defaultStyle.Clone();

            titleStyle.Font = new Font("Calibri", 20, FontStyle.Bold, GraphicsUnit.Point);
            Style headerStyle = defaultStyle.Clone();

            headerStyle.Font  = new Font("Calibri", 11, FontStyle.Bold, GraphicsUnit.Point);
            headerStyle.Brush = Brushes.White;

            Brush b = Brushes.DarkGray;
            Pen   p = new Pen(Color.DarkGray, 0);

            report.PageHeader = new ReportSection()
            {
                Height        = 48,
                ID            = "PageHeader",
                DefaultStyle  = headerStyle,
                ReportObjects =
                {
                    new ReportObjectLabel(Title,                       400,  3, XRight:report.PrintableAreaWidth, Alignment:Alignment.Right)
                    {
                        Style = titleStyle
                    },
                    new ReportObjectRectangle()
                    {
                        XLeft = 0,               XRight = report.PrintableAreaWidth,YTop = 26, YBottom = 46
                    },
                    new ReportObjectImage()
                    {
                        ImageFileName = @"C:\Users\Pascal\Pictures\Icebear reporting company logo.png",XLeft = 0,                 YTop = 0,YBottom = 25
                    }
                }
            };
            report.YTopForAutoAddedFieldsInHeader = 29;
            report.PageFooter = new ReportSection()
            {
                Height        = 40,
                ID            = "PageFooter",
                ReportObjects =
                {
                    new ReportObjectLine()
                    {
                        XLeft = 0, XRight = report.PrintableAreaWidth, YTop = 0, YBottom = 0
                    },
                    new ReportObjectLabel("Icebear report company", 0, 0, Width:200),
                    new ReportObjectLabel("52nd Street 54", 180, 0, Width:180, Alignment:Alignment.Center),
                    new ReportObjectLabel("New York", 400, 0, XRight:report.PrintableAreaWidth, Alignment: Alignment.Right),
                    new ReportObjectLabel($"Printed {DateTime.Now: dd-MM-yyyy hh:mm}", 0, 12, Width:150),
                    new ReportObjectLabel("Page {PageNumber} of {TotalPages}", 400, 12, XRight: report.PrintableAreaWidth, Alignment:Alignment.Right)
                }
            };

            report.AlternatingRowsPrimaryColor   = Color.White;
            report.AlternatingRowsSecondaryColor = Color.LightGray;
            report.AlternateColorOfDetailLines   = true;
            return(report);
        }
コード例 #25
0
ファイル: VectorLayer.cs プロジェクト: cugkgq/Project
        protected void RenderInternal(Graphics g, Map map, BoundingBox envelope)
        {
            //if style is not enabled, we don't need to render anything
            if (!Style.Enabled)
            {
                return;
            }

            using (VectorStyle vStyle = Style.Clone())
            {
                Collection <Geometry> geoms;
                // Is datasource already open?
                lock (_dataSource)
                {
                    bool alreadyOpen = DataSource.IsOpen;

                    // If not open yet, open it
                    if (!alreadyOpen)
                    {
                        DataSource.Open();
                    }

                    // Read data
                    geoms = DataSource.GetGeometriesInView(envelope);
                    Console.Out.WriteLine(string.Format("Layer {0}, NumGeometries {1}", LayerName, geoms.Count));

                    // If was not open, close it
                    if (!alreadyOpen)
                    {
                        DataSource.Close();
                    }
                }
                if (CoordinateTransformation != null)
                {
                    for (int i = 0; i < geoms.Count; i++)
#if !DotSpatialProjections
                    { geoms[i] = GeometryTransform.TransformGeometry(geoms[i], CoordinateTransformation.MathTransform); }
                }
#else
                    { geoms[i] = GeometryTransform.TransformGeometry(geoms[i], CoordinateTransformation.Source, CoordinateTransformation.Target); }
#endif
                if (vStyle.LineSymbolizer != null)
                {
                    vStyle.LineSymbolizer.Begin(g, map, geoms.Count);
                }
                else
                {
                    //Linestring outlines is drawn by drawing the layer once with a thicker line
                    //before drawing the "inline" on top.
                    if (vStyle.EnableOutline)
                    {
                        foreach (Geometry geom in geoms)
                        {
                            if (geom != null)
                            {
                                //Draw background of all line-outlines first
                                if (geom is LineString)
                                {
                                    VectorRenderer.DrawLineString(g, geom as LineString, vStyle.Outline, map, vStyle.LineOffset);
                                }
                                else if (geom is MultiLineString)
                                {
                                    VectorRenderer.DrawMultiLineString(g, geom as MultiLineString, vStyle.Outline, map, vStyle.LineOffset);
                                }
                            }
                        }
                    }
                }

                for (int i = 0; i < geoms.Count; i++)
                {
                    if (geoms[i] != null)
                    {
                        RenderGeometry(g, map, geoms[i], vStyle);
                    }
                }

                if (vStyle.LineSymbolizer != null)
                {
                    vStyle.LineSymbolizer.Symbolize(g, map);
                    vStyle.LineSymbolizer.End(g, map);
                }
            }
        }
コード例 #26
0
        // Render the details view
        /// <include file='doc\XhtmlBasicObjectListAdapter.uex' path='docs/doc[@for="XhtmlObjectListAdapter.RenderItemDetails"]/*' />
        protected virtual void RenderItemDetails(XhtmlMobileTextWriter writer, ObjectListItem item)
        {
            if (Control.AllFields.Count == 0)
            {
                return;
            }
            if (!Device.Tables)
            {
                RenderItemDetailsWithoutTableTags(writer, item);
                return;
            }


            Style labelStyle              = Control.LabelStyle;
            Style subCommandStyle         = Control.CommandStyle;
            Style subCommandStyleNoItalic = (Style)subCommandStyle.Clone();

            subCommandStyleNoItalic.Font.Italic = BooleanOption.False;

            writer.ClearPendingBreak(); // we are writing a block level element in all cases.
            ConditionalEnterLayout(writer, Style);
            writer.WriteBeginTag("table");
            ConditionalRenderClassAttribute(writer);
            writer.Write(">");
            writer.Write("<tr><td colspan=\"2\">");
            ConditionalEnterStyle(writer, labelStyle);
            writer.WriteEncodedText(item[Control.LabelFieldIndex]);
            ConditionalExitStyle(writer, labelStyle);
            writer.WriteLine("</td></tr>");
            Color foreColor = (Color)Style[Style.ForeColorKey, true];

            RenderRule(writer, foreColor, 2);
            RenderItemFieldsInDetailsView(writer, item);
            RenderRule(writer, foreColor, 2);
            ConditionalPopPhysicalCssClass(writer);
            writer.WriteEndTag("table");
            ConditionalExitLayout(writer, Style);

            ConditionalEnterStyle(writer, subCommandStyleNoItalic);
            writer.Write("[&nbsp;");

            ObjectListCommandCollection commands = Control.Commands;
            String cssClass        = GetCustomAttributeValue(XhtmlConstants.CssClassCustomAttribute);
            String subCommandClass = GetCustomAttributeValue(XhtmlConstants.CssCommandClassCustomAttribute);

            if (subCommandClass == null || subCommandClass.Length == 0)
            {
                subCommandClass = cssClass;
            }

            foreach (ObjectListCommand command in commands)
            {
                RenderPostBackEventAsAnchor(writer, command.Name, command.Text, null /* accessKey */, subCommandStyle, subCommandClass);
                writer.Write("&nbsp;|&nbsp;");
            }
            String controlBCT      = Control.BackCommandText;
            String backCommandText = (controlBCT == null || controlBCT.Length == 0) ?
                                     GetDefaultLabel(BackLabel) :
                                     controlBCT;

            RenderPostBackEventAsAnchor(writer, BackToList, backCommandText, null /* accessKey */, subCommandStyle, subCommandClass);
            writer.Write("&nbsp;]");
            ConditionalExitStyle(writer, subCommandStyleNoItalic);
        }