#region Using directives using System; using System.Windows.Forms; #endregion namespace WinHtmlEditor { /// /// Form used to enter an Html Table structure /// Input based on the HtmlTableProperty struct /// internal partial class TablePropertyForm : Form { // private variable for the table properties private HtmlTableProperty tableProperties; // constants for the Maximum values private const byte MAXIMUM_CELL_ROW = 250; private const byte MAXIMUM_CELL_COL = 50; private const byte MAXIMUM_CELL_PAD = 25; private const byte MAXIMUM_BORDER = 25; private const ushort MAXIMUM_WIDTH_PERCENT = 100; private const ushort MAXIMUM_WIDTH_PIXEL = 2500; private const ushort WIDTH_INC_DIV = 20; /// /// Default form constructor /// public TablePropertyForm() { // // Required for Windows Form Designer support // InitializeComponent(); // define the dropdown list value this.listCaptionAlignment.Items.AddRange(Enum.GetNames(typeof(HorizontalAlignOption))); this.listCaptionLocation.Items.AddRange(Enum.GetNames(typeof(VerticalAlignOption))); this.listTextAlignment.Items.AddRange(Enum.GetNames(typeof(HorizontalAlignOption))); // ensure default values are listed in the drop down lists this.listCaptionAlignment.SelectedIndex = 0; this.listCaptionLocation.SelectedIndex = 0; this.listTextAlignment.SelectedIndex = 0; // define the new maximum values of the dialogs this.numericBorderSize.Maximum = MAXIMUM_BORDER; this.numericCellPadding.Maximum = MAXIMUM_CELL_PAD; this.numericCellSpacing.Maximum = MAXIMUM_CELL_PAD; this.numericRows.Maximum = MAXIMUM_CELL_ROW; this.numericColumns.Maximum = MAXIMUM_CELL_COL; this.numericTableWidth.Maximum = MAXIMUM_WIDTH_PIXEL; // define default values based on a new table this.TableProperties = new HtmlTableProperty(true); } //TablePropertyForm /// /// Property definition for the Table Properties /// Uses the HtmlTableProperty class definition /// /// public HtmlTableProperty TableProperties { get { // define the appropriate table caption properties tableProperties.CaptionText = this.textTableCaption.Text; tableProperties.CaptionAlignment = (HorizontalAlignOption)this.listCaptionAlignment.SelectedIndex; tableProperties.CaptionLocation = (VerticalAlignOption)this.listCaptionLocation.SelectedIndex; // define the appropriate table specific properties tableProperties.BorderSize = (byte)Math.Min(this.numericBorderSize.Value, this.numericBorderSize.Maximum); tableProperties.TableAlignment = (HorizontalAlignOption)this.listTextAlignment.SelectedIndex; // define the appropriate table layout properties tableProperties.TableRows = (byte)Math.Min(this.numericRows.Value, this.numericRows.Maximum); tableProperties.TableColumns = (byte)Math.Min(this.numericColumns.Value, this.numericColumns.Maximum); tableProperties.CellPadding = (byte)Math.Min(this.numericCellPadding.Value, this.numericCellPadding.Maximum); tableProperties.CellSpacing = (byte)Math.Min(this.numericCellSpacing.Value, this.numericCellSpacing.Maximum); tableProperties.TableWidth = (ushort)Math.Min(this.numericTableWidth.Value, this.numericTableWidth.Maximum); tableProperties.TableWidthMeasurement = (this.radioWidthPercent.Checked) ? MeasurementOption.Percent : MeasurementOption.Pixel; // return the properties return tableProperties; } set { // persist the new values tableProperties = value; // define the dialog caption properties this.textTableCaption.Text = tableProperties.CaptionText; this.listCaptionAlignment.SelectedIndex = (int)tableProperties.CaptionAlignment; this.listCaptionLocation.SelectedIndex = (int)tableProperties.CaptionLocation; // define the dialog table specific properties this.numericBorderSize.Value = Math.Min(tableProperties.BorderSize, MAXIMUM_BORDER); this.listTextAlignment.SelectedIndex = (int)tableProperties.TableAlignment; // define the dialog table layout properties this.numericRows.Value = Math.Min(tableProperties.TableRows, MAXIMUM_CELL_ROW); this.numericColumns.Value = Math.Min(tableProperties.TableColumns, MAXIMUM_CELL_COL); this.numericCellPadding.Value = Math.Min(tableProperties.CellPadding, MAXIMUM_CELL_PAD); this.numericCellSpacing.Value = Math.Min(tableProperties.CellSpacing, MAXIMUM_CELL_PAD); this.radioWidthPercent.Checked = (tableProperties.TableWidthMeasurement == MeasurementOption.Percent); this.radioWidthPixel.Checked = (tableProperties.TableWidthMeasurement == MeasurementOption.Pixel); this.numericTableWidth.Value = Math.Min(tableProperties.TableWidth, this.numericTableWidth.Maximum); } } //TableProperties /// /// Property for the measurement values based on the selected mesaurment /// private void MeasurementOptionChanged(object sender, System.EventArgs e) { // define a dialog for a percentage change if (this.radioWidthPercent.Checked) { this.numericTableWidth.Maximum = MAXIMUM_WIDTH_PERCENT; this.numericTableWidth.Increment = MAXIMUM_WIDTH_PERCENT / WIDTH_INC_DIV; } // define a dialog for a pixel change if (this.radioWidthPixel.Checked) { this.numericTableWidth.Maximum = MAXIMUM_WIDTH_PIXEL; this.numericTableWidth.Increment = MAXIMUM_WIDTH_PIXEL / WIDTH_INC_DIV; } } //MeasurementOptionChanged } }