[DefaultValueAttribute ("")]
public virtual string SiteMapProvider {
- get {
- object o = ViewState ["SiteMapProvider"];
- if (o != null) return (string) o;
- else return string.Empty;
- }
+ get { return ViewState.GetString ("SiteMapProvider", ""); }
set {
ViewState ["SiteMapProvider"] = value;
OnDataSourceChanged (EventArgs.Empty);
[EditorAttribute ("System.Web.UI.Design.UrlEditor, " + Consts.AssemblySystem_Design, "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)]
[UrlPropertyAttribute]
public virtual string StartingNodeUrl {
- get {
- object o = ViewState ["StartingNodeUrl"];
- if (o != null) return (string) o;
- else return string.Empty;
- }
+ get { return ViewState.GetString ("StartingNodeUrl", ""); }
set {
ViewState ["StartingNodeUrl"] = value;
OnDataSourceChanged (EventArgs.Empty);
}
}
+
+ [DefaultValue (0)]
+ public virtual int StartingNodeOffset {
+ get { return ViewState.GetInt ("StartingNodeOffset", 0); }
+ set { ViewState["StartingNodeOffset"] = value; }
+ }
[DefaultValueAttribute (false)]
public virtual bool StartFromCurrentNode {
- get {
- object o = ViewState ["StartFromCurrentNode"];
- if (o != null) return (bool) o;
- else return false;
- }
+ get { return ViewState.GetBool ("StartFromCurrentNode", false); }
set {
ViewState ["StartFromCurrentNode"] = value;
OnDataSourceChanged (EventArgs.Empty);
[DefaultValueAttribute (true)]
public virtual bool ShowStartingNode {
- get {
- object o = ViewState ["ShowStartingNode"];
- if (o != null) return (bool) o;
- else return true;
- }
+ get { return ViewState.GetBool ("ShowStartingNode", true); }
set {
ViewState ["ShowStartingNode"] = value;
OnDataSourceChanged (EventArgs.Empty);
return new SiteMapHierarchicalDataSourceView (node.ChildNodes);
}
+ [MonoTODO ("handle StartNodeOffsets > 0")]
SiteMapNode GetStartNode (string viewPath)
{
+ SiteMapNode starting_node;
+
if (viewPath != null && viewPath.Length != 0) {
string url = MapUrl (StartingNodeUrl);
return Provider.FindSiteMapNode (url);
else if (StartFromCurrentNode) {
if (StartingNodeUrl.Length != 0)
throw new InvalidOperationException ("StartingNodeUrl can't be set if StartFromCurrentNode is set to true.");
- return Provider.CurrentNode;
+ starting_node = Provider.CurrentNode;
}
else if (StartingNodeUrl.Length != 0) {
string url = MapUrl (StartingNodeUrl);
SiteMapNode node = Provider.FindSiteMapNode (url);
if (node == null) throw new ArgumentException ("Can't find a site map node for the url: " + StartingNodeUrl);
- return node;
+
+ starting_node = node;
}
else
- return Provider.RootNode;
+ starting_node = Provider.RootNode;
+
+ int i;
+ if (StartingNodeOffset < 0) {
+ for (i = StartingNodeOffset; i < 0; i ++) {
+ if (starting_node.ParentNode == null)
+ break;
+ starting_node = starting_node.ParentNode;
+ }
+ }
+ else if (StartingNodeOffset > 0) {
+ }
+
+ return starting_node;
}
string MapUrl (string url)
using System;
using System.Collections;
using System.ComponentModel;
+using System.Web.UI.HtmlControls;
namespace System.Web.UI.WebControls
{
}
}
- [DefaultValueAttribute (null)]\r
- [DesignerSerializationVisibilityAttribute (DesignerSerializationVisibility.Content)]\r
- [NotifyParentPropertyAttribute (true)]\r
- [PersistenceModeAttribute (PersistenceMode.InnerProperty)]\r
+ [DefaultValueAttribute (null)]
+ [DesignerSerializationVisibilityAttribute (DesignerSerializationVisibility.Content)]
+ [NotifyParentPropertyAttribute (true)]
+ [PersistenceModeAttribute (PersistenceMode.InnerProperty)]
public Style CurrentNodeStyle {
get {
if (currentNodeStyle == null) {
[DefaultValue (null)]
[TemplateContainer (typeof(SiteMapNodeItem), BindingDirection.OneWay)]
[PersistenceMode (PersistenceMode.InnerProperty)]
- [Browsable (false)]
+ [Browsable (false)]
public virtual ITemplate CurrentNodeTemplate {
get { return currentNodeTemplate; }
set { currentNodeTemplate = value; UpdateControls (); }
}
- [DefaultValueAttribute (null)]\r
- [DesignerSerializationVisibilityAttribute (DesignerSerializationVisibility.Content)]\r
- [NotifyParentPropertyAttribute (true)]\r
- [PersistenceModeAttribute (PersistenceMode.InnerProperty)]\r
+ [DefaultValueAttribute (null)]
+ [DesignerSerializationVisibilityAttribute (DesignerSerializationVisibility.Content)]
+ [NotifyParentPropertyAttribute (true)]
+ [PersistenceModeAttribute (PersistenceMode.InnerProperty)]
public Style NodeStyle {
get {
if (nodeStyle == null) {
[DefaultValue (null)]
[TemplateContainer (typeof(SiteMapNodeItem), BindingDirection.OneWay)]
[PersistenceMode (PersistenceMode.InnerProperty)]
- [Browsable (false)]
+ [Browsable (false)]
public virtual ITemplate NodeTemplate {
get { return nodeTemplate; }
set { nodeTemplate = value; UpdateControls (); }
}
- [DefaultValueAttribute (-1)]\r
- [ThemeableAttribute (false)]\r
+ [DefaultValueAttribute (-1)]
+ [ThemeableAttribute (false)]
public virtual int ParentLevelsDisplayed {
- get {
- object ob = ViewState ["ParentLevelsDisplayed"];
- if (ob != null) return (int) ob;
- else return -1;
- }
+ get { return ViewState.GetInt ("ParentLevelsDisplayed", -1); }
set {
if (value < -1) throw new ArgumentOutOfRangeException ("value");
ViewState ["ParentLevelsDisplayed"] = value;
}
}
- [DefaultValueAttribute (PathDirection.RootToCurrent)]\r
+ [DefaultValueAttribute (PathDirection.RootToCurrent)]
public virtual PathDirection PathDirection {
- get {
- object ob = ViewState ["PathDirection"];
- if (ob != null) return (PathDirection) ob;
- else return PathDirection.RootToCurrent;
- }
+ get { return (PathDirection)ViewState.GetInt ("PathDirection", (int)PathDirection.RootToCurrent); }
set {
if (value != PathDirection.RootToCurrent && value != PathDirection.CurrentToRoot)
throw new ArgumentOutOfRangeException ("value");
}
}
- [DefaultValueAttribute (" > ")]\r
- [LocalizableAttribute (true)]\r
+ [DefaultValueAttribute (" > ")]
+ [LocalizableAttribute (true)]
public virtual string PathSeparator {
- get {
- object ob = ViewState ["PathSeparator"];
- if (ob != null) return (string) ob;
- else return " > ";
- }
+ get { return ViewState.GetString ("PathSeparator", ">"); }
set {
ViewState ["PathSeparator"] = value;
UpdateControls ();
}
}
- [DefaultValueAttribute (null)]\r
- [DesignerSerializationVisibilityAttribute (DesignerSerializationVisibility.Content)]\r
- [NotifyParentPropertyAttribute (true)]\r
- [PersistenceModeAttribute (PersistenceMode.InnerProperty)]\r
+ [DefaultValueAttribute (null)]
+ [DesignerSerializationVisibilityAttribute (DesignerSerializationVisibility.Content)]
+ [NotifyParentPropertyAttribute (true)]
+ [PersistenceModeAttribute (PersistenceMode.InnerProperty)]
public Style PathSeparatorStyle {
get {
if (pathSeparatorStyle == null) {
[DefaultValue (null)]
[TemplateContainer (typeof(SiteMapNodeItem), BindingDirection.OneWay)]
[PersistenceMode (PersistenceMode.InnerProperty)]
- [Browsable (false)]
+ [Browsable (false)]
public virtual ITemplate PathSeparatorTemplate {
get { return pathSeparatorTemplate; }
set { pathSeparatorTemplate = value; UpdateControls (); }
}
- [BrowsableAttribute (false)]\r
- [DesignerSerializationVisibilityAttribute (DesignerSerializationVisibility.Hidden)]\r
+ [BrowsableAttribute (false)]
+ [DesignerSerializationVisibilityAttribute (DesignerSerializationVisibility.Hidden)]
public SiteMapProvider Provider {
get {
if (provider == null) {
}
}
- [DefaultValueAttribute (false)]\r
+ [DefaultValueAttribute (false)]
public virtual bool RenderCurrentNodeAsLink {
- get {
- object o = ViewState ["RenderCurrentNodeAsLink"];
- if (o != null) return (bool) o;
- else return false;
- }
+ get { return ViewState.GetBool ("RenderCurrentNodeAsLink", false); }
set {
ViewState ["RenderCurrentNodeAsLink"] = value;
UpdateControls ();
}
}
- [DefaultValueAttribute (null)]\r
- [DesignerSerializationVisibilityAttribute (DesignerSerializationVisibility.Content)]\r
- [NotifyParentPropertyAttribute (true)]\r
- [PersistenceModeAttribute (PersistenceMode.InnerProperty)]\r
+ [DefaultValueAttribute (null)]
+ [DesignerSerializationVisibilityAttribute (DesignerSerializationVisibility.Content)]
+ [NotifyParentPropertyAttribute (true)]
+ [PersistenceModeAttribute (PersistenceMode.InnerProperty)]
public Style RootNodeStyle {
get {
if (rootNodeStyle == null) {
[DefaultValue (null)]
[TemplateContainer (typeof(SiteMapNodeItem), BindingDirection.OneWay)]
[PersistenceMode (PersistenceMode.InnerProperty)]
- [Browsable (false)]
+ [Browsable (false)]
public virtual ITemplate RootNodeTemplate {
get { return rootNodeTemplate; }
set { rootNodeTemplate = value; UpdateControls (); }
}
- [DefaultValueAttribute (true)]\r
- [ThemeableAttribute (false)]\r
+ [DefaultValueAttribute (true)]
+ [ThemeableAttribute (false)]
public virtual bool ShowToolTips {
- get {
- object o = ViewState ["ShowToolTips"];
- if (o != null) return (bool) o;
- else return true;
- }
+ get { return ViewState.GetBool ("ShowToolTips", true); }
set {
ViewState ["ShowToolTips"] = value;
UpdateControls ();
}
}
- [DefaultValueAttribute ("")]\r
- [ThemeableAttribute (false)]\r
+ [DefaultValueAttribute ("")]
+ [ThemeableAttribute (false)]
public virtual string SiteMapProvider {
- get {
- object o = ViewState ["SiteMapProvider"];
- if (o != null) return (string) o;
- else return string.Empty;
- }
+ get { return ViewState.GetString ("SiteMapProvider", ""); }
set {
ViewState ["SiteMapProvider"] = value;
UpdateControls ();
}
[Localizable (true)]
- [MonoTODO]
public virtual string SkipLinkText
{
- get {
- throw new NotImplementedException ();
- }
- set {
- throw new NotImplementedException ();
- }
+ get { return ViewState.GetString ("SkipLinkText", "Skip Navigation Links"); }
+ set { ViewState["SkipLinkText"] = value; }
}
ChildControlsCreated = false;
}
- [MonoTODO]
public override void DataBind ()
{
- throw new NotImplementedException ();
- }
-
- protected override void AddAttributesToRender (HtmlTextWriter writer)
- {
- base.AddAttributesToRender (writer);
+ base.DataBind ();
+
+ /* the child controls get bound in
+ * base.DataBind */
+ foreach (Control c in Controls) {
+ if (c is SiteMapNodeItem) {
+ SiteMapNodeItem it = (SiteMapNodeItem)c;
+ OnItemDataBound (new SiteMapNodeItemEventArgs (it));
+ }
+ }
}
protected internal override void CreateChildControls ()
{
Controls.Clear ();
CreateControlHierarchy ();
+ DataBind ();
}
-
+
protected virtual void CreateControlHierarchy ()
{
ArrayList nodes = new ArrayList ();
SiteMapNodeItemEventArgs args = new SiteMapNodeItemEventArgs (it);
OnItemCreated (args);
- it.DataBind ();
- OnItemDataBound (args);
-
nodes.Add (it);
node = node.ParentNode;
levels--;
if (states[4] != null) ((IStateManager)RootNodeStyle).LoadViewState (states[4]);
}
- [MonoTODO]
+ [MonoTODO ("why override?")]
protected override void OnDataBinding (EventArgs e)
{
- throw new NotImplementedException ();
+ base.OnDataBinding (e);
}
+ [MonoTODO ("why override?")]
protected internal override void Render (HtmlTextWriter w)
{
base.Render (w);
protected internal override void RenderContents (HtmlTextWriter w)
{
+ string skip_id = ClientID + "_SkipLink";
+
+ if (SkipLinkText != "") {
+ HtmlAnchor anchor = new HtmlAnchor ();
+ anchor.HRef = "#" + skip_id;
+
+ HtmlImage img = new HtmlImage ();
+ img.Src = Page.ClientScript.GetWebResourceUrl (typeof (SiteMapPath), "transparent.gif");
+ img.Width = 0;
+ img.Height = 0;
+ img.Alt = SkipLinkText;
+ img.Border = 0;
+
+ anchor.Controls.Add (img);
+
+ anchor.Render (w);
+ }
+
base.RenderContents (w);
+
+ if (SkipLinkText != "") {
+ HtmlAnchor anchor = new HtmlAnchor ();
+ anchor.ID = skip_id;
+ anchor.Render (w);
+ }
}
protected override object SaveViewState ()