Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

319 lines (279 sloc) 6.99 kB
//
// tabcontrol2.cs: sample user control.
//
// Authors:
// Gonzalo Paniagua Javier (gonzalo@ximian.com)
//
// Licensed under the terms of the MIT X11 license
//
// (C) 2002 Ximian, Inc (http://www.ximian.com)
//
using System;
using System.Collections;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
namespace Mono.Controls
{
[ParseChildren(false)]
public class TabContent : Control
{
string label;
public TabContent ()
{
}
protected override void Render (HtmlTextWriter writer)
{
if (this.Parent.GetType () != typeof (Tabs2))
throw new ApplicationException ("TabContent can only be rendered inside Tabs2");
base.Render (writer);
}
public string Label
{
get {
if (label == null)
return "* You did not set a label for this control *";
return label;
}
set {
label = value;
}
}
}
[ParseChildren(false)]
public class Tabs2 : UserControl, IPostBackEventHandler, IParserAccessor
{
Hashtable localValues;
ArrayList titles;
public Tabs2 ()
{
titles = new ArrayList ();
localValues = new Hashtable ();
}
private void AddTab (TabContent tabContent)
{
string title = tabContent.Label;
Controls.Add (tabContent);
titles.Add (title);
if (Controls.Count == 1)
CurrentTabName = title;
}
protected override object SaveViewState ()
{
return new Triplet (base.SaveViewState (), localValues, titles);
}
protected override void LoadViewState (object savedState)
{
if (savedState != null) {
Triplet saved = (Triplet) savedState;
base.LoadViewState (saved.First);
localValues = saved.Second as Hashtable;
titles = saved.Third as ArrayList;
}
}
protected override void OnPreRender (EventArgs e)
{
base.OnPreRender (e);
Page.GetPostBackEventReference (this);
foreach (TabContent content in Controls) {
if (content.Label == CurrentTabName)
content.Visible = true;
else
content.Visible = false;
}
}
void IPostBackEventHandler.RaisePostBackEvent (string argument)
{
if (argument == null)
return;
if (CurrentTabName != argument)
CurrentTabName = argument;
}
protected override ControlCollection CreateControlCollection ()
{
return new ControlCollection (this);
}
protected override void AddParsedSubObject (object obj)
{
if (obj is LiteralControl)
return; // Ignore plain text
if (!(obj is TabContent))
throw new ArgumentException ("Tabs2 Only allows TabContent controls inside.",
"obj");
AddTab ((TabContent) obj);
}
void IParserAccessor.AddParsedSubObject (object obj)
{
AddParsedSubObject (obj);
}
private void RenderBlank (HtmlTextWriter writer)
{
writer.WriteBeginTag ("td");
writer.WriteAttribute ("bgcolor", TabBackColor);
writer.WriteAttribute ("width", BlankWidth.ToString ());
writer.Write (">");
writer.Write (" ");
writer.WriteEndTag ("td");
}
private void RenderTabs (HtmlTextWriter writer)
{
writer.WriteBeginTag ("tr");
writer.Write (">");
writer.WriteLine ();
if (titles.Count > 0)
RenderBlank (writer);
string currentTab = CurrentTabName;
string key;
int end = titles.Count;
for (int i = 0; i < end; i++) {
key = (string) titles [i];
writer.WriteBeginTag ("td");
writer.WriteAttribute ("width", Width.ToString ());
writer.WriteAttribute ("align", Align.ToString ());
if (key == currentTab) {
writer.WriteAttribute ("bgcolor", CurrentTabBackColor);
writer.Write (">");
writer.WriteBeginTag ("font");
writer.WriteAttribute ("color", CurrentTabColor);
writer.Write (">");
writer.Write (key);
writer.WriteEndTag ("font");
} else {
writer.WriteAttribute ("bgcolor", TabBackColor);
writer.Write (">");
writer.WriteBeginTag ("a");
string postbackEvent = String.Empty;
if (Page != null)
postbackEvent = Page.ClientScript.GetPostBackClientHyperlink (
this, key);
writer.WriteAttribute ("href", postbackEvent);
writer.Write (">");
writer.Write (key);
writer.WriteEndTag ("a");
}
writer.WriteEndTag ("td");
RenderBlank (writer);
writer.WriteLine ();
}
writer.WriteEndTag ("tr");
writer.WriteBeginTag ("tr");
writer.Write (">");
writer.WriteLine ();
writer.WriteBeginTag ("td");
writer.WriteAttribute ("colspan", "10");
writer.WriteAttribute ("bgcolor", CurrentTabBackColor);
writer.Write (">");
writer.WriteBeginTag ("img");
writer.WriteAttribute ("width", "1");
writer.WriteAttribute ("height", "1");
writer.WriteAttribute ("alt", "");
writer.Write (">");
writer.WriteEndTag ("td");
writer.WriteEndTag ("tr");
}
protected override void Render (HtmlTextWriter writer)
{
if (Page != null)
Page.VerifyRenderingInServerForm (this);
if (Controls.Count == 0)
return;
writer.WriteBeginTag ("table");
writer.WriteAttribute ("border", "0");
writer.WriteAttribute ("cellpadding", "0");
writer.WriteAttribute ("cellspacing", "0");
writer.Write (">");
writer.WriteBeginTag ("tbody");
writer.Write (">");
writer.WriteLine ();
RenderTabs (writer);
writer.WriteEndTag ("tbody");
writer.WriteEndTag ("table");
writer.WriteLine ();
base.RenderChildren (writer);
}
public int BlankWidth
{
get {
object o = localValues ["BlankWidth"];
if (o == null)
return 15;
return (int) o;
}
set {
localValues ["BlankWidth"] = value;
}
}
public int Width
{
get {
object o = localValues ["Width"];
if (o == null)
return 120;
return (int) o;
}
set {
localValues ["Width"] = value;
}
}
public string Align
{
get {
object o = localValues ["Align"];
if (o == null)
return "center";
return (string) o;
}
set {
localValues ["Align"] = value;
}
}
public string CurrentTabName
{
get {
object o = localValues ["CurrentTabName"];
if (o == null)
return String.Empty;
return (string) localValues ["CurrentTabName"];
}
set {
localValues ["CurrentTabName"] = value;
}
}
public string CurrentTabColor
{
get {
object o = localValues ["CurrentTabColor"];
if (o == null)
return "#FFFFFF";
return (string) localValues ["CurrentTabColor"];
}
set {
localValues ["CurrentTabColor"] = value;
}
}
public string CurrentTabBackColor
{
get {
object o = localValues ["CurrentTabBackColor"];
if (o == null)
return "#3366CC";
return (string) localValues ["CurrentTabBackColor"];
}
set {
localValues ["CurrentTabBackColor"] = value;
}
}
public string TabBackColor
{
get {
object o = localValues ["TabBackColor"];
if (o == null)
return "#efefef";
return (string) localValues ["TabBackColor"];
}
set {
localValues ["TabBackColor"] = value;
}
}
}
}
Jump to Line
Something went wrong with that request. Please try again.