New test.
[mono.git] / mcs / class / System.Web / System.Web.UI.WebControls.WebParts / WebPart.cs
index 1236dcde70b16f09f42f150177165f3014775844..099273a410bc790e09cf2209b03c489c9c094886 100644 (file)
-//\r
-// System.Web.UI.WebControls.WebParts.Part.cs\r
-//\r
-// Authors:\r
-//   Gaurav Vaish (gaurav[DOT]vaish[AT]gmail[DOT]com)\r
-//   Sanjay Gupta (gsanjay@novell.com)\r
-//\r
-// (C) 2004 Gaurav Vaish (http://www.mastergaurav.org)\r
-// (C) 2004 Novell Inc., (http://www.novell.com)\r
-//\r
-\r
-//\r
-// Permission is hereby granted, free of charge, to any person obtaining\r
-// a copy of this software and associated documentation files (the\r
-// "Software"), to deal in the Software without restriction, including\r
-// without limitation the rights to use, copy, modify, merge, publish,\r
-// distribute, sublicense, and/or sell copies of the Software, and to\r
-// permit persons to whom the Software is furnished to do so, subject to\r
-// the following conditions:\r
-//\r
-// The above copyright notice and this permission notice shall be\r
-// included in all copies or substantial portions of the Software.\r
-//\r
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,\r
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\r
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\r
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\r
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r
-//\r
-\r
-#if NET_2_0\r
-\r
-using System;\r
-using System.ComponentModel;\r
-using System.Web;\r
-using System.Web.UI.WebControls;\r
-\r
-namespace System.Web.UI.WebControls.WebParts\r
-{\r
-       [DesignerAttribute ("System.Web.UI.Design.WebControls.WebParts.WebPartDesigner, System.Design", \r
-               "System.ComponentModel.Design.IDesigner")]                      \r
-       public class WebPart : Part, IWebPart, IWebActionable\r
-       {\r
-               private bool allowClose      = true;\r
-               private bool allowEdit       = true;\r
-               private bool allowHide       = true;\r
-               private bool allowMinimize   = true;\r
-               private bool allowZoneChange = true;\r
-               private bool allowHelp       = true;\r
-\r
-               private bool isStatic = true;\r
-               private bool isStandalone = true;\r
-               private bool isClosed = true;\r
-\r
-               private PartChromeState chromeState = PartChromeState.Normal;\r
-               private PartChromeType chromeType = PartChromeType.Default;\r
-               private WebPartExportMode exportMode = WebPartExportMode.None;\r
-               private WebPartHelpMode   helpMode   = WebPartHelpMode.Navigate;\r
-\r
-               private string caption;\r
-               private string catalogIconImageUrl;\r
-               private string description;\r
-               private string titleIconImageUrl;\r
-               private string title;\r
-               private string titleUrl;\r
-               private WebPartVerbCollection verbCollection;\r
-               \r
-               protected WebPart()\r
-               {\r
-               }\r
-               \r
-               [WebSysDescriptionAttribute ("Determines Whether the Web Part can be closed."),\r
-               DefaultValueAttribute (true), WebCategoryAttribute ("Behavior of Web Part")]\r
-               //, PersonalizableAttribute \r
-               public virtual bool AllowClose {\r
-                       get { return allowClose; }\r
-                       set { allowClose = value; }\r
-               }\r
-\r
-               [WebSysDescriptionAttribute ("Determines Whether properties of the Web Part can be changed using the EditorZone."),\r
-               DefaultValueAttribute (true), WebCategoryAttribute ("Behavior of Web Part")]\r
-               //, PersonalizableAttribute \r
-               public virtual bool AllowEdit {\r
-                       get { return allowEdit; }\r
-                       set { allowEdit = value; }\r
-               }\r
-\r
-               [WebSysDescriptionAttribute ("Determines Whether properties of the Web Part can be changed using the EditorZone."),\r
-               DefaultValueAttribute (true), WebCategoryAttribute ("Behavior of Web Part")]\r
-               //, PersonalizableAttribute \r
-               public virtual bool AllowHelp {\r
-                       get { return AllowHelp; }\r
-                       set { allowHelp = value; }\r
-               }\r
-\r
-               [WebSysDescriptionAttribute ("Determines Whether the Web Part can be minimized."),\r
-               DefaultValueAttribute (true), WebCategoryAttribute ("Behavior of Web Part")]\r
-               //, PersonalizableAttribute \r
-               public virtual bool AllowMinimize {\r
-                       get { return allowMinimize; }\r
-                       set { allowMinimize = value; }\r
-               }\r
-\r
-               [WebSysDescriptionAttribute ("Determines Whether the Web Part can be moved to some other zone."),\r
-               DefaultValueAttribute (true), WebCategoryAttribute ("Behavior of Web Part")]\r
-               //, PersonalizableAttribute \r
-               public virtual bool AllowZoneChange {\r
-                       get { return allowZoneChange; }\r
-                       set { allowZoneChange = value; }\r
-               }\r
-\r
-               [BrowsableAttribute (false), \r
-               DesignerSerializationVisibilityAttribute (DesignerSerializationVisibility.Hidden)]\r
-               public bool IsClosed {\r
-                       get { return isClosed; }\r
-               }\r
-\r
-               [BrowsableAttribute (false),\r
-               DesignerSerializationVisibilityAttribute (DesignerSerializationVisibility.Hidden)]\r
-               public bool IsStandalone\r
-               {\r
-                       get { return isStandalone; }\r
-               }\r
-               \r
-               //[PersonalizableAttribute ]\r
-               public override PartChromeState ChromeState {\r
-                       get { return chromeState; }\r
-                       set {\r
-                               if(!Enum.IsDefined (typeof (PartChromeState), value))\r
-                                       throw new ArgumentException ("value");\r
-                               chromeState = value;\r
-                       }\r
-               }\r
-               \r
-               //[PersonalizableAttribute ]\r
-               public override PartChromeType ChromeType {\r
-                       get { return chromeType; }\r
-                       set {\r
-                               if(!Enum.IsDefined (typeof (PartChromeType), value))\r
-                                       throw new ArgumentException ("value");\r
-                               chromeType = value;\r
-                       }\r
-               }\r
-\r
-               string IWebPart.Caption { 
-                       get { return caption; }
-               }
-       
-               [DefaultValueAttribute (String.Empty), \r
-               EditorAttribute ("System.Web.UI.Design.ImageUrlEditor, System.Design", \r
-                               "System.Drawing.Design.UITypeEditor, System.Drawing") , \r
-               WebCategoryAttribute ("Appearance of the Web Part"),\r
-               WebSysDescriptionAttribute ("Specifies URL of image which is displayed in WebPart's Catalog.")]
-               //UrlPropertyAttribute, PersonalizableAttribute
-               string IWebPart.CatalogIconImageUrl { 
-                       get { return catalogIconImageUrl; }
-                       set { catalogIconImageUrl = value; }
-               }
-
-               string IWebPart.Description { 
-                       get { return description; }
-                       set { description = value; }
-               }
-
-               string IWebPart.Title { 
-                       get { return title; }
-                       set { title = value; }
-               }\r
-\r
-               [DefaultValueAttribute (String.Empty),\r
-               EditorAttribute ("System.Web.UI.Design.ImageUrlEditor, System.Design",\r
-                               "System.Drawing.Design.UITypeEditor, System.Drawing"),\r
-               WebCategoryAttribute ("Appearance of the Web Part"),\r
-               WebSysDescriptionAttribute ("Specifies URL of image which is displayed in WebPart's title bar.")]\r
-               //UrlPropertyAttribute, PersonalizableAttribute\r
-               string IWebPart.TitleIconImageUrl\r
-               {\r
-                       get { return titleIconImageUrl; }
-                       set { titleIconImageUrl = value; }
-               }
-
-               [DefaultValueAttribute (String.Empty),\r
-               EditorAttribute ("System.Web.UI.Design.UrlEditor, System.Design",\r
-                               "System.Drawing.Design.UITypeEditor, System.Drawing"),\r
-               WebCategoryAttribute ("Behaviour of the Web Part"),\r
-               WebSysDescriptionAttribute ("Specifies URL of page, containing additional information about this WebPart.")]\r
-               //UrlPropertyAttribute, PersonalizableAttribute
-               string IWebPart.TitleUrl { 
-                       get { return titleUrl; }
-                       set { titleUrl = value; }
-               }\r
-\r
-               [BrowsableAttribute (false),\r
-               DesignerSerializationVisibilityAttribute (DesignerSerializationVisibility.Hidden)]\r
-               WebPartVerbCollection IWebActionable.Verbs {\r
-                       get {
-                               if (verbCollection == null) {
-                                       verbCollection = new WebPartVerbCollection ();
-                               }
-                               return verbCollection;
-                       }
-               }\r
-       }\r
-}\r
+//
+// System.Web.UI.WebControls.WebParts.Part
+//
+// Authors: Chris Toshok <toshok@novell.com>
+//
+// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+#if NET_2_0
+using System;
+
+namespace System.Web.UI.WebControls.WebParts
+{
+       public abstract class WebPart : Part, IWebPart, IWebActionable
+#if IWebEditableInterface
+         , IWebEditable
+#endif
+       {
+               [Flags]
+               enum Allow {
+                       Close      = 0x01,
+                       Connect    = 0x02,
+                       Edit       = 0x04,
+                       Hide       = 0x08,
+                       Minimize   = 0x10,
+                       ZoneChange = 0x20
+               }
+
+
+               WebPartVerbCollection verbs = new WebPartVerbCollection();
+               Allow allow;
+               string auth_filter;
+               string catalog_icon_url;
+               WebPartExportMode exportMode = WebPartExportMode.None;
+               string  titleIconImageUrl,       
+                               titleUrl,                       
+                               helpUrl;
+               bool isStatic, hidden, isClosed, hasSharedData, hasUserData;
+               WebPartHelpMode helpMode = WebPartHelpMode.Navigate;
+               int zoneIndex ;
+
+               protected WebPart ()
+               {
+                       verbs = new WebPartVerbCollection();
+                       allow = Allow.Close | Allow.Connect | Allow.Edit | Allow.Hide | Allow.Minimize | Allow.ZoneChange;
+                       auth_filter = "";
+                       catalog_icon_url = "";
+                       titleIconImageUrl       = string.Empty;
+                       titleUrl                = string.Empty;
+                       helpUrl                 = string.Empty;
+                       isStatic                = false;
+                       hasUserData             = false;
+                       hasSharedData   = false;
+                       hidden = false;
+                       isClosed = false;
+               }
+
+#if IWebEditableInterface
+               [MonoTODO]
+               public virtual EditorPartCollection CreateEditorParts ()
+               {
+                       throw new NotImplementedException ();
+               }
+#endif
+
+               [MonoTODO]
+               protected void SetPersonalizationDirty ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public static void SetPersonalizationDirty (Control control)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               protected override void TrackViewState ()
+               {
+                       base.TrackViewState();
+
+                       foreach (IStateManager verb in verbs) {
+                               verb.TrackViewState();
+                       }
+               }
+
+               protected internal virtual void OnClosing (EventArgs e)
+               { /* no base class implementation */ }
+
+               protected internal virtual void OnConnectModeChanged (EventArgs e)
+               { /* no base class implementation */ }
+
+               protected internal virtual void OnDeleting (EventArgs e)
+               { /* no base class implementation */ }
+
+               protected internal virtual void OnEditModeChanged (EventArgs e)
+               { /* no base class implementation */ }
+
+               [WebSysDescriptionAttribute ("")]
+               [WebCategoryAttribute ("Behavior")]
+               public virtual bool AllowClose 
+               {
+                       get {
+                               return (allow & Allow.Close) != 0;
+                       }
+                       set {
+                               if (value)
+                                       allow |= Allow.Close;
+                               else
+                                       allow &= ~Allow.Close;
+                       }
+               }
+
+               [WebSysDescriptionAttribute ("")]
+               [WebCategoryAttribute ("Behavior")]
+               public virtual bool AllowConnect 
+               {
+                       get {
+                               return (allow & Allow.Connect) != 0;
+                       }
+                       set {
+                               if (value)
+                                       allow |= Allow.Connect;
+                               else
+                                       allow &= ~Allow.Connect;
+                       }
+               }
+
+               [WebSysDescriptionAttribute ("")]
+               [WebCategoryAttribute ("Behavior")]
+               public virtual bool AllowEdit 
+               {
+                       get {
+                               return (allow & Allow.Edit) != 0;
+                       }
+                       set {
+                               if (value)
+                                       allow |= Allow.Edit;
+                               else
+                                       allow &= ~Allow.Edit;
+                       }
+               }
+
+               [WebSysDescriptionAttribute ("")]
+               [WebCategoryAttribute ("Behavior")]
+               public virtual bool AllowHide 
+               {
+                       get {
+                               return (allow & Allow.Hide) != 0;
+                       }
+                       set {
+                               if (value)
+                                       allow |= Allow.Hide;
+                               else
+                                       allow &= ~Allow.Hide;
+                       }
+               }
+
+               [WebSysDescriptionAttribute ("")]
+               [WebCategoryAttribute ("Behavior")]
+               public virtual bool AllowMinimize 
+               {
+                       get {
+                               return (allow & Allow.Minimize) != 0;
+                       }
+                       set {
+                               if (value)
+                                       allow |= Allow.Minimize;
+                               else
+                                       allow &= ~Allow.Minimize;
+                       }
+               }
+
+               [WebSysDescriptionAttribute ("")]
+               [WebCategoryAttribute ("Behavior")]
+               public virtual bool AllowZoneChange 
+               {
+                       get {
+                               return (allow & Allow.ZoneChange) != 0;
+                       }
+                       set {
+                               if (value)
+                                       allow |= Allow.ZoneChange;
+                               else
+                                       allow &= ~Allow.ZoneChange;
+                       }
+               }
+
+               [MonoTODO]
+               public virtual string AuthorizationFilter 
+               {
+                       get {
+                               return auth_filter;
+                       }
+                       set {
+                               auth_filter = value;
+                       }
+               }
+
+               [MonoTODO]
+               public virtual string CatalogIconImageUrl 
+               {
+                       get {
+                               return catalog_icon_url;
+                       }
+                       set {
+                               catalog_icon_url = value;
+                       }
+               }
+
+               [MonoTODO ("why override?")]
+               public override PartChromeState ChromeState 
+               {
+                       get {
+                               return base.ChromeState;
+                       }
+                       set {
+                               base.ChromeState = value;
+                       }
+               }
+
+               [MonoTODO ("why override?")]
+               public override PartChromeType ChromeType 
+               {
+                       get {
+                               return base.ChromeType;
+                       }
+                       set {
+                               base.ChromeType = value;
+                       }
+               }
+
+               [MonoTODO]
+               public string ConnectErrorMessage 
+               {
+                       get {
+                               return "";
+                       }
+               }
+
+               [MonoTODO ("why override?")]
+               public override string Description 
+               {
+                       get {
+                               return base.Description;
+                       }
+                       set {
+                               base.Description = value;
+                       }
+               }
+
+               [MonoTODO]
+               /* msdn2 lists this as an override, but it doesn't appear to work with our implementation */
+               public /*override*/ ContentDirection Direction 
+               {
+                       get {
+                       throw new NotImplementedException ();
+                       }
+                       set {
+                       throw new NotImplementedException ();
+                       }
+               }
+
+               public string DisplayTitle 
+               {
+                       get {
+                               return "Untitled";
+                       }
+               }
+
+               [MonoTODO]
+               public virtual WebPartExportMode ExportMode 
+               {
+                       get {
+                               return exportMode;
+                       }
+                       set {
+                               exportMode = value;
+                       }
+               }
+
+               [MonoTODO]
+               public bool HasSharedData 
+               {
+                       get {
+                               return hasSharedData;
+                       }
+               }
+
+               [MonoTODO]
+               public bool HasUserData 
+               {
+                       get {
+                               return hasUserData;
+                       }
+               }
+
+               [MonoTODO("why override?")]
+               public override Unit Height 
+               {
+                       get {
+                               return base.Height;
+                       }
+                       set {
+                               base.Height = value;
+                       }
+               }
+
+               [MonoTODO]
+               public virtual WebPartHelpMode HelpMode 
+               {
+                       get {
+                               return helpMode;
+                       }
+                       set {
+                               helpMode = value;
+                       }
+               }
+
+               [MonoTODO]
+               public virtual string HelpUrl 
+               {
+                       get {
+                               return helpUrl;
+                       }
+                       set {
+                               helpUrl = value;
+                       }
+               }
+
+               [MonoTODO]
+               public virtual bool Hidden 
+               {
+                       get {
+                               return hidden;
+                       }
+                       set {
+                               hidden = value;
+                       }
+               }
+
+               public virtual string ImportErrorMessage 
+               {
+                       get {
+                               return ViewState.GetString("ImportErrorMessage", "Cannot import this Web Part.");
+                       }
+                       set {
+                               ViewState ["ImportErrorMessage"] = value;
+                       }
+               }
+
+               [MonoTODO]
+               public bool IsClosed 
+               {
+                       get {
+                               return isClosed;
+                       }
+               }
+
+               [MonoTODO("not virtual and no setter..")]
+               public bool IsShared 
+               {
+                       get {
+                               return false;
+                       }
+               }
+
+               [MonoTODO("not virtual and no setter..")]
+               public bool IsStandalone 
+               {
+                       get {
+                               return true;
+                       }
+               }
+
+               [MonoTODO]
+               public bool IsStatic 
+               {
+                       get {
+                               return isStatic;
+                       }
+               }
+
+               [MonoTODO]
+               public virtual string Subtitle 
+               {
+                       get {
+                               return string.Empty;
+                       }
+               }
+
+               [MonoTODO ("why override?")]
+               public override string Title 
+               {
+                       get {
+                               return base.Title;
+                       }
+                       set {
+                               base.Title = value;
+                       }
+               }
+
+               [MonoTODO]
+               public virtual string TitleIconImageUrl 
+               {
+                       get {
+                               return titleIconImageUrl;
+                       }
+                       set {
+                               titleIconImageUrl = value;
+                       }
+               }
+
+               [MonoTODO]
+               public virtual string TitleUrl 
+               {
+                       get {
+                               return titleUrl;
+                       }
+                       set {
+                               titleUrl = value;
+                       }
+               }
+
+               public virtual WebPartVerbCollection Verbs 
+               {
+                       get {
+                               return verbs;
+                       }
+               }
+
+#if IWebEditableInterface
+               [MonoTODO]
+               public virtual object WebBrowsableObject 
+               {
+                       get {
+                       throw new NotImplementedException ();
+                       }
+               }
+#endif
+
+#if notyet
+               [MonoTODO]
+               protected WebPartManager WebPartManager 
+               {
+                       get {
+                       throw new NotImplementedException ();
+                       }
+               }
+#endif
+
+               [MonoTODO ("why override?")]
+               public override Unit Width 
+               {
+                       get {
+                               return base.Width;
+                       }
+                       set {
+                               base.Width = value;
+                       }
+               }
+
+#if notyet
+               [MonoTODO]
+               public WebPartZoneBase Zone 
+               {
+                       get {
+                       throw new NotImplementedException ();
+                       }
+               }
+#endif
+
+               [MonoTODO]
+               public int ZoneIndex 
+               {
+                       get {
+                               return zoneIndex;
+                       }
+               }
+       }
+
+}
+
 #endif