ListItemsPage.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 / ListItemsPage.cs / 1305376 / ListItemsPage.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.Diagnostics;
    using System.Drawing; 
    using System.Windows.Forms;
    using System.Windows.Forms.Design; 
//    using System.Web.UI.Design.Util; 

    using System.Web.UI.MobileControls; 
    using System.Web.UI.Design.MobileControls.Util;

    using Button     = System.Windows.Forms.Button;
    using Label      = System.Windows.Forms.Label; 
    using TextBox    = System.Windows.Forms.TextBox;
    using CheckBox   = System.Windows.Forms.CheckBox; 
    using TreeView   = System.Windows.Forms.TreeView; 

    ///  
    ///   The Items page for the List control.
    /// 
    /// 
    [ 
        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 sealed class ListItemsPage : ListComponentEditorPage 
    {
        private IListDesigner _listDesigner;
        private CheckBox      _itemsAsLinksCheckBox;
        private TextBox       _txtValue; 
        private CheckBox      _ckbSelected;
        private bool          _isBaseControlList; 
 
        public ListItemsPage()
        { 
            TreeViewTitle  = SR.GetString(SR.ListItemsPage_ItemCaption);
            AddButtonTitle = SR.GetString(SR.ListItemsPage_NewItemCaption);
            DefaultName    = SR.GetString(SR.ListItemsPage_DefaultItemText);
        } 

        protected override String HelpKeyword 
        { 
            get
            { 
                if (_isBaseControlList)
                {
                    return "net.Mobile.ListProperties.Items";
                } 
                else
                { 
                    return "net.Mobile.SelectionListProperties.Items"; 
                }
            } 
        }

        protected override bool FilterIllegalName()
        { 
            return false;
        } 
 
        protected override String GetNewName()
        { 
            return SR.GetString(SR.ListItemsPage_DefaultItemText);
        }

        protected override void InitForm() 
        {
            Debug.Assert(GetBaseControl() != null); 
            _isBaseControlList = (GetBaseControl() is List); 
            this._listDesigner = (IListDesigner)GetBaseDesigner();
 
            Y = (_isBaseControlList ? 52 : 24);

            base.InitForm();
 
            this.Text = SR.GetString(SR.ListItemsPage_Title);
            this.CommitOnDeactivate = true; 
            this.Icon = new Icon( 
                typeof(System.Web.UI.Design.MobileControls.MobileControlDesigner),
                "Items.ico" 
            );
            this.Size = new Size(382, 220);

            if (_isBaseControlList) 
            {
                _itemsAsLinksCheckBox = new CheckBox(); 
                _itemsAsLinksCheckBox.SetBounds(4, 4, 370, 16); 
                _itemsAsLinksCheckBox.Text = SR.GetString(SR.ListItemsPage_ItemsAsLinksCaption);
                _itemsAsLinksCheckBox.FlatStyle = FlatStyle.System; 
                _itemsAsLinksCheckBox.CheckedChanged += new EventHandler(this.OnSetPageDirty);
                _itemsAsLinksCheckBox.TabIndex = 0;
            }
 
            GroupLabel grplblItemList = new GroupLabel();
            grplblItemList.SetBounds(4, _isBaseControlList ? 32 : 4, 372, LabelHeight); 
            grplblItemList.Text = SR.GetString(SR.ListItemsPage_ItemListGroupLabel); 
            grplblItemList.TabIndex = 1;
            grplblItemList.TabStop = false; 

            TreeList.TabIndex = 2;

            Label lblValue = new Label(); 
            lblValue.SetBounds(X, Y, 134, LabelHeight);
            lblValue.Text = SR.GetString(SR.ListItemsPage_ItemValueCaption); 
            lblValue.TabStop = false; 
            lblValue.TabIndex = Index;
 
            Y += LabelHeight;
            _txtValue = new TextBox();
            _txtValue.SetBounds(X, Y, 134, CmbHeight);
            _txtValue.TextChanged += new EventHandler(this.OnPropertyChanged); 
            _txtValue.TabIndex = Index + 1;
 
            this.Controls.AddRange(new Control[] 
                                    {
                                        grplblItemList, 
                                        lblValue,
                                        _txtValue
                                    });
 
            if (_isBaseControlList)
            { 
                this.Controls.Add(_itemsAsLinksCheckBox); 
            }
            else 
            {
                Y += CellSpace;
                _ckbSelected = new CheckBox();
                _ckbSelected.SetBounds(X, Y, 134, LabelHeight); 
                _ckbSelected.FlatStyle = System.Windows.Forms.FlatStyle.System;
                _ckbSelected.Text = SR.GetString(SR.ListItemsPage_ItemSelectedCaption); 
                _ckbSelected.CheckedChanged += new EventHandler(this.OnPropertyChanged); 
                _ckbSelected.TabIndex = Index + 2;
                this.Controls.Add(_ckbSelected); 
            }
        }

        protected override void InitPage() 
        {
            base.InitPage(); 
 
            if (_isBaseControlList)
            { 
                List list = (List)GetBaseControl();
                _itemsAsLinksCheckBox.Checked = list.ItemsAsLinks;
            }
            else 
            {
                _ckbSelected.Checked = false; 
            } 
            _txtValue.Text = String.Empty;
        } 

        protected override void LoadItems()
        {
            using (new LoadingModeResource(this)) 
            {
                foreach (MobileListItem item in _listDesigner.Items) 
                { 
                    ItemTreeNode newNode = new ItemTreeNode(item);
                    TreeList.TvList.Nodes.Add(newNode); 
                }
            }
        }
 
        protected override void LoadItemProperties()
        { 
            using (new LoadingModeResource(this)) 
            {
                if (CurrentNode != null) 
                {
                    ItemTreeNode currentItemNode = (ItemTreeNode)CurrentNode;
                    _txtValue.Text = currentItemNode.Value;
                    if (!_isBaseControlList) 
                    {
                        _ckbSelected.Checked = currentItemNode.Selected; 
                    } 
                }
                else 
                {
                    _txtValue.Text = String.Empty;
                    if (!_isBaseControlList)
                    { 
                        _ckbSelected.Checked = false;
                    } 
                } 
            }
        } 

        protected override void OnAfterLabelEdit(Object source, NodeLabelEditEventArgs e)
        {
            base.OnAfterLabelEdit(source, e); 

            if (!((ItemTreeNode)CurrentNode).ValueSet) 
            { 
                _txtValue.Text = ((ItemTreeNode)CurrentNode).Value = CurrentNode.Name;
            } 
        }

        protected override void OnClickAddButton(Object source, EventArgs e)
        { 
            if (IsLoading())
            { 
                return; 
            }
 
            ItemTreeNode newNode = new ItemTreeNode(GetNewName());
            TreeList.TvList.Nodes.Add(newNode);

            TreeList.TvList.SelectedNode = newNode; 
            CurrentNode = newNode;
            newNode.Dirty = true; 
            newNode.BeginEdit(); 

            LoadItemProperties(); 

            SetDirty();
        }
 
        private void OnSetPageDirty(Object source, EventArgs e)
        { 
            if (IsLoading()) 
            {
                return; 
            }
            SetDirty();
        }
 
        protected override void OnPropertyChanged(Object source, EventArgs e)
        { 
            // This means there are no fields yet. Do nothing 
            if (CurrentNode == null || IsLoading())
            { 
                return;
            }

            if (source is TextBox) 
            {
                ((ItemTreeNode)CurrentNode).Value = _txtValue.Text; 
            } 
            else
            { 
                Debug.Assert(!_isBaseControlList);
                ((ItemTreeNode)CurrentNode).Selected = _ckbSelected.Checked;
            }
 
            SetDirty();
            CurrentNode.Dirty = true; 
        } 

        protected override void SaveComponent() 
        {
            // Delegate to base implementation first!
            // This will properly close ListTreeNode editing mode.
            base.SaveComponent(); 

            _listDesigner.Items.Clear(); 
 
            foreach (ItemTreeNode itemNode in TreeList.TvList.Nodes)
            { 
                if (itemNode.Dirty)
                {
                    itemNode.RuntimeItem.Text  = itemNode.Text;
                    itemNode.RuntimeItem.Value = itemNode.Value; 
                    if (!_isBaseControlList)
                    { 
                        itemNode.RuntimeItem.Selected = itemNode.Selected; 
                    }
                } 

                _listDesigner.Items.Add(itemNode.RuntimeItem);
            }
 
            if (_isBaseControlList)
            { 
                List list = (List)GetBaseControl(); 
                list.ItemsAsLinks = _itemsAsLinksCheckBox.Checked;
                TypeDescriptor.Refresh(list); 
            }
            else
            {
                SelectionList selectionList = (SelectionList)GetBaseControl(); 
                TypeDescriptor.Refresh(selectionList);
            } 
        } 

        protected override void UpdateControlsEnabling() 
        {
            if (TreeList.TvList.SelectedNode == null)
            {
                TreeList.TvList.Enabled = _txtValue.Enabled = false; 
                _txtValue.Text = String.Empty;
            } 
            else 
            {
                TreeList.TvList.Enabled = _txtValue.Enabled = true; 
            }

            if (!_isBaseControlList)
            { 
                SelectionList selectionListControl = (SelectionList) GetBaseControl();
                if (TreeList.TvList.SelectedNode == null) 
                { 
                    _ckbSelected.Enabled = false;
                    _ckbSelected.Checked = false; 
                }
                else
                {
                    _ckbSelected.Enabled = true; 
                }
            } 
        } 

        ///  
        ///    Internal object used to store all items properties
        /// 
        [
            System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand, 
            Flags=System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode)
        ] 
        private class ItemTreeNode : ListTreeNode 
        {
            private MobileListItem _runtimeItem; 
            private String _value;
            private bool _selected;
            private bool _valueSet = false;
 
            /// 
            ///  
            internal ItemTreeNode(String itemText) : base(itemText) 
            {
                this._runtimeItem = new MobileListItem(); 
                this._value = null;
                this._selected = false;
            }
 
            /// 
            ///  
            internal ItemTreeNode(MobileListItem runtimeItem) : base(runtimeItem.Text) 
            {
                Debug.Assert(runtimeItem != null, "runtimeItem is null"); 

                _valueSet = true;
                this._runtimeItem = runtimeItem;
                this._value = _runtimeItem.Value; 
                this._selected = _runtimeItem.Selected;
            } 
 
            internal MobileListItem RuntimeItem
            { 
                get
                {
                    return _runtimeItem;
                } 
            }
 
            internal String Value 
            {
                get 
                {
                    return _value;
                }
 
                set
                { 
                    _value = value; 
                    _valueSet = true;
                } 
            }

            internal bool Selected
            { 
                get
                { 
                    return _selected; 
                }
 
                set
                {
                    _selected = value;
                } 
            }
 
            internal bool ValueSet 
            {
                get 
                {
                    return _valueSet;
                }
            } 
        }
    } 
} 

// 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