Ejemplo n.º 1
0
        /// <summary>
        /// Returns the list of resource types displayed in the specified tab, or null if
        /// all resources are displayed.
        /// </summary>
        public string[] GetTabResourceTypes(string tabId)
        {
            int tabIndex = FindTabByID(tabId);

            if (tabIndex < 0)
            {
                throw new ArgumentException("Invalid tab ID " + tabId, "tabId");
            }

            TabFilter tabFilter = (TabFilter)_tabBar.GetTabTag(tabIndex);

            return(tabFilter.GetResourceTypes());
        }
Ejemplo n.º 2
0
        /// <summary>
        /// The main function for switching resource type tabs and workspaces.
        /// </summary>
        private void UpdateSelectedTab()
        {
            if (Core.State == CoreState.ShuttingDown)
            {
                return;
            }

            using (new WaitCursorDisplayer())
            {
                if (TabChanging != null)
                {
                    TabChanging(this, EventArgs.Empty);
                }

                _resourceBrowser.UnhookResourceList(null);

                Trace.WriteLine("--- Start tab switch ---");
                if (_curTabState != null)
                {
                    _curTabState.SidebarState = _querySidebar.CurrentState;
                }

                TabFilter tabFilter = (TabFilter)_tabBar.SelectedTabTag;

                string   tabText          = _tabBar.GetTabText(_tabBar.SelectedIndex);
                string   tabName          = (_tabBar.SelectedIndex > 0) ? tabText : null;
                string[] tabResourceTypes = tabFilter.GetResourceTypes();
                string   tabId            = tabFilter.Id;

                Trace.WriteLine("Setting default resource browser columns");
                _resourceBrowser.SetCaptionPrefix(tabName, false);
                _resourceBrowser.DefaultColumns = (tabResourceTypes == null)
                                        ? null
                                        : (Core.DisplayColumnManager as DisplayColumnManager).GetColumnsForTypes(tabResourceTypes);

                Trace.WriteLine("Initializing tab state");
                bool newState = false;
                WorkspaceTabState tabStateKey = GetCurStateKey();
                TabState          state       = (TabState)_tabStates[tabStateKey];
                if (state == null)
                {
                    newState = true;
                    state    = new TabState();
                    _tabStates[tabStateKey] = state;
                }

                //_resourceBrowser.ResourceListView.Filters.BeginUpdate();

                Trace.WriteLine("Updating ResourceListView filters");

                _curTabFilter = tabFilter;

                UpdateResourceBrowserFilterList();
                _resourceBrowser.UpdatePerTabSettings();

                Trace.WriteLine("Showing panes in QuerySidebar");
                _querySidebar.ShowPanesForTab(tabId, state.SidebarState);

                ResourceTreePaneBase defaultViewPane = _querySidebar.DefaultViewPane as ResourceTreePaneBase;
                if (defaultViewPane != null)
                {
                    defaultViewPane.UnreadState = _curUnreadState;
                }
                JetResourceTreePane structurePane = _querySidebar.ResourceStructurePane as JetResourceTreePane;
                if (structurePane != null)
                {
                    structurePane.UnreadState = _curUnreadState;
                }

                Trace.WriteLine("Firing TabSwitch handler");
                if (TabChanged != null)
                {
                    TabChanged(this, EventArgs.Empty);
                }

                if (newState)
                {
                    Trace.WriteLine("Showing columns for resource list");
                    if (_resourceBrowser.DefaultColumns != null)
                    {
                        _resourceBrowser.ShowListViewColumns(_resourceBrowser.DefaultColumns);
                    }
                    else
                    {
                        _resourceBrowser.ShowColumnsForResourceList();
                    }

                    Trace.WriteLine("Selecting default view");
//  Debug
                    try
                    {
                        SelectDefaultView(tabId);
                    }
                    catch (NullReferenceException)
                    {
                        throw new ApplicationException("Illegal name of the View [" + tabId + "] while switching to [" + tabText + "]");
                    }
//  endDebug
                }
                else
                {
                    Trace.WriteLine("Selecting default view");
                    if (state.SidebarState != null &&
                        state.SidebarState.SelectedResource == null)
                    {
//  Debug
                        try
                        {
                            SelectDefaultView(tabId);
                        }
                        catch (NullReferenceException)
                        {
                            throw new ApplicationException("Illegal name of the View [" + tabId + "] while switching to [" + tabText + "]");
                        }
//  endDebug
                    }
                }
                Trace.WriteLine("Ending filters update");
                //_resourceBrowser.ResourceListView.Filters.EndUpdate();
                _curTabState = state;
                Trace.WriteLine("--- Done tab switch ---");
            }
        }