Merge pull request #1506 from akoeplinger/fix-paste-test
[mono.git] / mcs / class / System.Web / System.Web.UI.WebControls / MenuItemBinding.cs
1 //
2 // System.Web.UI.WebControls.MenuItemBinding.cs
3 //
4 // Authors:
5 //      Lluis Sanchez Gual (lluis@novell.com)
6 //
7 // (C) 2004-2010 Novell, Inc (http://www.novell.com)
8 //
9 // Permission is hereby granted, free of charge, to any person obtaining
10 // a copy of this software and associated documentation files (the
11 // "Software"), to deal in the Software without restriction, including
12 // without limitation the rights to use, copy, modify, merge, publish,
13 // distribute, sublicense, and/or sell copies of the Software, and to
14 // permit persons to whom the Software is furnished to do so, subject to
15 // the following conditions:
16 // 
17 // The above copyright notice and this permission notice shall be
18 // included in all copies or substantial portions of the Software.
19 // 
20 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
24 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
25 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
26 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
27 //
28
29 using System;
30 using System.Collections;
31 using System.Web.UI;
32 using System.ComponentModel;
33
34 namespace System.Web.UI.WebControls
35 {
36         [DefaultProperty ("TextField")]
37         public sealed class MenuItemBinding: IStateManager, ICloneable, IDataSourceViewSchemaAccessor
38         {
39                 StateBag ViewState = new StateBag ();
40                 
41                 [DefaultValue ("")]
42                 public string DataMember {
43                         get { return ViewState.GetString ("DataMember", String.Empty); }
44                         set { ViewState ["DataMember"] = value; }
45                 }
46
47                 [DefaultValue (-1)]
48                 public int Depth {
49                         get { return ViewState.GetInt ("Depth", -1); }
50                         set { ViewState ["Depth"] = value; }
51                 }
52
53                 [DefaultValue (true)]
54                 public bool Enabled {
55                         get { return ViewState.GetBool ("Enabled", true); }
56                         set { ViewState ["Enabled"] = value; }
57                 }
58
59                 [DefaultValue ("")]
60                 [TypeConverter ("System.Web.UI.Design.DataSourceViewSchemaConverter, " + Consts.AssemblySystem_Design)]
61                 public string EnabledField {
62                         get { return ViewState.GetString ("EnabledField", String.Empty); }
63                         set { ViewState ["EnabledField"] = value; }
64                 }
65
66                 [Localizable (true)]
67                 [DefaultValue ("")]
68                 public string FormatString {
69                         get { return ViewState.GetString ("FormatString", String.Empty); }
70                         set { ViewState ["FormatString"] = value; }
71                 }
72
73                 [DefaultValue ("")]
74                 [UrlProperty]
75                 [Editor ("System.Web.UI.Design.ImageUrlEditor, " + Consts.AssemblySystem_Design, typeof (System.Drawing.Design.UITypeEditor))]
76                 public string ImageUrl {
77                         get { return ViewState.GetString ("ImageUrl", String.Empty); }
78                         set { ViewState ["ImageUrl"] = value; }
79                 }
80
81                 [DefaultValue ("")]
82                 [TypeConverter ("System.Web.UI.Design.DataSourceViewSchemaConverter, " + Consts.AssemblySystem_Design)]
83                 public string ImageUrlField {
84                         get { return ViewState.GetString ("ImageUrlField", String.Empty); }
85                         set { ViewState ["ImageUrlField"] = value; }
86                 }
87
88                 [DefaultValue ("")]
89                 [UrlProperty]
90                 [Editor ("System.Web.UI.Design.UrlEditor, " + Consts.AssemblySystem_Design, typeof (System.Drawing.Design.UITypeEditor))]
91                 public string NavigateUrl {
92                         get { return ViewState.GetString ("NavigateUrl", String.Empty); }
93                         set { ViewState ["NavigateUrl"] = value; }
94                 }
95
96                 [DefaultValue ("")]
97                 [TypeConverter ("System.Web.UI.Design.DataSourceViewSchemaConverter, " + Consts.AssemblySystem_Design)]
98                 public string NavigateUrlField {
99                         get { return ViewState.GetString ("NavigateUrlField", String.Empty); }
100                         set { ViewState ["NavigateUrlField"] = value; }
101                 }
102
103                 [DefaultValue (true)]
104                 public bool Selectable {
105                         get { return ViewState.GetBool ("Selectable", true); }
106                         set { ViewState ["Selectable"] = value; }
107                 }
108
109                 [DefaultValue ("")]
110                 [TypeConverter ("System.Web.UI.Design.DataSourceViewSchemaConverter, " + Consts.AssemblySystem_Design)]
111                 public string SelectableField {
112                         get { return ViewState.GetString ("SelectableField", String.Empty); }
113                         set { ViewState ["SelectableField"] = value; }
114                 }
115
116                 [DefaultValue ("")]
117                 public string Target {
118                         get { return ViewState.GetString ("Target", String.Empty); }
119                         set { ViewState ["Target"] = value; }
120                 }
121
122                 [DefaultValue ("")]
123                 [TypeConverter ("System.Web.UI.Design.DataSourceViewSchemaConverter, " + Consts.AssemblySystem_Design)]
124                 public string TargetField {
125                         get { return ViewState.GetString ("TargetField", String.Empty); }
126                         set { ViewState ["TargetField"] = value; }
127                 }
128
129                 [Localizable (true)]
130                 [DefaultValue ("")]
131                 [WebSysDescription ("The display text of the menu item.")]
132                 public string Text {
133                         get { return ViewState.GetString ("Text", String.Empty); }
134                         set { ViewState ["Text"] = value; }
135                 }
136
137                 [DefaultValue ("")]
138                 [TypeConverter ("System.Web.UI.Design.DataSourceViewSchemaConverter, " + Consts.AssemblySystem_Design)]
139                 public string TextField {
140                         get { return ViewState.GetString ("TextField", String.Empty); }
141                         set { ViewState ["TextField"] = value; }
142                 }
143
144                 [DefaultValue ("")]
145                 [Localizable (true)]
146                 public string ToolTip {
147                         get { return ViewState.GetString ("ToolTip", String.Empty); }
148                         set { ViewState ["ToolTip"] = value; }
149                 }
150
151                 [DefaultValue ("")]
152                 [TypeConverter ("System.Web.UI.Design.DataSourceViewSchemaConverter, " + Consts.AssemblySystem_Design)]
153                 public string ToolTipField {
154                         get { return ViewState.GetString ("ToolTipField", String.Empty); }
155                         set { ViewState ["ToolTipField"] = value; }
156                 }
157
158                 [DefaultValue ("")]
159                 [Localizable (true)]
160                 public string Value {
161                         get { return ViewState.GetString ("Value", String.Empty); }
162                         set { ViewState ["Value"] = value; }
163                 }
164
165                 [DefaultValue ("")]
166                 [TypeConverter ("System.Web.UI.Design.DataSourceViewSchemaConverter, " + Consts.AssemblySystem_Design)]
167                 public string ValueField {
168                         get { return ViewState.GetString ("ValueField", String.Empty); }
169                         set { ViewState ["ValueField"] = value; }
170                 }
171
172                 [DefaultValue ("")]
173                 [UrlProperty]
174                 [Editor ("System.Web.UI.Design.UrlEditor, " + Consts.AssemblySystem_Design, typeof (System.Drawing.Design.UITypeEditor))]
175                 public string PopOutImageUrl {
176                         get { return ViewState.GetString ("PopOutImageUrl", String.Empty); }
177                         set { ViewState ["PopOutImageUrl"] = value; }
178                 }
179
180                 [DefaultValue ("")]
181                 [TypeConverter ("System.Web.UI.Design.DataSourceViewSchemaConverter, " + Consts.AssemblySystem_Design)]
182                 public string PopOutImageUrlField {
183                         get { return ViewState.GetString ("PopOutImageUrlField", String.Empty); }
184                         set { ViewState ["PopOutImageUrlField"] = value; }
185                 }
186
187                 [DefaultValue ("")]
188                 [UrlProperty]
189                 [Editor ("System.Web.UI.Design.UrlEditor, " + Consts.AssemblySystem_Design, typeof (System.Drawing.Design.UITypeEditor))]
190                 public string SeparatorImageUrl {
191                         get { return ViewState.GetString ("SeparatorImageUrl", String.Empty); }
192                         set { ViewState ["SeparatorImageUrl"] = value; }
193                 }
194
195                 [DefaultValue ("")]
196                 [TypeConverter ("System.Web.UI.Design.DataSourceViewSchemaConverter, " + Consts.AssemblySystem_Design)]
197                 public string SeparatorImageUrlField {
198                         get { return ViewState.GetString ("SeparatorImageUrlField", String.Empty); }
199                         set { ViewState ["SeparatorImageUrlField"] = value; }
200                 }
201                 public override string ToString ()
202                 {
203                         string dm = DataMember;
204                         if (String.IsNullOrEmpty (dm))
205                                 return "(Empty)";
206
207                         return dm;
208                 }
209                 void IStateManager.LoadViewState (object savedState)
210                 {
211                         ViewState.LoadViewState (savedState);
212                 }
213                 
214                 object IStateManager.SaveViewState ()
215                 {
216                         return ViewState.SaveViewState();
217                 }
218                 
219                 void IStateManager.TrackViewState ()
220                 {
221                         ViewState.TrackViewState ();
222                 }
223                 
224                 bool IStateManager.IsTrackingViewState {
225                         get { return ViewState.IsTrackingViewState; }
226                 }
227                 
228                 [MonoTODO ("Not implemented")]
229                 object IDataSourceViewSchemaAccessor.DataSourceViewSchema {
230                         get { throw new NotImplementedException (); }
231                         set { throw new NotImplementedException (); }
232                 }
233                 
234                 object ICloneable.Clone ()
235                 {
236                         MenuItemBinding bin = new MenuItemBinding ();
237                         foreach (DictionaryEntry e in ViewState)
238                                 bin.ViewState [(string)e.Key] = e.Value;
239                         return bin;
240                 }
241
242                 internal void SetDirty ()
243                 {
244                         StateBag vs = ViewState;
245                         foreach (string key in vs.Keys)
246                                 vs.SetItemDirty (key, true);
247                 }
248         }
249 }
250