2004-06-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
[mono.git] / mcs / class / System.Web / System.Web.UI.WebControls / TemplateColumn.cs
1 //
2 // System.Web.UI.WebControls.TemplateColumn.cs
3 //
4 // Authors:
5 //   Gaurav Vaish (gvaish@iitk.ac.in)
6 //   Andreas Nahr (ClassDevelopment@A-SoftTech.com)
7 //
8 // (C) Gaurav Vaish (2002)
9 // (C) 2003 Andreas Nahr
10 //\r
11 \r
12 \r
13 using System;
14 using System.ComponentModel;\r
15 using System.Web;\r
16 using System.Web.UI;\r
17 \r
18 namespace System.Web.UI.WebControls\r
19 {\r
20         public class TemplateColumn : DataGridColumn\r
21         {\r
22                 private ITemplate editItemTemplate;\r
23                 private ITemplate footerTemplate;\r
24                 private ITemplate headerTemplate;\r
25                 private ITemplate itemTemplate;\r
26 \r
27                 public TemplateColumn(): base()\r
28                 {\r
29                 }\r
30
31                 [DefaultValue (null), Browsable (false)]
32                 [PersistenceMode (PersistenceMode.InnerProperty), TemplateContainer (typeof (DataGridItem))]
33                 [WebSysDescription ("The template that is used to build that are being edited rows for this column.")]\r
34                 public virtual ITemplate EditItemTemplate\r
35                 {\r
36                         get\r
37                         {\r
38                                 return editItemTemplate;\r
39                         }\r
40                         set\r
41                         {\r
42                                 editItemTemplate = value;\r
43                                 OnColumnChanged();\r
44                         }\r
45                 }\r
46
47                 [DefaultValue (null), Browsable (false)]
48                 [PersistenceMode (PersistenceMode.InnerProperty), TemplateContainer (typeof (DataGridItem))]
49                 [WebSysDescription ("The template that is used to build the footer for this column.")]\r
50                 public virtual ITemplate FooterTemplate\r
51                 {\r
52                         get\r
53                         {\r
54                                 return footerTemplate;\r
55                         }\r
56                         set\r
57                         {\r
58                                 footerTemplate = value;\r
59                                 OnColumnChanged();\r
60                         }\r
61                 }\r
62
63                 [DefaultValue (null), Browsable (false)]
64                 [PersistenceMode (PersistenceMode.InnerProperty), TemplateContainer (typeof (DataGridItem))]
65                 [WebSysDescription ("The template that is used to build the header for this column.")]\r
66                 public virtual ITemplate HeaderTemplate\r
67                 {\r
68                         get\r
69                         {\r
70                                 return headerTemplate;\r
71                         }\r
72                         set\r
73                         {\r
74                                 headerTemplate = value;\r
75                                 OnColumnChanged();\r
76                         }\r
77                 }\r
78
79                 [DefaultValue (null), Browsable (false)]
80                 [PersistenceMode (PersistenceMode.InnerProperty), TemplateContainer (typeof (DataGridItem))]
81                 [WebSysDescription ("The template that is used to build rows for this column.")]\r
82                 public virtual ITemplate ItemTemplate\r
83                 {\r
84                         get\r
85                         {\r
86                                 return itemTemplate;\r
87                         }\r
88                         set\r
89                         {\r
90                                 itemTemplate = value;\r
91                                 OnColumnChanged();\r
92                         }\r
93                 }\r
94 \r
95                 public override void InitializeCell(TableCell cell, int columnIndex, ListItemType itemType)\r
96                 {\r
97                         base.InitializeCell(cell, columnIndex, itemType);\r
98                         ITemplate toRender = null;\r
99                         switch(itemType)\r
100                         {\r
101                                 case ListItemType.Header: toRender = headerTemplate;\r
102                                                           break;\r
103                                 case ListItemType.Footer: toRender = footerTemplate;\r
104                                                           break;\r
105                                 case ListItemType.SelectedItem:
106                                 case ListItemType.AlternatingItem:
107                                 case ListItemType.Item:   toRender = itemTemplate;\r
108                                                           break;
109                                 case ListItemType.EditItem:
110                                         toRender = (editItemTemplate != null ? editItemTemplate : itemTemplate);\r
111                                                           break;\r
112                         }\r
113                         if(toRender != null)\r
114                         {\r
115                                 cell.Text = String.Empty;\r
116                                 toRender.InstantiateIn(cell);\r
117                         }\r
118                 }\r
119         }\r
120 }\r