// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
//
-#if NET_2_0
using System.Collections;
using System.Text;
[Designer ("System.Web.UI.Design.WebControls.TreeViewDesigner, " + Consts.AssemblySystem_Design, "System.ComponentModel.Design.IDesigner")]
public class TreeView: HierarchicalDataBoundControl, IPostBackEventHandler, IPostBackDataHandler, ICallbackEventHandler
{
+ static readonly char[] postDataSplitChars = {'|'};
+
string activeSiteMapPath;
bool stylesPrepared;
Style hoverNodeStyle;
if (EnableClientScript && PopulateNodesFromClient) {
string states = postCollection [ClientID + "_PopulatedStates"];
if (states != null) {
- foreach (string id in states.Split ('|')) {
- if (String.IsNullOrEmpty(id))
- continue;
+ foreach (string id in states.Split (postDataSplitChars, StringSplitOptions.RemoveEmptyEntries)) {
TreeNode node = FindNodeByPos (id);
- if (node != null && node.PopulateOnDemand && !node.Populated)
- node.Populated = true;
+ if (node != null && node.PopulateOnDemand && !node.Populated) {
+ Page page = Page;
+ if (page != null && page.IsCallback)
+ node.Populated = true; // Bug #492307
+ else
+ node.Populate (); // Bug #626829
+ }
}
}
res = true;
if (EnableClientScript) {
string states = postCollection [ClientID + "_ExpandStates"];
if (states != null) {
- string[] ids = states.Split ('|');
+ string[] ids = states.Split (postDataSplitChars, StringSplitOptions.RemoveEmptyEntries);
UnsetExpandStates (Nodes, ids);
SetExpandStates (ids);
} else
writer.AddAttribute (HtmlTextWriterAttribute.Src, csm.GetWebResourceUrl (typeof (SiteMapPath), "transparent.gif"));
writer.AddAttribute (HtmlTextWriterAttribute.Height, "0");
writer.AddAttribute (HtmlTextWriterAttribute.Width, "0");
-#if NET_4_0
writer.AddStyleAttribute (HtmlTextWriterStyle.BorderWidth, "0px");
-#endif
writer.RenderBeginTag (HtmlTextWriterTag.Img);
writer.RenderEndTag (); // img
void RenderNode (HtmlTextWriter writer, TreeNode node, int level, ArrayList levelLines, bool hasPrevious, bool hasNext)
{
- if (node.PopulateOnDemand && node.HadChildrenBeforePopulating)
- throw new InvalidOperationException ("PopulateOnDemand cannot be set to true on a node that already has children.");
+ // FIXME: disabled for now - needs closer investigation
+ //if (node.PopulateOnDemand && node.HadChildrenBeforePopulating)
+ // throw new InvalidOperationException ("PopulateOnDemand cannot be set to true on a node that already has children.");
DecorateNode(node);
writer.AddStyleAttribute (HtmlTextWriterStyle.BorderWidth, "0");
writer.RenderBeginTag (HtmlTextWriterTag.Table);
- Unit nodeSpacing = GetNodeSpacing (node);
-#if !NET_4_0
- if (nodeSpacing != Unit.Empty && (node.Depth > 0 || node.Index > 0))
- RenderMenuItemSpacing (writer, nodeSpacing);
-#endif
writer.RenderBeginTag (HtmlTextWriterTag.Tr);
// Vertical lines from previous levels
if (!String.IsNullOrEmpty (imageUrl)) {
writer.RenderBeginTag (HtmlTextWriterTag.Td); // TD
-#if NET_4_0
writer.AddAttribute (HtmlTextWriterAttribute.Tabindex, "-1");
-#endif
BeginNodeTag (writer, node, clientExpand);
writer.AddAttribute (HtmlTextWriterAttribute.Src, imageUrl);
writer.AddStyleAttribute (HtmlTextWriterStyle.BorderWidth, "0");
if (node.ShowCheckBoxInternal) {
writer.AddAttribute (HtmlTextWriterAttribute.Name, ClientID + "_cs_" + node.Path);
writer.AddAttribute (HtmlTextWriterAttribute.Type, "checkbox", false);
-#if !NET_4_0
- writer.AddAttribute (HtmlTextWriterAttribute.Title, node.Text);
-#endif
+ string str = node.ToolTip;
+ if (!String.IsNullOrEmpty (str))
+ writer.AddAttribute (HtmlTextWriterAttribute.Title, str);
if (node.Checked)
writer.AddAttribute (HtmlTextWriterAttribute.Checked, "checked", false);
writer.RenderBeginTag (HtmlTextWriterTag.Input); // INPUT
writer.RenderEndTag (); // TD
writer.RenderEndTag (); // TR
-#if !NET_4_0
- if (nodeSpacing != Unit.Empty)
- RenderMenuItemSpacing (writer, nodeSpacing);
-#endif
writer.RenderEndTag (); // TABLE
return;
writer.RenderBeginTag (HtmlTextWriterTag.Table);
- writer.AddAttribute (HtmlTextWriterAttribute.Height, ((int) value).ToString () + "dupa1", false);
+ writer.AddAttribute (HtmlTextWriterAttribute.Height, ((int) value).ToString (), false);
writer.RenderBeginTag (HtmlTextWriterTag.Tr);
writer.RenderBeginTag (HtmlTextWriterTag.Td);
writer.RenderEndTag (); // td
void RenderMenuItemSpacing (HtmlTextWriter writer, Unit itemSpacing)
{
-#if !NET_4_0
- writer.AddStyleAttribute (HtmlTextWriterStyle.Height, itemSpacing.ToString ());
-#endif
writer.RenderBeginTag (HtmlTextWriterTag.Tr);
writer.RenderBeginTag (HtmlTextWriterTag.Td);
writer.RenderEndTag ();
if (Page.Header != null) {
// styles are registered
if (nodeStyle != null) {
- style.AddCssClass (nodeStyle.CssClass);
- style.AddCssClass (nodeStyle.RegisteredCssClass);
+ style.PrependCssClass (nodeStyle.RegisteredCssClass);
+ style.PrependCssClass (nodeStyle.CssClass);
}
if (node.IsLeafNode) {
if (leafNodeStyle != null) {
- style.AddCssClass (leafNodeStyle.CssClass);
- style.AddCssClass (leafNodeStyle.RegisteredCssClass);
+ style.PrependCssClass (leafNodeStyle.RegisteredCssClass);
+ style.PrependCssClass (leafNodeStyle.CssClass);
}
} else if (node.IsRootNode) {
if (rootNodeStyle != null) {
- style.AddCssClass (rootNodeStyle.CssClass);
- style.AddCssClass (rootNodeStyle.RegisteredCssClass);
+ style.PrependCssClass (rootNodeStyle.RegisteredCssClass);
+ style.PrependCssClass (rootNodeStyle.CssClass);
}
} else if (node.IsParentNode) {
if (parentNodeStyle != null) {
- style.AddCssClass (parentNodeStyle.CssClass);
style.AddCssClass (parentNodeStyle.RegisteredCssClass);
+ style.AddCssClass (parentNodeStyle.CssClass);
}
}
+
if (levelStyles != null && levelStyles.Count > level) {
- style.AddCssClass (levelStyles [level].CssClass);
- style.AddCssClass (levelStyles [level].RegisteredCssClass);
+ style.PrependCssClass (levelStyles [level].RegisteredCssClass);
+ style.PrependCssClass (levelStyles [level].CssClass);
}
if (nodeIsSelected) {
- style.AddCssClass (selectedNodeStyle.CssClass);
style.AddCssClass (selectedNodeStyle.RegisteredCssClass);
+ style.AddCssClass (selectedNodeStyle.CssClass);
}
} else {
// styles are not registered
void AddNodeLinkStyle (HtmlTextWriter writer, TreeNode node, int level, bool nodeIsSelected)
{
Style style = new Style ();
-#if NET_4_0
bool addBorderStyle = false;
-#endif
if (Page.Header != null) {
// styles are registered
style.AddCssClass (ControlLinkStyle.RegisteredCssClass);
if (levelLinkStyles != null && levelLinkStyles.Count > level) {
style.AddCssClass (levelLinkStyles [level].CssClass);
style.AddCssClass (levelLinkStyles [level].RegisteredCssClass);
-#if NET_4_0
addBorderStyle = true;
-#endif
}
if (node.IsLeafNode) {
if (levelLinkStyles != null && levelLinkStyles.Count > level) {
style.CopyFrom (levelLinkStyles [level]);
-#if NET_4_0
addBorderStyle = true;
-#endif
}
if (node.IsLeafNode) {
style.AlwaysRenderTextDecoration = true;
}
-#if NET_4_0
if (addBorderStyle) {
// This appears not to come from any style. Instead, it's added
// whenever a level style is present.
writer.AddStyleAttribute (HtmlTextWriterStyle.BorderStyle, "none");
writer.AddStyleAttribute (HtmlTextWriterStyle.FontSize, "1em");
}
-#endif
style.AddAttributesToRender (writer);
}
string navigateUrl = node.NavigateUrl;
if (!String.IsNullOrEmpty (navigateUrl)) {
string target = node.Target.Length > 0 ? node.Target : Target;
-#if TARGET_J2EE
- string navUrl = ResolveClientUrl (navigateUrl, String.Compare (target, "_blank", StringComparison.InvariantCultureIgnoreCase) != 0);
-#else
string navUrl = ResolveClientUrl (navigateUrl);
-#endif
writer.AddAttribute (HtmlTextWriterAttribute.Href, navUrl);
if (target.Length > 0)
writer.AddAttribute (HtmlTextWriterAttribute.Target, target);
}
}
}
-#endif