Files
Umbraco-CMS/components/umbraco.controls/ScrollingMenu.cs
Shandem f6d0d043b5 DO NOT DOWNLOAD. DOWNLOAT LATEST STABLE FROM RELEASE TAB
Created 4.1.0 branch

[TFS Changeset #55082]
2009-06-19 07:39:16 +00:00

166 lines
6.9 KiB
C#

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
namespace umbraco.uicontrols {
[ToolboxData("<{0}:ScrollingMenu runat=server></{0}:ScrollingMenu>")]
public class ScrollingMenu : System.Web.UI.WebControls.WebControl {
private ArrayList Icons = new ArrayList();
private string iconIds;
private int extraMenuWidth = 0;
private string _ClientFilesPath = "/umbraco_client/scrollingmenu/";
public MenuIconI NewIcon(int Index) {
MenuIcon Icon = new MenuIcon();
Icons.Insert(Index, Icon);
return Icon;
}
public MenuIconI NewIcon() {
MenuIcon icon = new MenuIcon();
Icons.Add(icon);
return icon;
}
public MenuImageButton NewImageButton() {
MenuImageButton icon = new MenuImageButton();
Icons.Add(icon);
return icon;
}
public MenuImageButton NewImageButton(int Index) {
MenuImageButton icon = new MenuImageButton();
Icons.Insert(Index, icon);
return icon;
}
public System.Web.UI.WebControls.DropDownList NewDropDownList() {
DropDownList Icon = new DropDownList();
Icons.Add(Icon);
return Icon;
}
public void NewElement(string ElementName, string ElementId, string ElementClass, int ExtraWidth) {
Icons.Add(new LiteralControl("<" + ElementName + " class=\"" + ElementClass + "\" id=\"" + ElementId + "\"></" + ElementName + ">"));
extraMenuWidth = extraMenuWidth + ExtraWidth;
}
public void InsertSplitter() {
Splitter icon = new Splitter();
Icons.Add(icon);
}
public void InsertSplitter(int Index) {
Splitter icon = new Splitter();
Icons.Insert(Index, icon);
}
protected override void OnLoad(System.EventArgs EventArguments) {
if (base.Visible)
{
SetupMenu();
SetupClientScript();
}
}
private void SetupClientScript() {
helper.AddLinkToHeader("SCROLLINGMENUCSS", "/umbraco_client/scrollingmenu/style.css", this.Page);
helper.AddScriptToHeader("SCROLLINGMENUJS", "/umbraco_client/scrollingmenu/javascript.js", this.Page);
// this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "SCROLLINGMENUCSS", "<link rel='stylesheet' href='/umbraco_client/scrollingmenu/style.css' />");
// this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "SCROLLINGMENUJS", "<script type='text/javascript' src='/umbraco_client/scrollingmenu/javascript.js'></script>");
}
private System.Web.UI.WebControls.Image scrollImage() {
System.Web.UI.WebControls.Image functionReturnValue = null;
functionReturnValue = new System.Web.UI.WebControls.Image();
functionReturnValue.Width = Unit.Pixel(7);
functionReturnValue.Height = Unit.Pixel(20);
functionReturnValue.BorderWidth = Unit.Pixel(0);
functionReturnValue.Attributes.Add("align", "absMiddle");
functionReturnValue.CssClass = "editorArrow";
functionReturnValue.Attributes.Add("onMouseOut", "this.className = 'editorArrow'; scrollStop();");
return functionReturnValue;
}
private void SetupMenu() {
// Calculate innerlayer max width 32 pixel per icon
int ScrollingLayerWidth = Icons.Count * 26 + extraMenuWidth;
Table Container = new Table();
Container.ID = String.Format("{0}_tableContainer", this.ID);
TableRow tr = new TableRow();
tr.ID = String.Format("{0}_tableContainerRow", this.ID);
Container.Rows.Add(tr);
// // scroll-left image
TableCell td = new TableCell();
td.ID = String.Format("{0}_tableContainerLeft", this.ID);
System.Web.UI.WebControls.Image scrollL = scrollImage();
scrollL.ImageUrl = _ClientFilesPath + "images/arrawBack.gif";
scrollL.Attributes.Add("onMouseOver", "this.className = 'editorArrowOver'; scrollR('" + this.ClientID + "_sl','" + this.ClientID + "_slh'," + ScrollingLayerWidth + ");");
td.Controls.Add(scrollL);
tr.Cells.Add(td);
// // Menulayers
td = new TableCell();
td.ID = String.Format("{0}_tableContainerButtons", this.ID);
HtmlGenericControl outerLayer = new HtmlGenericControl();
outerLayer.TagName = "div";
outerLayer.ID = this.ID + "_slh";
outerLayer.Attributes.Add("class", "slh");
outerLayer.Style.Add("height", "26px");
string tmp = this.Width.ToString();
outerLayer.Style.Add("width", (this.Width.Value - 18).ToString() + "px");
td.Controls.Add(outerLayer);
HtmlGenericControl menuLayer = new HtmlGenericControl();
menuLayer.TagName = "div";
menuLayer.ID = this.ID + "_sl";
menuLayer.Style.Add("top", "0px");
menuLayer.Style.Add("left", "0px");
menuLayer.Attributes.Add("class", "sl");
menuLayer.Style.Add("height", "26px");
menuLayer.Style.Add("width", ScrollingLayerWidth + "px");
HtmlGenericControl nobr = new HtmlGenericControl();
nobr.TagName = "nobr";
nobr.ID = String.Format("{0}_nobr", this.ID);
menuLayer.Controls.Add(nobr);
// // add all icons to the menu layer
foreach (Control item in Icons) {
menuLayer.Controls.Add(item);
if (item.ID != "") {
iconIds = iconIds + item.ID + ",";
}
}
outerLayer.Controls.Add(new LiteralControl("<script>RegisterScrollingMenuButtons('" + this.ClientID + "', '" + iconIds + "');</script>"));
outerLayer.Controls.Add(menuLayer);
tr.Cells.Add(td);
// // scroll-right image
td = new TableCell();
td.ID = String.Format("{0}_tableContainerRight", this.ID);
System.Web.UI.WebControls.Image scrollR = scrollImage();
scrollR.ImageUrl = _ClientFilesPath + "images/arrowForward.gif";
scrollR.Attributes.Add("onMouseOver", "this.className = 'editorArrowOver'; scrollL('" + this.ClientID + "_sl','" + this.ClientID + "_slh'," + ScrollingLayerWidth + ");");
td.Controls.Add(scrollR);
tr.Cells.Add(td);
this.Controls.Add(Container);
}
}
}