ListComponentEditorPage.cs source code in C# .NET

Source code for the .NET framework in C#

                        

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

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK