1 //
2 // System.Web.UI.WebControls.MenuItemStyle.cs
3 //
4 // Authors:
5 //	Igor Zelmanovich (igorz@mainsoft.com)
6 //
7 // (C) 2007 Mainsoft, Inc (http://www.mainsoft.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 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
29 //
30 
31 
32 using System;
33 using System.Web.UI;
34 using System.ComponentModel;
35 
36 namespace System.Web.UI.WebControls
37 {
38 	public class PanelStyle : Style
39 	{
40 		[Flags]
41 		enum PanelStyles
42 		{
43 			BackImageUrl = 0x00010000,
44 			Direction = 0x00020000,
45 			HorizontalAlign = 0x00040000,
46 			ScrollBars = 0x00080000,
47 			Wrap = 0x00100000,
48 		}
49 
PanelStyle(StateBag bag)50 		public PanelStyle (StateBag bag)
51 			: base (bag)
52 		{
53 		}
54 
55 		[DefaultValue ("")]
56 		[UrlProperty]
57 		public virtual string BackImageUrl {
58 			get {
59 				if (!CheckBit ((int) PanelStyles.BackImageUrl))
60 					return String.Empty;
61 
62 				return ViewState.GetString ("BackImageUrl", String.Empty);
63 			}
64 
65 			set {
66 				ViewState ["BackImageUrl"] = value;
67 				SetBit ((int) PanelStyles.BackImageUrl);
68 			}
69 		}
70 
71 		[DefaultValue (ContentDirection.NotSet)]
72 		public virtual ContentDirection Direction {
73 			get {
74 				if (!CheckBit ((int) PanelStyles.Direction))
75 					return ContentDirection.NotSet;
76 
77 				return (ContentDirection) ViewState ["Direction"];
78 			}
79 			set {
80 				ViewState ["Direction"] = value;
81 				SetBit ((int) PanelStyles.Direction);
82 			}
83 		}
84 
85 		[DefaultValue (HorizontalAlign.NotSet)]
86 		public virtual HorizontalAlign HorizontalAlign {
87 			get {
88 				if (!CheckBit ((int) PanelStyles.HorizontalAlign))
89 					return HorizontalAlign.NotSet;
90 
91 				return (HorizontalAlign) ViewState ["HorizontalAlign"];
92 			}
93 			set {
94 				ViewState ["HorizontalAlign"] = value;
95 				SetBit ((int) PanelStyles.HorizontalAlign);
96 			}
97 		}
98 
99 		[DefaultValue (ScrollBars.None)]
100 		public virtual ScrollBars ScrollBars {
101 			get {
102 				if (!CheckBit ((int) PanelStyles.ScrollBars))
103 					return ScrollBars.None;
104 
105 				return (ScrollBars) ViewState ["ScrollBars"];
106 			}
107 			set {
108 				ViewState ["ScrollBars"] = value;
109 				SetBit ((int) PanelStyles.ScrollBars);
110 			}
111 		}
112 
113 		[DefaultValue (true)]
114 		public virtual bool Wrap {
115 			get {
116 				if (!CheckBit ((int) PanelStyles.Wrap))
117 					return true;
118 
119 				return (bool) ViewState ["Wrap"];
120 			}
121 			set {
122 				ViewState ["Wrap"] = value;
123 				SetBit ((int) PanelStyles.Wrap);
124 			}
125 		}
126 
CopyFrom(Style s)127 		public override void CopyFrom (Style s)
128 		{
129 			if ((s == null) || s.IsEmpty)
130 				return;
131 
132 			base.CopyFrom (s);
133 
134 			PanelStyle ps = s as PanelStyle;
135 			if (ps == null)
136 				return;
137 
138 			if (s.CheckBit ((int) PanelStyles.BackImageUrl)) {
139 				this.BackImageUrl = ps.BackImageUrl;
140 			}
141 			if (s.CheckBit ((int) PanelStyles.Direction)) {
142 				this.Direction = ps.Direction;
143 			}
144 			if (s.CheckBit ((int) PanelStyles.HorizontalAlign)) {
145 				this.HorizontalAlign = ps.HorizontalAlign;
146 			}
147 			if (s.CheckBit ((int) PanelStyles.ScrollBars)) {
148 				this.ScrollBars = ps.ScrollBars;
149 			}
150 			if (s.CheckBit ((int) PanelStyles.Wrap)) {
151 				this.Wrap = ps.Wrap;
152 			}
153 		}
154 
MergeWith(Style s)155 		public override void MergeWith (Style s)
156 		{
157 			if ((s == null) || (s.IsEmpty))
158 				return;
159 
160 			base.MergeWith (s);
161 
162 			PanelStyle ps = s as PanelStyle;
163 			if (ps == null)
164 				return;
165 
166 			if (!CheckBit ((int) PanelStyles.BackImageUrl) && s.CheckBit ((int) PanelStyles.BackImageUrl)) {
167 				this.BackImageUrl = ps.BackImageUrl;
168 			}
169 			if (!CheckBit ((int) PanelStyles.Direction) && s.CheckBit ((int) PanelStyles.Direction)) {
170 				this.Direction = ps.Direction;
171 			}
172 			if (!CheckBit ((int) PanelStyles.HorizontalAlign) && s.CheckBit ((int) PanelStyles.HorizontalAlign)) {
173 				this.HorizontalAlign = ps.HorizontalAlign;
174 			}
175 			if (!CheckBit ((int) PanelStyles.ScrollBars) && s.CheckBit ((int) PanelStyles.ScrollBars)) {
176 				this.ScrollBars = ps.ScrollBars;
177 			}
178 			if (!CheckBit ((int) PanelStyles.Wrap) && s.CheckBit ((int) PanelStyles.Wrap)) {
179 				this.Wrap = ps.Wrap;
180 			}
181 		}
182 
Reset()183 		public override void Reset ()
184 		{
185 			base.Reset ();
186 
187 			ViewState.Remove ("BackImageUrl");
188 			ViewState.Remove ("Direction");
189 			ViewState.Remove ("HorizontalAlign");
190 			ViewState.Remove ("ScrollBars");
191 			ViewState.Remove ("Wrap");
192 		}
193 	}
194 }
195 
196