Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / MIT / System / Web / UI / MobileControls / Design / ListComponentEditorPage.cs / 1305376 / ListComponentEditorPage.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Web.UI.Design.MobileControls
{
using System;
using System.Collections;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Globalization;
using System.Diagnostics;
using System.Web.UI.MobileControls;
using System.Windows.Forms;
using System.Windows.Forms.Design;
using System.Web.UI.Design.MobileControls.Util;
[
System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand,
Flags=System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode)
]
[Obsolete("The System.Web.Mobile.dll assembly has been deprecated and should no longer be used. For information about how to develop ASP.NET mobile applications, see http://go.microsoft.com/fwlink/?LinkId=157231.")]
internal abstract class ListComponentEditorPage : MobileComponentEditorPage
{
protected bool CaseSensitive;
protected EditableTreeList TreeList = null;
protected ListTreeNode CurrentNode = null;
protected String TreeViewTitle = String.Empty;
protected String AddButtonTitle = String.Empty;
protected String DefaultName = String.Empty;
protected String MessageTitle = String.Empty;
protected String EmptyNameMessage = String.Empty;
// protected String DuplicateNameMessage = String.Empty; // AUI 2292
// protected String InvalidNameMessage = String.Empty; // AUI 4240
// private bool _newLabelSetDirty = true; // AUI 4452
protected int Y = 16;
protected static readonly int X = 238;
protected static readonly int ControlWidth = 152;
protected static readonly int LabelHeight = 16;
protected static readonly int CellSpace = 27;
protected static readonly int Index = 200;
protected static readonly int CmbHeight = 20;
protected virtual bool FilterIllegalName()
{
return true;
}
protected virtual void InitForm()
{
TreeList = new EditableTreeList(true, CaseSensitive, Y);
TreeList.TabIndex = 0;
TreeList.LblTitle.Text = TreeViewTitle;
TreeList.BtnAdd.Text = AddButtonTitle;
TreeList.TvList.AfterLabelEdit += new NodeLabelEditEventHandler(OnAfterLabelEdit);
TreeList.TvList.BeforeLabelEdit += new NodeLabelEditEventHandler(OnBeforeLabelEdit);
TreeList.TvList.AfterSelect += new TreeViewEventHandler(OnNodeSelected);
TreeList.BtnAdd.Click += new EventHandler(OnClickAddButton);
TreeList.BtnRemove.Click += new EventHandler(OnClickRemoveButton);
TreeList.BtnUp.Click += new EventHandler(OnClickUpButton);
TreeList.BtnDown.Click += new EventHandler(OnClickDownButton);
this.Controls.AddRange(new Control[] {TreeList /*, grplblProperties*/});
}
protected virtual void InitPage()
{
TreeList.TvList.Nodes.Clear();
TreeList.TvList.SelectedNode = null;
}
private void InitTree()
{
LoadItems();
if (TreeList.TvList.Nodes.Count > 0)
{
CurrentNode = (ListTreeNode)TreeList.TvList.Nodes[0];
TreeList.TvList.SelectedNode = CurrentNode;
LoadItemProperties();
}
}
///
/// Loads the component into the page.
///
///
protected override sealed void LoadComponent()
{
InitPage();
InitTree();
UpdateControlsEnabling();
}
protected abstract void LoadItems();
protected abstract void LoadItemProperties();
protected override void SaveComponent()
{
foreach (ListTreeNode node in TreeList.TvList.Nodes)
{
if (node.IsEditing)
{
// commit changes if still in editing mode.
node.EndEdit(false);
}
}
}
public override sealed void SetComponent(IComponent component)
{
base.SetComponent(component);
Debug.Assert (component is ObjectList | component is List |
component is SelectionList, "Invalid Component");
InitForm();
}
protected virtual String GetNewName()
{
int i = 1;
while (NameExists(DefaultName + i.ToString(CultureInfo.InvariantCulture)))
{
i++;
}
return DefaultName + i.ToString(CultureInfo.InvariantCulture);
}
protected bool NameExists(String name)
{
foreach (ListTreeNode node in TreeList.TvList.Nodes)
{
if (String.Compare(node.Name, name, ((!CaseSensitive) ? StringComparison.OrdinalIgnoreCase : StringComparison.Ordinal)) == 0)
{
return true;
}
}
return false;
}
protected virtual void OnAfterLabelEdit(Object source, NodeLabelEditEventArgs e)
{
Debug.Assert(null != e);
Debug.Assert(e.CancelEdit == false);
// this happens when the label is unchanged after entering and exiting
// label editing mode - bizarre behavior. this may be a bug in treeview
if (null == e.Label)
{
return;
}
if (FilterIllegalName())
{
bool cancel = true;
/* AUI 2292
if (String.Compare(e.Node.Text, e.Label, true) != 0 && NameExists(e.Label))
{
MessageBox.Show(
String.Format(DuplicateNameMessage, e.Label),
MessageTitle,
MessageBoxButtons.OK,
MessageBoxIcon.Exclamation);
}
*/
// can't accept an empty node name
if (e.Label.Length == 0)
{
MessageBox.Show(
EmptyNameMessage,
MessageTitle,
MessageBoxButtons.OK,
MessageBoxIcon.Exclamation);
}
/* Removed for DCR 4240
// can't accept an illegal node name
else if (!IsValidName(e.Label))
{
MessageBox.Show(
InvalidNameMessage,
MessageTitle,
MessageBoxButtons.OK,
MessageBoxIcon.Exclamation);
}
*/
else
{
cancel = false;
}
if (cancel)
{
e.CancelEdit = true;
return;
}
}
CurrentNode.Name = e.Label;
CurrentNode.Dirty = true;
SetDirty();
/* pulled out because of 4452
if (_newLabelSetDirty)
{
SetDirty();
}
*/
OnNodeRenamed();
}
private void OnBeforeLabelEdit(Object source, NodeLabelEditEventArgs e)
{
SetDirty();
}
private void OnClickDownButton(Object source, EventArgs e)
{
if (IsLoading())
{
return;
}
SetDirty();
}
private void OnClickUpButton(Object source, EventArgs e)
{
if (IsLoading())
{
return;
}
SetDirty();
}
protected virtual void OnNodeSelected(Object source, TreeViewEventArgs e)
{
if (IsLoading())
{
return;
}
CurrentNode = (ListTreeNode) TreeList.TvList.SelectedNode;
LoadItemProperties();
UpdateControlsEnabling();
}
protected virtual void OnPropertyChanged(Object source, EventArgs e)
{
}
protected virtual void OnClickAddButton(Object source, EventArgs e)
{
if (IsLoading())
{
return;
}
SetDirty();
}
protected virtual void OnClickRemoveButton(Object source, EventArgs e)
{
if (IsLoading())
{
return;
}
if (TreeList.TvList.Nodes.Count == 0)
{
CurrentNode = null;
LoadItemProperties();
}
SetDirty();
UpdateControlsEnabling();
}
protected virtual void UpdateControlsEnabling()
{
}
protected virtual void OnNodeRenamed()
{
}
[
System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand,
Flags=System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode)
]
protected class ListTreeNode : TreeNode
{
private bool _dirty;
private String _name;
internal ListTreeNode(String text) : base(text)
{
this._name = text;
}
internal bool Dirty
{
get
{
return _dirty;
}
set
{
_dirty = value;
}
}
internal new String Name
{
get
{
return _name;
}
set
{
_name = value;
}
}
}
}
}
// 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
- GridViewCellAutomationPeer.cs
- SHA1Cng.cs
- Rijndael.cs
- PersianCalendar.cs
- Rotation3DAnimation.cs
- FontEmbeddingManager.cs
- DataSourceSelectArguments.cs
- HttpContextBase.cs
- LogManagementAsyncResult.cs
- Slider.cs
- BindableAttribute.cs
- SiteMapProvider.cs
- ProgressBarHighlightConverter.cs
- WorkflowInstanceTerminatedRecord.cs
- ItemCheckEvent.cs
- XamlToRtfParser.cs
- DeclarativeConditionsCollection.cs
- CheckBox.cs
- ResourcePermissionBaseEntry.cs
- SimpleFieldTemplateUserControl.cs
- ZipArchive.cs
- ToolStripItemRenderEventArgs.cs
- TypeDescriptionProvider.cs
- SerialReceived.cs
- WebPartMinimizeVerb.cs
- VectorValueSerializer.cs
- SourceCollection.cs
- ArraySubsetEnumerator.cs
- DocumentApplication.cs
- Attributes.cs
- HttpProfileGroupBase.cs
- DateTimeEditor.cs
- Profiler.cs
- TableDetailsRow.cs
- PngBitmapEncoder.cs
- AssociationType.cs
- AutomationPropertyInfo.cs
- StylusPlugInCollection.cs
- SourceFilter.cs
- PersonalizationDictionary.cs
- DesignerTextWriter.cs
- remotingproxy.cs
- DefaultShape.cs
- DataGridCellInfo.cs
- DataGridCell.cs
- CodeSubDirectoriesCollection.cs
- DefaultTextStore.cs
- MatrixTransform.cs
- BitmapEffectRenderDataResource.cs
- XmlSignatureManifest.cs
- PeerPresenceInfo.cs
- DocumentationServerProtocol.cs
- SoapHttpTransportImporter.cs
- PhonemeEventArgs.cs
- ItemList.cs
- HtmlInputSubmit.cs
- LogArchiveSnapshot.cs
- InputLanguage.cs
- HashAlgorithm.cs
- CustomErrorsSection.cs
- FileSecurity.cs
- UrlPropertyAttribute.cs
- HitTestWithGeometryDrawingContextWalker.cs
- SelectionProviderWrapper.cs
- ConsumerConnectionPoint.cs
- DataBinder.cs
- StringFreezingAttribute.cs
- IsolatedStorage.cs
- DeflateStreamAsyncResult.cs
- MessageQueue.cs
- PolyLineSegment.cs
- LicenseException.cs
- Point3DCollection.cs
- BinaryOperationBinder.cs
- WasHttpModulesInstallComponent.cs
- RtType.cs
- CommonRemoteMemoryBlock.cs
- EntityDataSourceContextDisposingEventArgs.cs
- Trace.cs
- __Error.cs
- DetailsViewRowCollection.cs
- ViewKeyConstraint.cs
- MatrixCamera.cs
- SQLDecimalStorage.cs
- recordstatefactory.cs
- ComplusTypeValidator.cs
- Knowncolors.cs
- SettingsPropertyIsReadOnlyException.cs
- XmlEventCache.cs
- Set.cs
- OleDbParameter.cs
- TextUtf8RawTextWriter.cs
- DbConnectionPoolCounters.cs
- KeyToListMap.cs
- ModuleBuilderData.cs
- RoutedEventArgs.cs
- DataContext.cs
- Literal.cs
- UnknownMessageReceivedEventArgs.cs
- XmlSchemaObjectTable.cs