void repoTableNameChooser_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e)
        {
            String strTableName = this.TableName;

            TreeConfigNode obj = (TreeConfigNode)DataConfigTreeCtrl.GetDataRecordByNode(DataConfigTreeCtrl.FocusedNode);

            if (obj == null || (TreeConfigData)obj.InnerData == null)
            {
                return;
            }

            TreeConfigData configData = (TreeConfigData)obj.InnerData;

            strTableName = configData.TableName;

            String           strOldTableName = strTableName;
            TableChooserForm chooser         = new TableChooserForm();
            String           strResult       = chooser.ShowChooseOne(strOldTableName);

            if (chooser.DialogResult == DialogResult.OK)
            {
                configData.TableName = strResult;
            }

            DataConfigTreeCtrl.RefreshDataSource();
            DataConfigTreeCtrl.RefreshNode(DataConfigTreeCtrl.FocusedNode);
        }
        void Menu_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            if (e.Item.Tag != null && e.Item.Tag.ToString() == "New")
            {
                TableChooserForm form         = new TableChooserForm();
                String           strTableName = form.ShowChooseOne();
                if (form.DialogResult == DialogResult.Cancel)
                {
                    return;
                }
                if (DataStructureProvider.IsExistedTable(strTableName) == false)
                {
                    return;
                }

                TreeConfigData configData = new TreeConfigData();
                configData.Name             = "objNew" + this.Manager.ConfigList.Count;
                configData.DefaultLoad      = true;
                configData.TableName        = strTableName;
                configData.ColumnFieldNames = new Dictionary <string, string>();

                TreeConfigNode obj = (TreeConfigNode)DataConfigTreeCtrl.GetDataRecordByNode(DataConfigTreeCtrl.FocusedNode);
                if (obj == null)
                {
                    new TreeConfigNode(Manager.RootConfig, configData);
                }
                else
                {
                    configData.ParentTableName = obj.InnerData.TableName;
                    configData.ParentField     = DataStructureProvider.GetPrimaryKeyColumn(obj.InnerData.TableName);
                    configData.ChildField      = DataStructureProvider.GetForeignKeyOfTableName(configData.TableName, obj.InnerData.TableName);
                    new TreeConfigNode(obj, configData);
                }

                UpdateDataConfigs();
                RefreshDataConfigTree();
            }

            if (e.Item.Tag != null && e.Item.Tag.ToString() == "Delete")
            {
                TreeConfigNode obj = (TreeConfigNode)DataConfigTreeCtrl.GetDataRecordByNode(DataConfigTreeCtrl.FocusedNode);
                if (obj == null || (TreeConfigData)obj.InnerData == null)
                {
                    return;
                }

                DialogResult result = ABCHelper.ABCMessageBox.Show("Do you want to delete selected Object ? ", "Delete Object", MessageBoxButtons.YesNo);
                if (result == DialogResult.Yes)
                {
                    obj.ParentNode.ChildrenNodes.Remove(obj.InnerData.Name);
                    obj.ParentNode = null;

                    UpdateDataConfigs();
                    RefreshDataConfigTree();
                }
            }
        }
        void repoFieldNameChooser_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e)
        {
            String strTableName = this.TableName;

            TreeConfigNode obj = (TreeConfigNode)DataConfigTreeCtrl.GetDataRecordByNode(DataConfigTreeCtrl.FocusedNode);

            if (obj == null || (TreeConfigData)obj.InnerData == null)
            {
                return;
            }

            TreeConfigData configData = (TreeConfigData)obj.InnerData;

            strTableName = configData.TableName;

            if (String.IsNullOrWhiteSpace(strTableName) == false)
            {
                String strOldFieldName = String.Empty;
                if (configData.ColumnFieldNames.ContainsKey(this.DataConfigTreeCtrl.FocusedColumn.Caption))
                {
                    strOldFieldName = configData.ColumnFieldNames[this.DataConfigTreeCtrl.FocusedColumn.Caption];
                }

                FieldChooserEx chooser = new FieldChooserEx(strTableName, strOldFieldName);
                if (chooser.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    if (configData.ColumnFieldNames.ContainsKey(this.DataConfigTreeCtrl.FocusedColumn.Caption))
                    {
                        configData.ColumnFieldNames[this.DataConfigTreeCtrl.FocusedColumn.Caption] = chooser.Result;
                    }
                    else
                    {
                        configData.ColumnFieldNames.Add(this.DataConfigTreeCtrl.FocusedColumn.Caption, chooser.Result);
                    }
                }


                DataConfigTreeCtrl.RefreshNode(DataConfigTreeCtrl.FocusedNode);
                DataConfigTreeCtrl.RefreshDataSource();
                UpdateDataConfigs();
                DisplayTreeListCtrl.RefreshDataSource();
            }
        }
        public TreeConfigNode(TreeConfigNode parent, TreeConfigData _data)
        {
            this.ParentNode = parent;

            this.InnerData = _data;
            if (parent != null && parent.InnerData != null)
            {
                this.InnerData.Level = parent.InnerData.Level + 1;
            }

            if (this.ParentNode != null)
            {
                if (this.ParentNode.ChildrenNodes.ContainsKey(InnerData.Name) == false)
                {
                    this.ParentNode.ChildrenNodes.Add(InnerData.Name, this);
                }
                else
                {
                    this.ParentNode.ChildrenNodes[InnerData.Name] = this;
                }
            }
        }