2009-06-19 07:39:16 +00:00
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 ;
2009-08-10 11:14:28 +00:00
using ClientDependency.Core ;
2009-06-19 07:39:16 +00:00
namespace umbraco.uicontrols {
2009-07-26 15:13:15 +00:00
[ClientDependency(ClientDependencyType.Javascript, "tabview/javascript.js", "UmbracoClient")]
[ClientDependency(ClientDependencyType.Css, "tabview/style.css", "UmbracoClient")]
2010-06-20 17:44:48 +00:00
[ClientDependency(0, ClientDependencyType.Javascript, "Application/NamespaceManager.js", "UmbracoClient")]
public class TabView : System . Web . UI . WebControls . WebControl
{
private HtmlInputHidden tb = new HtmlInputHidden ( ) ;
private ArrayList Tabs = new ArrayList ( ) ;
protected ArrayList Panels = new ArrayList ( ) ;
private string status = "" ;
2009-06-19 07:39:16 +00:00
2010-06-20 17:44:48 +00:00
public ArrayList GetPanels ( ) {
return Panels ;
}
2009-06-19 07:39:16 +00:00
2010-06-20 17:44:48 +00:00
public TabPage NewTabPage ( string text ) {
Tabs . Add ( text ) ;
TabPage tp = new TabPage ( ) ;
tp . Width = this . Width ;
tp . ID = this . ID + "_tab0" + ( Panels . Count + 1 ) + "layer" ;
Panels . Add ( tp ) ;
this . Controls . Add ( tp ) ;
return tp ;
}
2009-06-19 07:39:16 +00:00
2010-06-20 17:44:48 +00:00
public string Status {
get { return status ; }
set { status = value ; }
}
2009-06-19 07:39:16 +00:00
2010-06-20 17:44:48 +00:00
private bool _autoResize = true ;
public bool AutoResize {
get { return _autoResize ; }
set { _autoResize = value ; }
}
2009-06-19 07:39:16 +00:00
2010-06-20 17:44:48 +00:00
private string ActiveTabId {
get {
if ( this . Parent . Page . IsPostBack ) {
return this . Parent . Page . Request . Form [ this . ClientID + "_activetab" ] ;
}
return this . ClientID + "_tab01" ;
}
}
2009-06-19 07:39:16 +00:00
2010-06-20 17:44:48 +00:00
protected override void OnPreRender ( EventArgs e ) {
base . OnPreRender ( e ) ;
SetupClientScript ( ) ;
}
2009-06-19 07:39:16 +00:00
2010-06-20 17:44:48 +00:00
private void SetupClientScript ( ) {
2009-06-19 07:39:16 +00:00
2010-06-20 17:44:48 +00:00
string strTmp = "" ;
for ( int i = 1 ; i < = Tabs . Count ; i + + ) {
if ( i > 1 )
strTmp + = "," ;
strTmp + = "\"" + this . ClientID + "_tab0" + i + "\"" ;
}
this . Page . ClientScript . RegisterStartupScript (
this . GetType ( ) ,
this . ClientID + "TabCollection" , ";var " + this . ClientID + "_tabs = new Array(" + strTmp + ");setActiveTab('" + this . ClientID + "','" + this . ActiveTabId + "'," + this . ClientID + "_tabs);" ,
true ) ;
2009-06-19 07:39:16 +00:00
2010-06-20 17:44:48 +00:00
if ( _autoResize )
this . Page . ClientScript . RegisterStartupScript ( this . GetType ( ) , "TabviewEvents" , "jQuery(document).ready(function(){resizeTabView(" + this . ClientID + "_tabs, '" + this . ClientID + "'); }); jQuery(window).resize(function(){ resizeTabView(" + this . ClientID + "_tabs, '" + this . ClientID + "'); });" , true ) ;
}
2009-06-19 07:39:16 +00:00
2010-06-20 17:44:48 +00:00
protected override void Render ( HtmlTextWriter writer ) {
writer . WriteLine ( "<div id='" + this . ClientID + "' style='height:" + this . Height . Value + "px;width:" + this . Width . Value + "px;'>" ) ;
writer . WriteLine ( " <div class='header'>" ) ;
writer . WriteLine ( " <ul>" ) ;
for ( int i = 0 ; i < = Tabs . Count - 1 ; i + + ) {
string TabPageCaption = ( string ) Tabs [ i ] ;
string TabId = this . ClientID + "_tab0" + ( i + 1 ) ;
writer . WriteLine ( " <li id='" + TabId + "' class='tabOff'>" ) ;
writer . WriteLine ( " <a id='" + TabId + "a' href='#' onclick=\"setActiveTab('" + this . ClientID + "','" + TabId + "'," + this . ClientID + "_tabs); return false;\">" ) ;
writer . WriteLine ( " <span><nobr>" + TabPageCaption + "</nobr></span>" ) ;
writer . WriteLine ( " </a>" ) ;
writer . WriteLine ( " </li>" ) ;
}
writer . WriteLine ( " </ul>" ) ;
writer . WriteLine ( " </div>" ) ;
writer . WriteLine ( " <div id='' class='tabpagecontainer'>" ) ;
this . RenderChildren ( writer ) ;
writer . WriteLine ( "\t</div>" ) ;
writer . WriteLine ( "\t<div class='footer'><div class='status'><h2>" + this . status + "</h2></div></div>" ) ;
writer . WriteLine ( "</div>" ) ;
writer . WriteLine ( "<input type='hidden' name='" + this . ClientID + "_activetab' id='" + this . ClientID + "_activetab' value='" + this . ActiveTabId + "'/>" ) ;
}
}
2009-06-19 07:39:16 +00:00
}