Code:
/ 4.0 / 4.0 / 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. //------------------------------------------------------------------------------ // // 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
- LookupNode.cs
- XmlConvert.cs
- EventData.cs
- DocumentApplicationJournalEntry.cs
- AssemblyBuilder.cs
- CodeBinaryOperatorExpression.cs
- CustomError.cs
- JoinCqlBlock.cs
- FreezableDefaultValueFactory.cs
- FixedLineResult.cs
- unsafenativemethodstextservices.cs
- ObjectStateManagerMetadata.cs
- GZipObjectSerializer.cs
- ClosureBinding.cs
- TransactionManager.cs
- ScrollChrome.cs
- sqlnorm.cs
- Typeface.cs
- WindowsAltTab.cs
- X509ClientCertificateAuthenticationElement.cs
- SafeViewOfFileHandle.cs
- RequestBringIntoViewEventArgs.cs
- NetPipeSection.cs
- WebPartConnectionsCloseVerb.cs
- IntersectQueryOperator.cs
- ScriptDescriptor.cs
- ImageAutomationPeer.cs
- SharedConnectionInfo.cs
- KnownColorTable.cs
- MenuItemAutomationPeer.cs
- PageStatePersister.cs
- PenLineJoinValidation.cs
- Boolean.cs
- NameSpaceExtractor.cs
- CompilationPass2TaskInternal.cs
- RenderingEventArgs.cs
- PieceDirectory.cs
- Thread.cs
- Mappings.cs
- EventToken.cs
- SearchForVirtualItemEventArgs.cs
- ScrollItemPatternIdentifiers.cs
- ColumnMapTranslator.cs
- TdsValueSetter.cs
- FormViewUpdatedEventArgs.cs
- TreeNodeStyle.cs
- DataGridViewAdvancedBorderStyle.cs
- EntityCollectionChangedParams.cs
- GridView.cs
- EntityDataSourceState.cs
- DataGridRow.cs
- ViewEvent.cs
- PrinterSettings.cs
- DBSchemaRow.cs
- JsonFormatGeneratorStatics.cs
- ObjectAnimationBase.cs
- DataGridViewCheckBoxCell.cs
- LinqMaximalSubtreeNominator.cs
- ThousandthOfEmRealPoints.cs
- PocoEntityKeyStrategy.cs
- XmlUtil.cs
- PcmConverter.cs
- BaseTemplateCodeDomTreeGenerator.cs
- ToolStripItemRenderEventArgs.cs
- CleanUpVirtualizedItemEventArgs.cs
- StickyNoteContentControl.cs
- TreeNode.cs
- DataGridViewCellEventArgs.cs
- ParallelTimeline.cs
- MediaElement.cs
- UIPermission.cs
- SortDescriptionCollection.cs
- ParserOptions.cs
- UidPropertyAttribute.cs
- SqlInternalConnection.cs
- TableRow.cs
- WebPartDisplayMode.cs
- HttpApplicationFactory.cs
- DataBoundControl.cs
- DataServiceRequestOfT.cs
- ItemTypeToolStripMenuItem.cs
- ProfileGroupSettings.cs
- IISMapPath.cs
- safelinkcollection.cs
- AsyncResult.cs
- VBIdentifierTrimConverter.cs
- CodeTypeReferenceCollection.cs
- GPPOINT.cs
- ComPlusInstanceProvider.cs
- CaseStatementSlot.cs
- Crypto.cs
- CompositeFontFamily.cs
- DefaultParameterValueAttribute.cs
- ResourceReader.cs
- CompensateDesigner.cs
- SecurityHelper.cs
- WorkflowMarkupSerializationException.cs
- DataGridState.cs
- HScrollProperties.cs
- infer.cs