Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / fx / src / xsp / System / Web / UI / WebParts / BehaviorEditorPart.cs / 1 / BehaviorEditorPart.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.Globalization;
using System.Security.Permissions;
using System.Web.UI;
using System.Web.UI.WebControls;
[AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)]
public sealed class BehaviorEditorPart : EditorPart {
private CheckBox _allowClose;
private CheckBox _allowConnect;
private CheckBox _allowHide;
private CheckBox _allowMinimize;
private CheckBox _allowZoneChange;
private DropDownList _exportMode;
private DropDownList _helpMode;
private TextBox _description;
private TextBox _titleUrl;
private TextBox _titleIconImageUrl;
private TextBox _catalogIconImageUrl;
private TextBox _helpUrl;
private TextBox _importErrorMessage;
private TextBox _authorizationFilter;
private CheckBox _allowEdit;
private string _allowCloseErrorMessage;
private string _allowConnectErrorMessage;
private string _allowHideErrorMessage;
private string _allowMinimizeErrorMessage;
private string _allowZoneChangeErrorMessage;
private string _exportModeErrorMessage;
private string _helpModeErrorMessage;
private string _descriptionErrorMessage;
private string _titleUrlErrorMessage;
private string _titleIconImageUrlErrorMessage;
private string _catalogIconImageUrlErrorMessage;
private string _helpUrlErrorMessage;
private string _importErrorMessageErrorMessage;
private string _authorizationFilterErrorMessage;
private string _allowEditErrorMessage;
private const int TextBoxColumns = 30;
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never), Themeable(false)]
public override string DefaultButton {
get { return base.DefaultButton; }
set { base.DefaultButton = value; }
}
public override bool Display {
get {
if (WebPartToEdit != null &&
WebPartToEdit.IsShared &&
WebPartManager != null &&
(WebPartManager.Personalization.Scope == PersonalizationScope.User)) {
return false;
}
return base.Display;
}
}
private bool HasError {
get {
return (_allowCloseErrorMessage != null || _allowConnectErrorMessage != null ||
_allowHideErrorMessage != null || _allowMinimizeErrorMessage != null ||
_allowZoneChangeErrorMessage != null || _exportModeErrorMessage != null ||
_helpModeErrorMessage != null || _descriptionErrorMessage != null ||
_titleUrlErrorMessage != null || _titleIconImageUrlErrorMessage != null ||
_catalogIconImageUrlErrorMessage != null || _helpUrlErrorMessage != null ||
_importErrorMessageErrorMessage != null || _authorizationFilterErrorMessage != null ||
_allowEditErrorMessage != null);
}
}
[
WebSysDefaultValue(SR.BehaviorEditorPart_PartTitle),
]
public override string Title {
get {
string s = (string)ViewState["Title"];
return (s != null) ? s : SR.GetString(SR.BehaviorEditorPart_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;
if (allowLayoutChange) {
try {
webPart.AllowClose = _allowClose.Checked;
}
catch (Exception e) {
_allowCloseErrorMessage = CreateErrorMessage(e.Message);
}
}
try {
webPart.AllowConnect = _allowConnect.Checked;
}
catch (Exception e) {
_allowConnectErrorMessage = CreateErrorMessage(e.Message);
}
if (allowLayoutChange) {
try {
webPart.AllowHide = _allowHide.Checked;
}
catch (Exception e) {
_allowHideErrorMessage = CreateErrorMessage(e.Message);
}
}
if (allowLayoutChange) {
try {
webPart.AllowMinimize = _allowMinimize.Checked;
}
catch (Exception e) {
_allowMinimizeErrorMessage = CreateErrorMessage(e.Message);
}
}
if (allowLayoutChange) {
try {
webPart.AllowZoneChange = _allowZoneChange.Checked;
}
catch (Exception e) {
_allowZoneChangeErrorMessage = CreateErrorMessage(e.Message);
}
}
try {
TypeConverter exportModeConverter = TypeDescriptor.GetConverter(typeof(WebPartExportMode));
webPart.ExportMode = (WebPartExportMode)exportModeConverter.ConvertFromString(_exportMode.SelectedValue);
}
catch (Exception e) {
_exportModeErrorMessage = CreateErrorMessage(e.Message);
}
try {
TypeConverter helpModeConverter = TypeDescriptor.GetConverter(typeof(WebPartHelpMode));
webPart.HelpMode = (WebPartHelpMode)helpModeConverter.ConvertFromString(_helpMode.SelectedValue);
}
catch (Exception e) {
_helpModeErrorMessage = CreateErrorMessage(e.Message);
}
try {
webPart.Description = _description.Text;
}
catch (Exception e) {
_descriptionErrorMessage = CreateErrorMessage(e.Message);
}
string value = _titleUrl.Text;
if (CrossSiteScriptingValidation.IsDangerousUrl(value)) {
_titleUrlErrorMessage = SR.GetString(SR.EditorPart_ErrorBadUrl);
}
else {
try {
webPart.TitleUrl = value;
}
catch (Exception e) {
_titleUrlErrorMessage = CreateErrorMessage(e.Message);
}
}
value = _titleIconImageUrl.Text;
if (CrossSiteScriptingValidation.IsDangerousUrl(value)) {
_titleIconImageUrlErrorMessage = SR.GetString(SR.EditorPart_ErrorBadUrl);
}
else {
try {
webPart.TitleIconImageUrl = value;
}
catch (Exception e) {
_titleIconImageUrlErrorMessage = CreateErrorMessage(e.Message);
}
}
value = _catalogIconImageUrl.Text;
if (CrossSiteScriptingValidation.IsDangerousUrl(value)) {
_catalogIconImageUrlErrorMessage = SR.GetString(SR.EditorPart_ErrorBadUrl);
}
else {
try {
webPart.CatalogIconImageUrl = value;
}
catch (Exception e) {
_catalogIconImageUrlErrorMessage = CreateErrorMessage(e.Message);
}
}
value = _helpUrl.Text;
if (CrossSiteScriptingValidation.IsDangerousUrl(value)) {
_helpUrlErrorMessage = SR.GetString(SR.EditorPart_ErrorBadUrl);
}
else {
try {
webPart.HelpUrl = value;
}
catch (Exception e) {
_helpUrlErrorMessage = CreateErrorMessage(e.Message);
}
}
try {
webPart.ImportErrorMessage = _importErrorMessage.Text;
}
catch (Exception e) {
_importErrorMessageErrorMessage = CreateErrorMessage(e.Message);
}
try {
webPart.AuthorizationFilter = _authorizationFilter.Text;
}
catch (Exception e) {
_authorizationFilterErrorMessage = CreateErrorMessage(e.Message);
}
try {
webPart.AllowEdit = _allowEdit.Checked;
}
catch (Exception e) {
_allowEditErrorMessage = CreateErrorMessage(e.Message);
}
}
return !HasError;
}
protected internal override void CreateChildControls() {
ControlCollection controls = Controls;
controls.Clear();
_allowClose = new CheckBox();
controls.Add(_allowClose);
_allowConnect = new CheckBox();
controls.Add(_allowConnect);
_allowHide = new CheckBox();
controls.Add(_allowHide);
_allowMinimize = new CheckBox();
controls.Add(_allowMinimize);
_allowZoneChange = new CheckBox();
controls.Add(_allowZoneChange);
TypeConverter exportModeConverter = TypeDescriptor.GetConverter(typeof(WebPartExportMode));
_exportMode = new DropDownList();
_exportMode.Items.AddRange(new ListItem[] {
new ListItem(SR.GetString(SR.BehaviorEditorPart_ExportModeNone),
exportModeConverter.ConvertToString(WebPartExportMode.None)),
new ListItem(SR.GetString(SR.BehaviorEditorPart_ExportModeAll),
exportModeConverter.ConvertToString(WebPartExportMode.All)),
new ListItem(SR.GetString(SR.BehaviorEditorPart_ExportModeNonSensitiveData),
exportModeConverter.ConvertToString(WebPartExportMode.NonSensitiveData)),
});
controls.Add(_exportMode);
TypeConverter helpModeConverter = TypeDescriptor.GetConverter(typeof(WebPartHelpMode));
_helpMode = new DropDownList();
_helpMode.Items.AddRange(new ListItem[] {
new ListItem(SR.GetString(SR.BehaviorEditorPart_HelpModeModal),
helpModeConverter.ConvertToString(WebPartHelpMode.Modal)),
new ListItem(SR.GetString(SR.BehaviorEditorPart_HelpModeModeless),
helpModeConverter.ConvertToString(WebPartHelpMode.Modeless)),
new ListItem(SR.GetString(SR.BehaviorEditorPart_HelpModeNavigate),
helpModeConverter.ConvertToString(WebPartHelpMode.Navigate)),
});
controls.Add(_helpMode);
_description = new TextBox();
_description.Columns = TextBoxColumns;
controls.Add(_description);
_titleUrl = new TextBox();
_titleUrl.Columns = TextBoxColumns;
controls.Add(_titleUrl);
_titleIconImageUrl = new TextBox();
_titleIconImageUrl.Columns = TextBoxColumns;
controls.Add(_titleIconImageUrl);
_catalogIconImageUrl = new TextBox();
_catalogIconImageUrl.Columns = TextBoxColumns;
controls.Add(_catalogIconImageUrl);
_helpUrl = new TextBox();
_helpUrl.Columns = TextBoxColumns;
controls.Add(_helpUrl);
_importErrorMessage = new TextBox();
_importErrorMessage.Columns = TextBoxColumns;
controls.Add(_importErrorMessage);
_authorizationFilter = new TextBox();
_authorizationFilter.Columns = TextBoxColumns;
controls.Add(_authorizationFilter);
_allowEdit = new CheckBox();
controls.Add(_allowEdit);
// 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.BehaviorEditorPart_Description),
SR.GetString(SR.BehaviorEditorPart_TitleLink),
SR.GetString(SR.BehaviorEditorPart_TitleIconImageLink),
SR.GetString(SR.BehaviorEditorPart_CatalogIconImageLink),
SR.GetString(SR.BehaviorEditorPart_HelpLink),
SR.GetString(SR.BehaviorEditorPart_HelpMode),
SR.GetString(SR.BehaviorEditorPart_ImportErrorMessage),
SR.GetString(SR.BehaviorEditorPart_ExportMode),
SR.GetString(SR.BehaviorEditorPart_AuthorizationFilter),
SR.GetString(SR.BehaviorEditorPart_AllowClose),
SR.GetString(SR.BehaviorEditorPart_AllowConnect),
SR.GetString(SR.BehaviorEditorPart_AllowEdit),
SR.GetString(SR.BehaviorEditorPart_AllowHide),
SR.GetString(SR.BehaviorEditorPart_AllowMinimize),
SR.GetString(SR.BehaviorEditorPart_AllowZoneChange),
};
WebControl[] propertyEditors = new WebControl[] {
_description,
_titleUrl,
_titleIconImageUrl,
_catalogIconImageUrl,
_helpUrl,
_helpMode,
_importErrorMessage,
_exportMode,
_authorizationFilter,
_allowClose,
_allowConnect,
_allowEdit,
_allowHide,
_allowMinimize,
_allowZoneChange,
};
string[] errorMessages = new string[] {
_descriptionErrorMessage,
_titleUrlErrorMessage,
_titleIconImageUrlErrorMessage,
_catalogIconImageUrlErrorMessage,
_helpUrlErrorMessage,
_helpModeErrorMessage,
_importErrorMessageErrorMessage,
_exportModeErrorMessage,
_authorizationFilterErrorMessage,
_allowCloseErrorMessage,
_allowConnectErrorMessage,
_allowEditErrorMessage,
_allowHideErrorMessage,
_allowMinimizeErrorMessage,
_allowZoneChangeErrorMessage,
};
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();
_allowClose.Checked = webPart.AllowClose;
_allowClose.Enabled = allowLayoutChange;
_allowConnect.Checked = webPart.AllowConnect;
_allowHide.Checked = webPart.AllowHide;
_allowHide.Enabled = allowLayoutChange;
_allowMinimize.Checked = webPart.AllowMinimize;
_allowMinimize.Enabled = allowLayoutChange;
_allowZoneChange.Checked = webPart.AllowZoneChange;
_allowZoneChange.Enabled = allowLayoutChange;
TypeConverter exportModeConverter = TypeDescriptor.GetConverter(typeof(WebPartExportMode));
_exportMode.SelectedValue = exportModeConverter.ConvertToString(webPart.ExportMode);
TypeConverter helpModeConverter = TypeDescriptor.GetConverter(typeof(WebPartHelpMode));
_helpMode.SelectedValue = helpModeConverter.ConvertToString(webPart.HelpMode);
_description.Text = webPart.Description;
_titleUrl.Text = webPart.TitleUrl;
_titleIconImageUrl.Text = webPart.TitleIconImageUrl;
_catalogIconImageUrl.Text = webPart.CatalogIconImageUrl;
_helpUrl.Text = webPart.HelpUrl;
_importErrorMessage.Text = webPart.ImportErrorMessage;
_authorizationFilter.Text = webPart.AuthorizationFilter;
_allowEdit.Checked = webPart.AllowEdit;
}
}
}
}
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- Psha1DerivedKeyGenerator.cs
- CallbackValidatorAttribute.cs
- RemoteWebConfigurationHost.cs
- DataSourceDescriptorCollection.cs
- PolicyManager.cs
- CollectionBuilder.cs
- InputBindingCollection.cs
- DesigntimeLicenseContextSerializer.cs
- BuiltInPermissionSets.cs
- FormView.cs
- Color.cs
- Converter.cs
- TextFormatterContext.cs
- PermissionRequestEvidence.cs
- ContentControl.cs
- HwndHostAutomationPeer.cs
- XmlDataCollection.cs
- ObjectSpanRewriter.cs
- Identity.cs
- DataTableMapping.cs
- HttpProfileBase.cs
- AutomationElementCollection.cs
- X509UI.cs
- EntityCommandDefinition.cs
- SparseMemoryStream.cs
- EntitySqlQueryCacheKey.cs
- CodeTypeReferenceExpression.cs
- MailWebEventProvider.cs
- HttpCacheVaryByContentEncodings.cs
- XamlToRtfWriter.cs
- PropertyHelper.cs
- SHA512Managed.cs
- NumberSubstitution.cs
- ExpressionBindings.cs
- Preprocessor.cs
- ListItem.cs
- WpfGeneratedKnownProperties.cs
- Color.cs
- GridViewCancelEditEventArgs.cs
- ACL.cs
- SchemaImporterExtensionsSection.cs
- WhileDesigner.cs
- PreservationFileWriter.cs
- SchemaInfo.cs
- RemoteArgument.cs
- MenuItemCollection.cs
- TextCollapsingProperties.cs
- Rotation3DAnimationUsingKeyFrames.cs
- RadioButtonAutomationPeer.cs
- AssemblyAssociatedContentFileAttribute.cs
- HeaderPanel.cs
- BaseTreeIterator.cs
- IndentTextWriter.cs
- _ListenerAsyncResult.cs
- IndexedGlyphRun.cs
- DescriptionAttribute.cs
- DocumentXPathNavigator.cs
- XmlNodeComparer.cs
- RefreshPropertiesAttribute.cs
- MimeWriter.cs
- FileVersion.cs
- PolyLineSegment.cs
- SmtpLoginAuthenticationModule.cs
- RootBuilder.cs
- AttributeParameterInfo.cs
- CompiledQueryCacheEntry.cs
- Selector.cs
- CodeCompileUnit.cs
- EventLog.cs
- KeyedHashAlgorithm.cs
- AsyncDataRequest.cs
- ButtonBaseDesigner.cs
- PasswordDeriveBytes.cs
- Literal.cs
- SmiContextFactory.cs
- DataSourceHelper.cs
- XsltLoader.cs
- XsltFunctions.cs
- PropertyDescriptorCollection.cs
- _NtlmClient.cs
- RotateTransform3D.cs
- CommandID.cs
- DbInsertCommandTree.cs
- FontStyle.cs
- OleDbConnectionFactory.cs
- AuthorizationRule.cs
- DataGrid.cs
- PersonalizationStateInfoCollection.cs
- XmlNodeList.cs
- SEHException.cs
- ConnectionPointCookie.cs
- PropertyFilterAttribute.cs
- PolygonHotSpot.cs
- SqlUDTStorage.cs
- _NetRes.cs
- Propagator.cs
- Wizard.cs
- ListSourceHelper.cs
- BypassElementCollection.cs
- WebPartEditVerb.cs