Esempio n. 1
0
        private GDbTab _gDbTabMaker(GenericDatabase database, TabControl control, BaseDb gdb)
        {
            GTabSettings <TKey, ReadableTuple <TKey> >  settings = new GTabSettings <TKey, ReadableTuple <TKey> >(gdb);
            GDbTabWrapper <TKey, ReadableTuple <TKey> > tab      = new GDbTabWrapper <TKey, ReadableTuple <TKey> >();
            Table <TKey, ReadableTuple <TKey> >         table    = gdb.To <TKey>().Table;

            settings.Table   = table;
            settings.Control = control;

            InitStyle(tab, settings, gdb);
            InitAttributes(tab, settings, gdb);
            if (OnInitSettings != null)
            {
                OnInitSettings(tab, settings, gdb);
            }

            DisplayableProperty <TKey, ReadableTuple <TKey> > generalProperties = new DisplayableProperty <TKey, ReadableTuple <TKey> >();

            generalProperties.Spacing = DefaultSpacing;

            control.SelectionChanged += delegate(object sender, SelectionChangedEventArgs e) {
                if (e == null || e.RemovedItems.Count <= 0 || e.RemovedItems[0] as TabItem == null || (e.AddedItems.Count > 0 && e.AddedItems[0] as TabItem == null))
                {
                    return;
                }

                if (e.AddedItems.Count <= 0)
                {
                    return;
                }

                TabItem item = e.AddedItems[0] as TabItem;

                if (gdb.DbSource.AlternativeName != null)
                {
                    if (WpfUtilities.IsTab(item, gdb.DbSource.Filename) || WpfUtilities.IsTab(item, gdb.DbSource.AlternativeName))
                    {
                        if (generalProperties.OnTabVisible != null)
                        {
                            generalProperties.OnTabVisible(this);
                        }
                        if (OnPreviewTabVisualUpdate != null)
                        {
                            OnPreviewTabVisualUpdate(tab, settings, gdb);
                        }
                        if (OnTabVisualUpdate != null)
                        {
                            OnTabVisualUpdate(tab, settings, gdb);
                        }
                    }
                }
                else
                {
                    if (WpfUtilities.IsTab(item, gdb.DbSource))
                    {
                        if (generalProperties.OnTabVisible != null)
                        {
                            generalProperties.OnTabVisible(this);
                        }
                        if (OnPreviewTabVisualUpdate != null)
                        {
                            OnPreviewTabVisualUpdate(tab, settings, gdb);
                        }
                        if (OnTabVisualUpdate != null)
                        {
                            OnTabVisualUpdate(tab, settings, gdb);
                        }
                    }
                }
            };

            database.Reloaded += delegate {
                if (OnDatabaseReloaded != null)
                {
                    OnDatabaseReloaded(tab, settings, gdb);
                }
            };

            int line = 0;

            if (OnPreviewGenerateGrid != null)
            {
                OnPreviewGenerateGrid(ref line, database, control, generalProperties, gdb);
            }
            if (GenerateGrid != null)
            {
                GenerateGrid(ref line, database, control, generalProperties, gdb);
            }
            if (OnGenerateGrid != null)
            {
                OnGenerateGrid(ref line, database, control, generalProperties, gdb);
            }

            settings.DisplayablePropertyMaker = generalProperties;
            settings.ClientDatabase           = database;

            if (SetSettings != null)
            {
                SetSettings(tab, settings, gdb);
            }
            if (OnSetCustomCommands != null)
            {
                OnSetCustomCommands(tab, settings, gdb);
            }
            if (OnPreviewTabInitialize != null)
            {
                OnPreviewTabInitialize(tab, settings, gdb);
            }
            tab.Initialize(settings);
            return(tab);
        }