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); } } }