|
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.ComponentModel;
using DashboardDataAccess;
public partial class WidgetContainer : System.Web.UI.UserControl, IWidgetHost
{
public event Action<WidgetInstance> Deleted;
public bool SettingsOpen
{
get
{
object val = ViewState[this.ClientID + "_SettingsOpen"];
if( null == val ) return false;
else return (bool)val;
}
set { ViewState[this.ClientID + "_SettingsOpen"] = value; }
}
private WidgetInstance _WidgetInstance;
public WidgetInstance WidgetInstance
{
get { return _WidgetInstance; }
set { _WidgetInstance = value; }
}
private IWidget _WidgetRef;
private bool _IsFirstLoad;
public bool IsFirstLoad
{
get { return _IsFirstLoad; }
set { _IsFirstLoad = value; }
}
protected void Page_Load(object sender, EventArgs e)
{
WidgetTitle.Text = this.WidgetInstance.Title;
this.SetExpandCollapseButtons();
}
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
var widget = LoadControl(this.WidgetInstance.Widget.Url);
widget.ID = "Widget" + this.WidgetInstance.Id.ToString();
//WidgetBodyUpdatePanel.ContentTemplateContainer.Controls.Add(widget);
WidgetBodyPanel.Controls.Add(widget);
this._WidgetRef = widget as IWidget;
this._WidgetRef.Init(this);
}
private void SetExpandCollapseButtons()
{
if (!this.WidgetInstance.Expanded)
{
ExpandWidget.Visible = true;
CollapseWidget.Visible = false;
WidgetBodyPanel.Visible = false;
}
else
{
ExpandWidget.Visible = false;
CollapseWidget.Visible = true;
WidgetBodyPanel.Visible = true;
}
}
protected void EditWidget_Click(object sender, EventArgs e)
{
if( this.SettingsOpen )
{
this.SettingsOpen = false;
this._WidgetRef.HideSettings();
EditWidget.Visible = true;
CancelEditWidget.Visible = false;
}
else
{
this.SettingsOpen = true;
this._WidgetRef.ShowSettings();
(this as IWidgetHost).Maximize();
EditWidget.Visible = false;
CancelEditWidget.Visible = true;
}
WidgetBodyUpdatePanel.Update();
}
protected void CollapseWidget_Click(object sender, EventArgs e)
{
(this as IWidgetHost).Minimize();
}
protected void ExpandWidget_Click(object sender, EventArgs e)
{
(this as IWidgetHost).Maximize();
}
protected void CloseWidget_Click(object sender, EventArgs e)
{
// Inject script which removes the controls and behaviors from the client side for this widget
this._WidgetRef.Closed();
(this as IWidgetHost).Close();
}
protected void SaveWidgetTitle_Click(object sender, EventArgs e)
{
WidgetTitleTextBox.Visible = SaveWidgetTitle.Visible = false;
WidgetTitle.Visible = true;
WidgetTitle.Text = WidgetTitleTextBox.Text;
DatabaseHelper.Update<WidgetInstance>(this.WidgetInstance, delegate(WidgetInstance wi)
{
wi.Title = WidgetTitleTextBox.Text;
});
}
protected void WidgetTitle_Click(object sender, EventArgs e)
{
WidgetTitleTextBox.Text = this.WidgetInstance.Title;
WidgetTitleTextBox.Visible = true;
SaveWidgetTitle.Visible = true;
WidgetTitle.Visible = false;
}
protected void CancelEditWidget_Click(object sender, EventArgs e)
{
}
void IWidgetHost.Maximize()
{
DatabaseHelper.Update<WidgetInstance>(this.WidgetInstance, delegate(WidgetInstance i)
{
i.Expanded = true;
});
this.SetExpandCollapseButtons();
this._WidgetRef.Maximized();
WidgetBodyUpdatePanel.Update();
WidgetHeaderUpdatePanel.Update();
}
void IWidgetHost.Minimize()
{
DatabaseHelper.Update<WidgetInstance>(this.WidgetInstance, delegate(WidgetInstance i)
{
i.Expanded = false;
});
this.SetExpandCollapseButtons();
this._WidgetRef.Minimized();
WidgetBodyUpdatePanel.Update();
WidgetHeaderUpdatePanel.Update();
}
void IWidgetHost.Close()
{
Deleted(this.WidgetInstance);
}
public override void RenderControl(HtmlTextWriter writer)
{
writer.AddAttribute("InstanceId", this.WidgetInstance.Id.ToString());
base.RenderControl(writer);
}
void IWidgetHost.SaveState(string state)
{
DatabaseHelper.Update<WidgetInstance>(this.WidgetInstance, delegate(WidgetInstance i)
{
i.State = state;
});
}
string IWidgetHost.GetState()
{
return this.WidgetInstance.State;
}
bool IWidgetHost.IsFirstLoad
{
get
{
return this.IsFirstLoad;
}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.