Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / Web / UI / WebParts / AppearanceEditorPart.cs / 1305376 / AppearanceEditorPart.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.UI.WebControls.WebParts { using System; using System.Collections; using System.ComponentModel; using System.Diagnostics; using System.Drawing; using System.Globalization; using System.Web.UI; using System.Web.UI.WebControls; public sealed class AppearanceEditorPart : EditorPart { private TextBox _title; private UnitInput _height; private UnitInput _width; private DropDownList _chromeType; private CheckBox _hidden; private DropDownList _direction; private string _titleErrorMessage; private string _heightErrorMessage; private string _widthErrorMessage; private string _chromeTypeErrorMessage; private string _hiddenErrorMessage; private string _directionErrorMessage; private const int TextBoxColumns = 30; private const int MinUnitValue = 0; private const int MaxUnitValue = 32767; [Browsable(false), EditorBrowsable(EditorBrowsableState.Never), Themeable(false)] public override string DefaultButton { get { return base.DefaultButton; } set { base.DefaultButton = value; } } private bool HasError { get { return (_titleErrorMessage != null || _heightErrorMessage != null || _widthErrorMessage != null || _chromeTypeErrorMessage != null || _hiddenErrorMessage != null || _directionErrorMessage != null); } } [ WebSysDefaultValue(SR.AppearanceEditorPart_PartTitle), ] public override string Title { get { string s = (string)ViewState["Title"]; return (s != null) ? s : SR.GetString(SR.AppearanceEditorPart_PartTitle); } set { ViewState["Title"] = value; } } public override bool ApplyChanges() { WebPart webPart = WebPartToEdit; Debug.Assert(webPart != null); if (webPart != null) { EnsureChildControls(); bool allowLayoutChange = webPart.Zone.AllowLayoutChange; try { webPart.Title = _title.Text; } catch (Exception e) { _titleErrorMessage = CreateErrorMessage(e.Message); } if (allowLayoutChange) { try { TypeConverter chromeTypeConverter = TypeDescriptor.GetConverter(typeof(PartChromeType)); webPart.ChromeType = (PartChromeType)chromeTypeConverter.ConvertFromString(_chromeType.SelectedValue); } catch (Exception e) { _chromeTypeErrorMessage = CreateErrorMessage(e.Message); } } try { TypeConverter directionConverter = TypeDescriptor.GetConverter(typeof(ContentDirection)); webPart.Direction = (ContentDirection)directionConverter.ConvertFromString(_direction.SelectedValue); } catch (Exception e) { _directionErrorMessage = CreateErrorMessage(e.Message); } if (allowLayoutChange) { Unit height = Unit.Empty; string heightValueString = _height.Value; if (!String.IsNullOrEmpty(heightValueString)) { double heightValue; if (Double.TryParse(_height.Value, NumberStyles.Float | NumberStyles.AllowThousands, CultureInfo.CurrentCulture, out heightValue)) { if (heightValue < MinUnitValue) { _heightErrorMessage = SR.GetString( SR.EditorPart_PropertyMinValue, MinUnitValue.ToString(CultureInfo.CurrentCulture)); } else if (heightValue > MaxUnitValue) { _heightErrorMessage = SR.GetString( SR.EditorPart_PropertyMaxValue, MaxUnitValue.ToString(CultureInfo.CurrentCulture)); } else { height = new Unit(heightValue, _height.Type); } } else { _heightErrorMessage = SR.GetString(SR.EditorPart_PropertyMustBeDecimal); } } if (_heightErrorMessage == null) { try { webPart.Height = (Unit)height; } catch (Exception e) { _heightErrorMessage = CreateErrorMessage(e.Message); } } } if (allowLayoutChange) { Unit width = Unit.Empty; string widthValueString = _width.Value; if (!String.IsNullOrEmpty(widthValueString)) { double widthValue; if (Double.TryParse(_width.Value, NumberStyles.Float| NumberStyles.AllowThousands, CultureInfo.CurrentCulture, out widthValue)) { if (widthValue < MinUnitValue) { _widthErrorMessage = SR.GetString( SR.EditorPart_PropertyMinValue, MinUnitValue.ToString(CultureInfo.CurrentCulture)); } else if (widthValue > MaxUnitValue) { _widthErrorMessage = SR.GetString( SR.EditorPart_PropertyMaxValue, MaxUnitValue.ToString(CultureInfo.CurrentCulture)); } else { width = new Unit(widthValue, _width.Type); } } else { _widthErrorMessage = SR.GetString(SR.EditorPart_PropertyMustBeDecimal); } } if (_widthErrorMessage == null) { try { webPart.Width = (Unit)width; } catch (Exception e) { _widthErrorMessage = CreateErrorMessage(e.Message); } } } if (allowLayoutChange && webPart.AllowHide) { try { webPart.Hidden = _hidden.Checked; } catch (Exception e) { _hiddenErrorMessage = CreateErrorMessage(e.Message); } } } return !HasError; } protected internal override void CreateChildControls() { ControlCollection controls = Controls; controls.Clear(); _title = new TextBox(); _title.Columns = TextBoxColumns; controls.Add(_title); TypeConverter chromeTypeConverter = TypeDescriptor.GetConverter(typeof(PartChromeType)); _chromeType = new DropDownList(); _chromeType.Items.Add(new ListItem(SR.GetString(SR.PartChromeType_Default), chromeTypeConverter.ConvertToString(PartChromeType.Default))); _chromeType.Items.Add(new ListItem(SR.GetString(SR.PartChromeType_TitleAndBorder), chromeTypeConverter.ConvertToString(PartChromeType.TitleAndBorder))); _chromeType.Items.Add(new ListItem(SR.GetString(SR.PartChromeType_TitleOnly), chromeTypeConverter.ConvertToString(PartChromeType.TitleOnly))); _chromeType.Items.Add(new ListItem(SR.GetString(SR.PartChromeType_BorderOnly), chromeTypeConverter.ConvertToString(PartChromeType.BorderOnly))); _chromeType.Items.Add(new ListItem(SR.GetString(SR.PartChromeType_None), chromeTypeConverter.ConvertToString(PartChromeType.None))); controls.Add(_chromeType); TypeConverter directionConverter = TypeDescriptor.GetConverter(typeof(ContentDirection)); _direction = new DropDownList(); _direction.Items.Add(new ListItem(SR.GetString(SR.ContentDirection_NotSet), directionConverter.ConvertToString(ContentDirection.NotSet))); _direction.Items.Add(new ListItem(SR.GetString(SR.ContentDirection_LeftToRight), directionConverter.ConvertToString(ContentDirection.LeftToRight))); _direction.Items.Add(new ListItem(SR.GetString(SR.ContentDirection_RightToLeft), directionConverter.ConvertToString(ContentDirection.RightToLeft))); controls.Add(_direction); _height = new UnitInput(); controls.Add(_height); _width = new UnitInput(); controls.Add(_width); _hidden = new CheckBox(); controls.Add(_hidden); // We don't need viewstate enabled on our child controls. Disable for perf. foreach (Control c in controls) { c.EnableViewState = false; } } protected internal override void OnPreRender(EventArgs e) { base.OnPreRender(e); // We want to synchronize the EditorPart to the state of the WebPart on every page load, // so we stay current if the WebPart changes in the background. if (Display && Visible && !HasError) { SyncChanges(); } } protected internal override void RenderContents(HtmlTextWriter writer) { if (Page != null) { Page.VerifyRenderingInServerForm(this); } // HACK: Need this for child controls to be created at design-time when control is inside template EnsureChildControls(); string[] propertyDisplayNames = new string[] { SR.GetString(SR.AppearanceEditorPart_Title), SR.GetString(SR.AppearanceEditorPart_ChromeType), SR.GetString(SR.AppearanceEditorPart_Direction), SR.GetString(SR.AppearanceEditorPart_Height), SR.GetString(SR.AppearanceEditorPart_Width), SR.GetString(SR.AppearanceEditorPart_Hidden), }; WebControl[] propertyEditors = new WebControl[] { _title, _chromeType, _direction, _height, _width, _hidden, }; string[] errorMessages = new string[] { _titleErrorMessage, _chromeTypeErrorMessage, _directionErrorMessage, _heightErrorMessage, _widthErrorMessage, _hiddenErrorMessage, }; RenderPropertyEditors(writer, propertyDisplayNames, null /* propertyDescriptions */, propertyEditors, errorMessages); } public override void SyncChanges() { WebPart webPart = WebPartToEdit; Debug.Assert(webPart != null); if (webPart != null) { bool allowLayoutChange = webPart.Zone.AllowLayoutChange; EnsureChildControls(); _title.Text = webPart.Title; TypeConverter chromeTypeConverter = TypeDescriptor.GetConverter(typeof(PartChromeType)); _chromeType.SelectedValue = chromeTypeConverter.ConvertToString(webPart.ChromeType); _chromeType.Enabled = allowLayoutChange; TypeConverter directionConverter = TypeDescriptor.GetConverter(typeof(ContentDirection)); _direction.SelectedValue = directionConverter.ConvertToString(webPart.Direction); _height.Unit = webPart.Height; _height.Enabled = allowLayoutChange; _width.Unit = webPart.Width; _width.Enabled = allowLayoutChange; _hidden.Checked = webPart.Hidden; _hidden.Enabled = allowLayoutChange && webPart.AllowHide; } } private sealed class UnitInput : CompositeControl { private TextBox _value; private DropDownList _type; private const int TextBoxColumns = 2; public string Value { get { return (_value != null) ? _value.Text : String.Empty; } } public UnitType Type { get { return (_type != null) ? (UnitType)Int32.Parse(_type.SelectedValue, CultureInfo.InvariantCulture) : (UnitType)0; } } public Unit Unit { set { EnsureChildControls(); if (value == Unit.Empty) { _value.Text = String.Empty; _type.SelectedIndex = 0; } else { _value.Text = value.Value.ToString(CultureInfo.CurrentCulture); _type.SelectedValue = ((int)value.Type).ToString(CultureInfo.InvariantCulture); } } } protected internal override void CreateChildControls() { Controls.Clear(); _value = new TextBox(); _value.Columns = TextBoxColumns; Controls.Add(_value); _type = new DropDownList(); _type.Items.Add(new ListItem(SR.GetString(SR.AppearanceEditorPart_Pixels), ((int)UnitType.Pixel).ToString(CultureInfo.InvariantCulture))); _type.Items.Add(new ListItem(SR.GetString(SR.AppearanceEditorPart_Points), ((int)UnitType.Point).ToString(CultureInfo.InvariantCulture))); _type.Items.Add(new ListItem(SR.GetString(SR.AppearanceEditorPart_Picas), ((int)UnitType.Pica).ToString(CultureInfo.InvariantCulture))); _type.Items.Add(new ListItem(SR.GetString(SR.AppearanceEditorPart_Inches), ((int)UnitType.Inch).ToString(CultureInfo.InvariantCulture))); _type.Items.Add(new ListItem(SR.GetString(SR.AppearanceEditorPart_Millimeters), ((int)UnitType.Mm).ToString(CultureInfo.InvariantCulture))); _type.Items.Add(new ListItem(SR.GetString(SR.AppearanceEditorPart_Centimeters), ((int)UnitType.Cm).ToString(CultureInfo.InvariantCulture))); _type.Items.Add(new ListItem(SR.GetString(SR.AppearanceEditorPart_Percent), ((int)UnitType.Percentage).ToString(CultureInfo.InvariantCulture))); _type.Items.Add(new ListItem(SR.GetString(SR.AppearanceEditorPart_Em), ((int)UnitType.Em).ToString(CultureInfo.InvariantCulture))); _type.Items.Add(new ListItem(SR.GetString(SR.AppearanceEditorPart_Ex), ((int)UnitType.Ex).ToString(CultureInfo.InvariantCulture))); Controls.Add(_type); } protected internal override void Render(HtmlTextWriter writer) { // Needed for designtime EnsureChildControls(); _value.ApplyStyle(ControlStyle); _value.RenderControl(writer); writer.Write(" "); _type.ApplyStyle(ControlStyle); _type.RenderControl(writer); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- CachedPathData.cs
- SamlAssertionDirectKeyIdentifierClause.cs
- SynchronousReceiveElement.cs
- ListItemCollection.cs
- OverlappedContext.cs
- RectValueSerializer.cs
- ValidatorCompatibilityHelper.cs
- DefaultBinder.cs
- ProxyHelper.cs
- OutgoingWebResponseContext.cs
- RowCache.cs
- CompressedStack.cs
- ExtenderControl.cs
- EntityDataSourceChangingEventArgs.cs
- _ListenerAsyncResult.cs
- RenderDataDrawingContext.cs
- BinaryCommonClasses.cs
- ObjectDataSourceSelectingEventArgs.cs
- FixedMaxHeap.cs
- SafeHGlobalHandleCritical.cs
- Int16Animation.cs
- MobileSysDescriptionAttribute.cs
- Rijndael.cs
- MenuAdapter.cs
- VisualTreeUtils.cs
- LiteralControl.cs
- WebServicesSection.cs
- RemoteTokenFactory.cs
- ImageFormatConverter.cs
- FontInfo.cs
- XmlQuerySequence.cs
- ProjectionPruner.cs
- ToolTipAutomationPeer.cs
- AutomationPropertyInfo.cs
- BuildProvidersCompiler.cs
- ListViewGroupItemCollection.cs
- FindProgressChangedEventArgs.cs
- GenerateScriptTypeAttribute.cs
- MasterPageBuildProvider.cs
- ProfileManager.cs
- RightsManagementPermission.cs
- DocumentViewerAutomationPeer.cs
- UnsafeNetInfoNativeMethods.cs
- ColumnCollectionEditor.cs
- PointConverter.cs
- Rotation3DAnimationBase.cs
- RequestQueryProcessor.cs
- XNodeNavigator.cs
- AnnotationHighlightLayer.cs
- SchemaAttDef.cs
- ToolStripComboBox.cs
- DrawItemEvent.cs
- ServiceManagerHandle.cs
- FormatConvertedBitmap.cs
- ChangePasswordDesigner.cs
- Certificate.cs
- RecordManager.cs
- AutomationFocusChangedEventArgs.cs
- SecurityToken.cs
- Parser.cs
- DBCommand.cs
- SiteMapNodeCollection.cs
- HttpProfileBase.cs
- ProxyHwnd.cs
- EntityTypeEmitter.cs
- ISO2022Encoding.cs
- RoutedEventArgs.cs
- URLAttribute.cs
- Soap11ServerProtocol.cs
- LineVisual.cs
- MailWebEventProvider.cs
- SelectionEditingBehavior.cs
- Expression.cs
- Convert.cs
- CompModSwitches.cs
- State.cs
- Table.cs
- SiteMapDataSource.cs
- SystemNetHelpers.cs
- PointAnimationBase.cs
- PropertyMapper.cs
- HealthMonitoringSectionHelper.cs
- DeobfuscatingStream.cs
- mediapermission.cs
- ListViewCommandEventArgs.cs
- COM2Enum.cs
- Timer.cs
- XmlExceptionHelper.cs
- CollectionView.cs
- GenerateTemporaryTargetAssembly.cs
- AttributeEmitter.cs
- HttpTransportBindingElement.cs
- RegexMatchCollection.cs
- SendOperation.cs
- HtmlTableCell.cs
- ToolStripDropDownItem.cs
- EdgeProfileValidation.cs
- DataIdProcessor.cs
- ShapingEngine.cs
- ToolstripProfessionalRenderer.cs