return emptyNames;
}
- public IList GetList ()
+ public virtual IList GetList ()
{
return ListSourceHelper.GetList (this);
}
- [BrowsableAttribute (false)]\r
- [DesignerSerializationVisibilityAttribute (DesignerSerializationVisibility.Hidden)]\r
- public bool ContainsListCollection {
+ [BrowsableAttribute (false)]
+ [DesignerSerializationVisibilityAttribute (DesignerSerializationVisibility.Hidden)]
+ public virtual bool ContainsListCollection {
get { return ListSourceHelper.ContainsListCollection (this); }
}
remove { ((IHierarchicalDataSource)this).DataSourceChanged -= value; }
}
- [BrowsableAttribute (false)]\r
- [DesignerSerializationVisibilityAttribute (DesignerSerializationVisibility.Hidden)]\r
+ [BrowsableAttribute (false)]
+ [DesignerSerializationVisibilityAttribute (DesignerSerializationVisibility.Hidden)]
public SiteMapProvider Provider {
get {
if (provider == null) {
}
}
- [DefaultValueAttribute ("")]\r
- public string SiteMapProvider {
- get {
- object o = ViewState ["SiteMapProvider"];
- if (o != null) return (string) o;
- else return string.Empty;
- }
+ [DefaultValueAttribute ("")]
+ public virtual string SiteMapProvider {
+ get { return ViewState.GetString ("SiteMapProvider", ""); }
set {
ViewState ["SiteMapProvider"] = value;
OnDataSourceChanged (EventArgs.Empty);
}
}
- [DefaultValueAttribute ("")]\r
- [EditorAttribute ("System.Web.UI.Design.UrlEditor, " + Consts.AssemblySystem_Design, "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)]\r
- [UrlPropertyAttribute]\r
- public string StartingNodeUrl {
- get {
- object o = ViewState ["StartingNodeUrl"];
- if (o != null) return (string) o;
- else return string.Empty;
- }
+ [DefaultValueAttribute ("")]
+ [EditorAttribute ("System.Web.UI.Design.UrlEditor, " + Consts.AssemblySystem_Design, "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)]
+ [UrlPropertyAttribute]
+ public virtual string StartingNodeUrl {
+ 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)]\r
- public bool StartFromCurrentNode {
- get {
- object o = ViewState ["StartFromCurrentNode"];
- if (o != null) return (bool) o;
- else return false;
- }
+ [DefaultValueAttribute (false)]
+ public virtual bool StartFromCurrentNode {
+ get { return ViewState.GetBool ("StartFromCurrentNode", false); }
set {
ViewState ["StartFromCurrentNode"] = value;
OnDataSourceChanged (EventArgs.Empty);
}
}
- [DefaultValueAttribute (true)]\r
- public bool ShowStartingNode {
- get {
- object o = ViewState ["ShowStartingNode"];
- if (o != null) return (bool) o;
- else return true;
- }
+ [DefaultValueAttribute (true)]
+ public virtual bool ShowStartingNode {
+ get { return ViewState.GetBool ("ShowStartingNode", true); }
set {
ViewState ["ShowStartingNode"] = value;
OnDataSourceChanged (EventArgs.Empty);
}
}
- public DataSourceView GetView (string viewName)
+ public virtual DataSourceView GetView (string viewName)
{
SiteMapNode node = GetStartNode (viewName);
if (node == null)
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)