Fixing an issue with output parameters that are of type IntPtr
[castle.git] / MonoRail / TestSiteBrail / Components / GridComponent.cs
blob3896e26c53539ac6427777d4690c0ec29e795307
1 // Copyright 2004-2008 Castle Project - http://www.castleproject.org/
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
15 namespace TestSiteBrail.Components
17 using System;
18 using System.Collections;
20 using Castle.MonoRail.Framework;
22 public class GridComponent : ViewComponent
24 public override bool SupportsSection(String name)
26 return name == "tablestart" || name == "tableend" ||
27 name == "header" || name == "item" || name == "footer" ||
28 name == "empty";
31 public override void Render()
33 ICollection source = (ICollection) ComponentParams["source"];
35 StartTable();
37 Context.RenderSection("header");
39 if (source != null && source.Count != 0)
41 foreach(object item in source)
43 PropertyBag["item"] = item;
45 RenderText("<tr>");
47 Context.RenderSection("item");
49 RenderText("</tr>");
52 else
54 RenderText("<tr>");
55 Context.RenderSection("empty");
56 RenderText("</tr>");
59 Context.RenderSection("footer");
61 EndTable();
64 private void StartTable()
66 if (Context.HasSection("tablestart"))
68 Context.RenderSection("tablestart");
70 else
72 RenderText("<table>");
76 private void EndTable()
78 if (Context.HasSection("tableend"))
80 Context.RenderSection("tableend");
82 else
84 RenderText("</table>");