using System;
using System.Web.UI;
using System.Web.UI.WebControls;
// using uComponents.DataTypes.Shared.Extensions;
// using uComponents.DataTypes.Shared.PrevalueEditors;
using umbraco.cms.businesslogic.datatype;
namespace umbraco.editorControls.MultipleTextstring
{
///
/// The PreValue Editor for the Multiple Textstring data-type.
///
public class MultipleTextstringPrevalueEditor : AbstractJsonPrevalueEditor
{
///
/// The TextBox control for the maximum value of the control.
///
private TextBox TextBoxMaximum;
///
/// The TextBox control for the minimum value of the control.
///
private TextBox TextBoxMinimum;
///
/// Initializes a new instance of the class.
///
/// Type of the data.
public MultipleTextstringPrevalueEditor(umbraco.cms.businesslogic.datatype.BaseDataType dataType)
: base(dataType, umbraco.cms.businesslogic.datatype.DBTypes.Ntext)
{
}
///
/// Saves this instance.
///
public override void Save()
{
// set the options
var options = new MultipleTextstringOptions(true);
// parse the maximum
int maximum;
if (int.TryParse(this.TextBoxMaximum.Text, out maximum))
{
if (maximum == 0)
{
maximum = -1;
}
options.Maximum = maximum;
}
// parse the minimum
int minimum;
if (int.TryParse(this.TextBoxMinimum.Text, out minimum))
{
if (minimum == 0)
{
minimum = -1;
}
options.Minimum = minimum;
}
// save the options as JSON
this.SaveAsJson(options);
}
///
/// Called by the ASP.NET page framework to notify server controls that use composition-based implementation to create any child controls they contain in preparation for posting back or rendering.
///
protected override void CreateChildControls()
{
base.CreateChildControls();
// set-up child controls
this.TextBoxMaximum = new TextBox() { ID = "Maximum", CssClass = "guiInputText" };
this.TextBoxMinimum = new TextBox() { ID = "Minimum", CssClass = "guiInputText" };
// add the child controls
this.Controls.AddPrevalueControls(this.TextBoxMaximum, this.TextBoxMinimum);
}
///
/// Raises the event.
///
/// The object that contains the event data.
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
// get PreValues, load them into the controls.
var options = this.GetPreValueOptions();
// no options? use the default ones.
if (options == null)
{
options = new MultipleTextstringOptions(true);
}
// set the values
this.TextBoxMaximum.Text = options.Maximum.ToString();
this.TextBoxMinimum.Text = options.Minimum.ToString();
}
///
/// Renders the contents of the control to the specified writer. This method is used primarily by control developers.
///
/// A that represents the output stream to render HTML content on the client.
protected override void RenderContents(HtmlTextWriter writer)
{
// add property fields
writer.AddPrevalueRow("Minimum:", "Minimum number of rows to display.", this.TextBoxMinimum);
writer.AddPrevalueRow("Maximum:", "Maximum number of rows to display.", this.TextBoxMaximum);
}
}
}