ObjectListFieldsPage.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / MIT / System / Web / UI / MobileControls / Design / ObjectListFieldsPage.cs / 1305376 / ObjectListFieldsPage.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.Web.UI.MobileControls;
    using System.Windows.Forms; 
    using System.Windows.Forms.Design; 
    using System.Web.UI.Design.MobileControls.Util;
 
    using DesignTimeData = System.Web.UI.Design.DesignTimeData;
    using Button = System.Windows.Forms.Button;
    using Label = System.Windows.Forms.Label;
    using ComboBox = System.Windows.Forms.ComboBox; 
    using TextBox = System.Windows.Forms.TextBox;
 
    ///  
    ///   The Choices page for the StyleSheet 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 ObjectListFieldsPage : ListComponentEditorPage 
    {
        private CheckBox _ckbAutoGenerateFields; 
        private CheckBox _ckbVisible;
        private TextBox _txtDataFormatString;
        private TextBox _txtTitle;
        private UnsettableComboBox _cmbDataField; 
        private ObjectList _objectList;
 
        public ObjectListFieldsPage() 
        {
            Y = 52; 
            CaseSensitive = false;
            TreeViewTitle           = SR.GetString(SR.ObjectListFieldsPage_FieldNameCaption);
            AddButtonTitle          = SR.GetString(SR.ObjectListFieldsPage_NewFieldBtnCaption);
            DefaultName             = SR.GetString(SR.ObjectListFieldsPage_DefaultFieldName); 
            MessageTitle            = SR.GetString(SR.ObjectListFieldsPage_ErrorMessageTitle);
            EmptyNameMessage        = SR.GetString(SR.ObjectListFieldsPage_EmptyNameError); 
            // DuplicateNameMessage = SR.GetString(SR.ObjectListFieldsPage_DuplicateNameError); 
        }
 
        protected override String HelpKeyword
        {
            get
            { 
                return "net.Mobile.ObjectListProperties.Fields";
            } 
        } 

        protected override void InitForm() 
        {
            base.InitForm();

            this._objectList = (ObjectList)Component; 

            this.CommitOnDeactivate = true; 
            this.Icon = new Icon( 
                typeof(System.Web.UI.Design.MobileControls.MobileControlDesigner),
                "Fields.ico" 
            );
            this.Size = new Size(402, 300);
            this.Text = SR.GetString(SR.ObjectListFieldsPage_Title);
 
            _ckbAutoGenerateFields = new CheckBox();
            _cmbDataField          = new UnsettableComboBox(); 
            _ckbVisible            = new CheckBox(); 
            _txtDataFormatString   = new TextBox();
            _txtTitle              = new TextBox(); 

            _ckbAutoGenerateFields.SetBounds(4, 4, 396, LabelHeight);
            _ckbAutoGenerateFields.Text = SR.GetString(SR.ObjectListFieldsPage_AutoGenerateFieldsCaption);
            _ckbAutoGenerateFields.FlatStyle = FlatStyle.System; 
            _ckbAutoGenerateFields.CheckedChanged += new EventHandler(this.OnSetPageDirty);
            _ckbAutoGenerateFields.TabIndex = 0; 
 
            GroupLabel grplblFieldList = new GroupLabel();
            grplblFieldList.SetBounds(4, 32, 392, LabelHeight); 
            grplblFieldList.Text = SR.GetString(SR.ObjectListFieldsPage_FieldListGroupLabel);
            grplblFieldList.TabIndex = 1;
            grplblFieldList.TabStop = false;
 
            TreeList.TabIndex = 2;
 
            Label lblDataField = new Label(); 
            lblDataField.SetBounds(X, Y, ControlWidth, LabelHeight);
            lblDataField.Text = SR.GetString(SR.ObjectListFieldsPage_DataFieldCaption); 
            lblDataField.TabStop = false;
            lblDataField.TabIndex = Index;

            Y += LabelHeight; 
            _cmbDataField.SetBounds(X, Y, ControlWidth, CmbHeight);
            _cmbDataField.DropDownStyle = ComboBoxStyle.DropDown; 
            _cmbDataField.Sorted        = true; 
            _cmbDataField.NotSetText    = SR.GetString(SR.ObjectListFieldsPage_NoneComboEntry);
            _cmbDataField.TextChanged   += new EventHandler(this.OnPropertyChanged); 
            _cmbDataField.SelectedIndexChanged += new EventHandler(this.OnPropertyChanged);
            _cmbDataField.TabIndex = Index + 1;

            Y += CellSpace; 
            Label lblDataFormatString = new Label();
            lblDataFormatString.SetBounds(X, Y, ControlWidth, LabelHeight); 
            lblDataFormatString.Text = SR.GetString(SR.ObjectListFieldsPage_DataFormatStringCaption); 
            lblDataFormatString.TabStop = false;
            lblDataFormatString.TabIndex = Index + 2; 

            Y += LabelHeight;
            _txtDataFormatString.SetBounds(X, Y, ControlWidth, CmbHeight);
            _txtDataFormatString.TextChanged += new EventHandler(this.OnPropertyChanged); 
            _txtDataFormatString.TabIndex = Index + 3;
 
            Y += CellSpace; 
            Label lblTitle = new Label();
            lblTitle.SetBounds(X, Y, ControlWidth, LabelHeight); 
            lblTitle.Text = SR.GetString(SR.ObjectListFieldsPage_TitleCaption);
            lblTitle.TabStop = false;
            lblTitle.TabIndex = Index + 4;
 
            Y += LabelHeight;
            _txtTitle.SetBounds(X, Y, ControlWidth, CmbHeight); 
            _txtTitle.TextChanged += new EventHandler(this.OnPropertyChanged); 
            _txtTitle.TabIndex = Index + 5;
 
            Y += CellSpace;
            _ckbVisible.SetBounds(X, Y, ControlWidth, CmbHeight);
            _ckbVisible.FlatStyle = System.Windows.Forms.FlatStyle.System;
            _ckbVisible.Text = SR.GetString(SR.ObjectListFieldsPage_VisibleCaption); 
            _ckbVisible.CheckedChanged += new EventHandler(this.OnPropertyChanged);
            _ckbVisible.TabIndex = Index + 6; 
 
            this.Controls.AddRange(new Control[] {
                                                     _ckbAutoGenerateFields, 
                                                     grplblFieldList,
                                                     lblDataField,
                                                     _cmbDataField,
                                                     lblDataFormatString, 
                                                     _txtDataFormatString,
                                                     lblTitle, 
                                                     _txtTitle, 
                                                     _ckbVisible
                                                 }); 
        }

        protected override void InitPage()
        { 
            base.InitPage();
 
            _cmbDataField.Items.Clear(); 
            _cmbDataField.SelectedIndex = -1;
            _cmbDataField.EnsureNotSetItem(); 
            _txtDataFormatString.Text = String.Empty;
            _txtTitle.Text = String.Empty;
            _ckbVisible.Checked = true;
            _ckbAutoGenerateFields.Checked = _objectList.AutoGenerateFields; 

            LoadDataSourceFields(); 
        } 

        private void LoadDataSourceFields() 
        {
            using (new LoadingModeResource(this))
            {
                PropertyDescriptorCollection props = null; 
                ObjectListDesigner objectListDesigner = (ObjectListDesigner)GetBaseDesigner();
 
                IEnumerable dataSource = ((IDataSourceProvider)objectListDesigner).GetResolvedSelectedDataSource(); 
                if (dataSource != null)
                { 
                    props = DesignTimeData.GetDataFields(dataSource);
                }

                if (props != null) 
                {
                    foreach (PropertyDescriptor propDesc in props) 
                    { 
                        _cmbDataField.Items.Add(propDesc.Name);
                    } 
                }
            }
        }
 
        protected override void LoadItems()
        { 
            using (new LoadingModeResource(this)) 
            {
                foreach (ObjectListField field in _objectList.Fields) 
                {
                    FieldTreeNode newNode = new FieldTreeNode(field.Name, field);
                    TreeList.TvList.Nodes.Add(newNode);
                } 
            }
        } 
 
        protected override void LoadItemProperties()
        { 
            using (new LoadingModeResource(this))
            {
                if (CurrentNode != null)
                { 
                    FieldTreeNode currentFieldNode = (FieldTreeNode)CurrentNode;
 
                    _cmbDataField.Text          = currentFieldNode.DataField; 
                    _txtDataFormatString.Text   = currentFieldNode.DataFormatString;
                    _txtTitle.Text              = currentFieldNode.Title; 
                    _ckbVisible.Checked         = currentFieldNode.Visible;
                }
                else
                { 
                    _cmbDataField.Text          = String.Empty;
                    _txtDataFormatString.Text   = String.Empty; 
                    _txtTitle.Text              = String.Empty; 
                    _ckbVisible.Checked         = false;
                } 
            }
        }

        private void OnSetPageDirty(Object source, EventArgs e) 
        {
            if (IsLoading()) 
            { 
                return;
            } 
            SetDirty();
        }

        protected override void OnClickAddButton(Object source, EventArgs e) 
        {
            if (IsLoading()) 
            { 
                return;
            } 

            FieldTreeNode newNode = new FieldTreeNode(GetNewName());
            TreeList.TvList.Nodes.Add(newNode);
 
            TreeList.TvList.SelectedNode = newNode;
            CurrentNode = newNode; 
            newNode.Dirty = true; 
            newNode.BeginEdit();
 
            LoadItemProperties();

            SetDirty();
        } 

        protected override void OnPropertyChanged(Object source, EventArgs e) 
        { 
            if (IsLoading())
            { 
                return;
            }

            // This means there are no fields yet. Do nothing 
            if (CurrentNode == null)
            { 
                return; 
            }
 
            FieldTreeNode currentFieldNode = (FieldTreeNode)CurrentNode;

            if (source == _cmbDataField)
            { 
                currentFieldNode.DataField = _cmbDataField.Text;
            } 
            else if (source == _txtDataFormatString) 
            {
                currentFieldNode.DataFormatString = _txtDataFormatString.Text; 
            }
            else if (source == _txtTitle)
            {
                currentFieldNode.Title = _txtTitle.Text; 
            }
            else if (source == _ckbVisible) 
            { 
                currentFieldNode.Visible = _ckbVisible.Checked;
            } 

            SetDirty();
            CurrentNode.Dirty = true;
        } 

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

            _objectList.Fields.Clear();
 
            foreach (FieldTreeNode fieldNode in TreeList.TvList.Nodes)
            { 
                if (fieldNode.Dirty) 
                {
                    fieldNode.RuntimeField.Name             = fieldNode.Name; 
                    fieldNode.RuntimeField.DataField        = fieldNode.DataField;
                    fieldNode.RuntimeField.DataFormatString = fieldNode.DataFormatString;
                    fieldNode.RuntimeField.Title            = fieldNode.Title;
                    fieldNode.RuntimeField.Visible          = fieldNode.Visible; 
                }
 
                Debug.Assert(fieldNode.RuntimeField != null); 
                _objectList.Fields.AddAt(-1, fieldNode.RuntimeField);
            } 

            _objectList.AutoGenerateFields = _ckbAutoGenerateFields.Checked;

            TypeDescriptor.Refresh(_objectList); 
        }
 
        protected override void UpdateControlsEnabling() 
        {
            TreeList.TvList.Enabled = 
            _cmbDataField.Enabled =
            _txtDataFormatString.Enabled =
            _txtTitle.Enabled =
            _ckbVisible.Enabled = (TreeList.TvList.SelectedNode != null); 
        }
 
        [ 
            System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand,
            Flags=System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode) 
        ]
        private class FieldTreeNode : ListTreeNode
        {
            private ObjectListField _runtimeField; 

            private String _dataField; 
            private String _dataFormatString; 
            private String _title;
            private bool _visible; 

            internal FieldTreeNode(String fieldID) : this(fieldID, new ObjectListField())
            {
            } 

            ///  
            ///  
            internal FieldTreeNode(String fieldID, ObjectListField runtimeField) : base(fieldID)
            { 
                Debug.Assert(fieldID != null, "invalid ID for ObjectListField");
                Debug.Assert(runtimeField != null, "null ObjectListField");

                this._runtimeField  = runtimeField; 

                LoadAttributes(); 
            } 

            private void LoadAttributes() 
            {
                this.DataField          = RuntimeField.DataField;
                this.DataFormatString   = RuntimeField.DataFormatString;
                this.Title              = RuntimeField.Title; 
                this.Visible            = RuntimeField.Visible;
            } 
 
            internal ObjectListField RuntimeField
            { 
                get
                {
                    return _runtimeField;
                } 
            }
 
            internal String DataField 
            {
                get 
                {
                    return _dataField;
                }
 
                set
                { 
                    _dataField = value; 
                }
            } 

            internal String DataFormatString
            {
                get 
                {
                    return _dataFormatString; 
                } 

                set 
                {
                    _dataFormatString = value;
                }
            } 

            internal String Title 
            { 
                get
                { 
                    return _title;
                }

                set 
                {
                    _title = value; 
                } 
            }
 
            internal bool Visible
            {
                get
                { 
                    return _visible;
                } 
 
                set
                { 
                    _visible = 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.Diagnostics;
    using System.Drawing; 
    using System.Web.UI.MobileControls;
    using System.Windows.Forms; 
    using System.Windows.Forms.Design; 
    using System.Web.UI.Design.MobileControls.Util;
 
    using DesignTimeData = System.Web.UI.Design.DesignTimeData;
    using Button = System.Windows.Forms.Button;
    using Label = System.Windows.Forms.Label;
    using ComboBox = System.Windows.Forms.ComboBox; 
    using TextBox = System.Windows.Forms.TextBox;
 
    ///  
    ///   The Choices page for the StyleSheet 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 ObjectListFieldsPage : ListComponentEditorPage 
    {
        private CheckBox _ckbAutoGenerateFields; 
        private CheckBox _ckbVisible;
        private TextBox _txtDataFormatString;
        private TextBox _txtTitle;
        private UnsettableComboBox _cmbDataField; 
        private ObjectList _objectList;
 
        public ObjectListFieldsPage() 
        {
            Y = 52; 
            CaseSensitive = false;
            TreeViewTitle           = SR.GetString(SR.ObjectListFieldsPage_FieldNameCaption);
            AddButtonTitle          = SR.GetString(SR.ObjectListFieldsPage_NewFieldBtnCaption);
            DefaultName             = SR.GetString(SR.ObjectListFieldsPage_DefaultFieldName); 
            MessageTitle            = SR.GetString(SR.ObjectListFieldsPage_ErrorMessageTitle);
            EmptyNameMessage        = SR.GetString(SR.ObjectListFieldsPage_EmptyNameError); 
            // DuplicateNameMessage = SR.GetString(SR.ObjectListFieldsPage_DuplicateNameError); 
        }
 
        protected override String HelpKeyword
        {
            get
            { 
                return "net.Mobile.ObjectListProperties.Fields";
            } 
        } 

        protected override void InitForm() 
        {
            base.InitForm();

            this._objectList = (ObjectList)Component; 

            this.CommitOnDeactivate = true; 
            this.Icon = new Icon( 
                typeof(System.Web.UI.Design.MobileControls.MobileControlDesigner),
                "Fields.ico" 
            );
            this.Size = new Size(402, 300);
            this.Text = SR.GetString(SR.ObjectListFieldsPage_Title);
 
            _ckbAutoGenerateFields = new CheckBox();
            _cmbDataField          = new UnsettableComboBox(); 
            _ckbVisible            = new CheckBox(); 
            _txtDataFormatString   = new TextBox();
            _txtTitle              = new TextBox(); 

            _ckbAutoGenerateFields.SetBounds(4, 4, 396, LabelHeight);
            _ckbAutoGenerateFields.Text = SR.GetString(SR.ObjectListFieldsPage_AutoGenerateFieldsCaption);
            _ckbAutoGenerateFields.FlatStyle = FlatStyle.System; 
            _ckbAutoGenerateFields.CheckedChanged += new EventHandler(this.OnSetPageDirty);
            _ckbAutoGenerateFields.TabIndex = 0; 
 
            GroupLabel grplblFieldList = new GroupLabel();
            grplblFieldList.SetBounds(4, 32, 392, LabelHeight); 
            grplblFieldList.Text = SR.GetString(SR.ObjectListFieldsPage_FieldListGroupLabel);
            grplblFieldList.TabIndex = 1;
            grplblFieldList.TabStop = false;
 
            TreeList.TabIndex = 2;
 
            Label lblDataField = new Label(); 
            lblDataField.SetBounds(X, Y, ControlWidth, LabelHeight);
            lblDataField.Text = SR.GetString(SR.ObjectListFieldsPage_DataFieldCaption); 
            lblDataField.TabStop = false;
            lblDataField.TabIndex = Index;

            Y += LabelHeight; 
            _cmbDataField.SetBounds(X, Y, ControlWidth, CmbHeight);
            _cmbDataField.DropDownStyle = ComboBoxStyle.DropDown; 
            _cmbDataField.Sorted        = true; 
            _cmbDataField.NotSetText    = SR.GetString(SR.ObjectListFieldsPage_NoneComboEntry);
            _cmbDataField.TextChanged   += new EventHandler(this.OnPropertyChanged); 
            _cmbDataField.SelectedIndexChanged += new EventHandler(this.OnPropertyChanged);
            _cmbDataField.TabIndex = Index + 1;

            Y += CellSpace; 
            Label lblDataFormatString = new Label();
            lblDataFormatString.SetBounds(X, Y, ControlWidth, LabelHeight); 
            lblDataFormatString.Text = SR.GetString(SR.ObjectListFieldsPage_DataFormatStringCaption); 
            lblDataFormatString.TabStop = false;
            lblDataFormatString.TabIndex = Index + 2; 

            Y += LabelHeight;
            _txtDataFormatString.SetBounds(X, Y, ControlWidth, CmbHeight);
            _txtDataFormatString.TextChanged += new EventHandler(this.OnPropertyChanged); 
            _txtDataFormatString.TabIndex = Index + 3;
 
            Y += CellSpace; 
            Label lblTitle = new Label();
            lblTitle.SetBounds(X, Y, ControlWidth, LabelHeight); 
            lblTitle.Text = SR.GetString(SR.ObjectListFieldsPage_TitleCaption);
            lblTitle.TabStop = false;
            lblTitle.TabIndex = Index + 4;
 
            Y += LabelHeight;
            _txtTitle.SetBounds(X, Y, ControlWidth, CmbHeight); 
            _txtTitle.TextChanged += new EventHandler(this.OnPropertyChanged); 
            _txtTitle.TabIndex = Index + 5;
 
            Y += CellSpace;
            _ckbVisible.SetBounds(X, Y, ControlWidth, CmbHeight);
            _ckbVisible.FlatStyle = System.Windows.Forms.FlatStyle.System;
            _ckbVisible.Text = SR.GetString(SR.ObjectListFieldsPage_VisibleCaption); 
            _ckbVisible.CheckedChanged += new EventHandler(this.OnPropertyChanged);
            _ckbVisible.TabIndex = Index + 6; 
 
            this.Controls.AddRange(new Control[] {
                                                     _ckbAutoGenerateFields, 
                                                     grplblFieldList,
                                                     lblDataField,
                                                     _cmbDataField,
                                                     lblDataFormatString, 
                                                     _txtDataFormatString,
                                                     lblTitle, 
                                                     _txtTitle, 
                                                     _ckbVisible
                                                 }); 
        }

        protected override void InitPage()
        { 
            base.InitPage();
 
            _cmbDataField.Items.Clear(); 
            _cmbDataField.SelectedIndex = -1;
            _cmbDataField.EnsureNotSetItem(); 
            _txtDataFormatString.Text = String.Empty;
            _txtTitle.Text = String.Empty;
            _ckbVisible.Checked = true;
            _ckbAutoGenerateFields.Checked = _objectList.AutoGenerateFields; 

            LoadDataSourceFields(); 
        } 

        private void LoadDataSourceFields() 
        {
            using (new LoadingModeResource(this))
            {
                PropertyDescriptorCollection props = null; 
                ObjectListDesigner objectListDesigner = (ObjectListDesigner)GetBaseDesigner();
 
                IEnumerable dataSource = ((IDataSourceProvider)objectListDesigner).GetResolvedSelectedDataSource(); 
                if (dataSource != null)
                { 
                    props = DesignTimeData.GetDataFields(dataSource);
                }

                if (props != null) 
                {
                    foreach (PropertyDescriptor propDesc in props) 
                    { 
                        _cmbDataField.Items.Add(propDesc.Name);
                    } 
                }
            }
        }
 
        protected override void LoadItems()
        { 
            using (new LoadingModeResource(this)) 
            {
                foreach (ObjectListField field in _objectList.Fields) 
                {
                    FieldTreeNode newNode = new FieldTreeNode(field.Name, field);
                    TreeList.TvList.Nodes.Add(newNode);
                } 
            }
        } 
 
        protected override void LoadItemProperties()
        { 
            using (new LoadingModeResource(this))
            {
                if (CurrentNode != null)
                { 
                    FieldTreeNode currentFieldNode = (FieldTreeNode)CurrentNode;
 
                    _cmbDataField.Text          = currentFieldNode.DataField; 
                    _txtDataFormatString.Text   = currentFieldNode.DataFormatString;
                    _txtTitle.Text              = currentFieldNode.Title; 
                    _ckbVisible.Checked         = currentFieldNode.Visible;
                }
                else
                { 
                    _cmbDataField.Text          = String.Empty;
                    _txtDataFormatString.Text   = String.Empty; 
                    _txtTitle.Text              = String.Empty; 
                    _ckbVisible.Checked         = false;
                } 
            }
        }

        private void OnSetPageDirty(Object source, EventArgs e) 
        {
            if (IsLoading()) 
            { 
                return;
            } 
            SetDirty();
        }

        protected override void OnClickAddButton(Object source, EventArgs e) 
        {
            if (IsLoading()) 
            { 
                return;
            } 

            FieldTreeNode newNode = new FieldTreeNode(GetNewName());
            TreeList.TvList.Nodes.Add(newNode);
 
            TreeList.TvList.SelectedNode = newNode;
            CurrentNode = newNode; 
            newNode.Dirty = true; 
            newNode.BeginEdit();
 
            LoadItemProperties();

            SetDirty();
        } 

        protected override void OnPropertyChanged(Object source, EventArgs e) 
        { 
            if (IsLoading())
            { 
                return;
            }

            // This means there are no fields yet. Do nothing 
            if (CurrentNode == null)
            { 
                return; 
            }
 
            FieldTreeNode currentFieldNode = (FieldTreeNode)CurrentNode;

            if (source == _cmbDataField)
            { 
                currentFieldNode.DataField = _cmbDataField.Text;
            } 
            else if (source == _txtDataFormatString) 
            {
                currentFieldNode.DataFormatString = _txtDataFormatString.Text; 
            }
            else if (source == _txtTitle)
            {
                currentFieldNode.Title = _txtTitle.Text; 
            }
            else if (source == _ckbVisible) 
            { 
                currentFieldNode.Visible = _ckbVisible.Checked;
            } 

            SetDirty();
            CurrentNode.Dirty = true;
        } 

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

            _objectList.Fields.Clear();
 
            foreach (FieldTreeNode fieldNode in TreeList.TvList.Nodes)
            { 
                if (fieldNode.Dirty) 
                {
                    fieldNode.RuntimeField.Name             = fieldNode.Name; 
                    fieldNode.RuntimeField.DataField        = fieldNode.DataField;
                    fieldNode.RuntimeField.DataFormatString = fieldNode.DataFormatString;
                    fieldNode.RuntimeField.Title            = fieldNode.Title;
                    fieldNode.RuntimeField.Visible          = fieldNode.Visible; 
                }
 
                Debug.Assert(fieldNode.RuntimeField != null); 
                _objectList.Fields.AddAt(-1, fieldNode.RuntimeField);
            } 

            _objectList.AutoGenerateFields = _ckbAutoGenerateFields.Checked;

            TypeDescriptor.Refresh(_objectList); 
        }
 
        protected override void UpdateControlsEnabling() 
        {
            TreeList.TvList.Enabled = 
            _cmbDataField.Enabled =
            _txtDataFormatString.Enabled =
            _txtTitle.Enabled =
            _ckbVisible.Enabled = (TreeList.TvList.SelectedNode != null); 
        }
 
        [ 
            System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand,
            Flags=System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode) 
        ]
        private class FieldTreeNode : ListTreeNode
        {
            private ObjectListField _runtimeField; 

            private String _dataField; 
            private String _dataFormatString; 
            private String _title;
            private bool _visible; 

            internal FieldTreeNode(String fieldID) : this(fieldID, new ObjectListField())
            {
            } 

            ///  
            ///  
            internal FieldTreeNode(String fieldID, ObjectListField runtimeField) : base(fieldID)
            { 
                Debug.Assert(fieldID != null, "invalid ID for ObjectListField");
                Debug.Assert(runtimeField != null, "null ObjectListField");

                this._runtimeField  = runtimeField; 

                LoadAttributes(); 
            } 

            private void LoadAttributes() 
            {
                this.DataField          = RuntimeField.DataField;
                this.DataFormatString   = RuntimeField.DataFormatString;
                this.Title              = RuntimeField.Title; 
                this.Visible            = RuntimeField.Visible;
            } 
 
            internal ObjectListField RuntimeField
            { 
                get
                {
                    return _runtimeField;
                } 
            }
 
            internal String DataField 
            {
                get 
                {
                    return _dataField;
                }
 
                set
                { 
                    _dataField = value; 
                }
            } 

            internal String DataFormatString
            {
                get 
                {
                    return _dataFormatString; 
                } 

                set 
                {
                    _dataFormatString = value;
                }
            } 

            internal String Title 
            { 
                get
                { 
                    return _title;
                }

                set 
                {
                    _title = value; 
                } 
            }
 
            internal bool Visible
            {
                get
                { 
                    return _visible;
                } 
 
                set
                { 
                    _visible = 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