/// <summary> /// Add conditional formatting summary view to list of views if one doesn't exist & query contains conditional formatting /// </summary> /// <param name="q"></param> public static void AddCfViewAsNeeded(Query query) { ResultsPages pages; ResultsPage page; ResultsViewProps view; CfSummaryView cfView; if (!query.ContainsSelectedCondFormatting) { return; } pages = query.Root.ResultsPages; if (pages == null || pages.Pages == null) { return; } for (int ci = 0; ci < pages.Pages.Count; ci++) { view = pages[ci].FirstView; if (view == null) { continue; } if (view.ViewType == ResultsViewType.SecondaryQuery) { return; } } ResultsPages.AddNewPageAndView(query, ResultsViewType.SecondaryQuery, null, out page, out view); cfView = page.FirstView as CfSummaryView; return; }
/// <summary> /// Add new page /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void NewPageMenuItem_Click(object sender, EventArgs e) { ResultsPage page = ResultsPages.AddNewPage(BaseQuery); AddResultsPageTabPage(page); // add tab for page ConfigureResultsPage(page); // render the empty page return; }
/// <summary> /// Remove a subquery from its parent and optionally any associated views /// </summary> /// <param name="sq"></param> /// <param name="removeResultsViews"></param> /// <param name="removeResultsPagesIfEmpty"></param> public static void RemoveSubQuery( Query sq, bool removeResultsViews, bool removeResultsPagesIfEmpty) { if (sq == null) { throw new Exception("Null subquery"); } Query pq = sq.Parent; if (pq == null || !pq.Subqueries.Contains(sq)) { throw new Exception("Subquery not contained in query"); } sq.Parent = null; pq.Subqueries.Remove(sq); // remove subquery from query if (!removeResultsViews) { return; } ResultsPages rPages = pq.ResultsPages; // overall results pages sq.ResultsPages = null; List <ResultsViewProps> rViews = sq.GetResultsViews(); if (rViews != null) // any views for subquery? { for (int vi = 0; vi < rViews.Count; vi++) { // remove any views from overall query ResultsPages ResultsViewProps rv = rViews[vi]; if (rv == null || rv.ResultsPage == null) { continue; } ResultsPage rp = rv.ResultsPage; if (rp == null || !rp.Views.Contains(rv)) { continue; } rp.Views.Remove(rv); if (removeResultsPagesIfEmpty && rp.Views.Count == 0 && // remove page if empty & requested rPages != null && rPages.Pages != null && rPages.Pages.Contains(rp)) { rPages.Remove(rp); } } } }
/// <summary> /// Add a new empty results page /// </summary> void AddPage() { DialogResult = DialogResult.OK; // close the selection menu Hide(); SessionManager.ActivateShell(); ResultsPage page = ResultsPages.AddNewPage(Qm.Query); Qrc.AddResultsPageTabPage(page); // add tab for page Qrc.ConfigureResultsPage(page); // render the empty page return; }
/// <summary> /// SetCurrentPageTabTitleAndImage /// </summary> internal void SetCurrentPageTabTitleAndImage() { ResultsPages pages = BaseQuery.ResultsPages; if (pages == null || pages.Pages.Count < Tabs.SelectedTabPageIndex) { return; } ResultsPage page = pages[Tabs.SelectedTabPageIndex]; SetCurrentTabTitle(page.ActiveTitle); SetCurrentTabImage(page.PageHeaderImage); return; }
/// <summary> /// Remove specified tab and page /// </summary> /// <param name="qti"></param> public void RemoveTabAndPage(int qti) { int newTab = qti - 1; // carefully remove the tab page if (newTab < 0) { newTab = qti + 1; } Tabs.SelectedTabPageIndex = newTab; // move to another tab Tabs.TabPages.RemoveAt(qti); // remove this one ResultsPages pages = RootQuery.ResultsPages; pages.RemoveAt(qti); // remove the page from the query (must do 2nd) return; }
/// <summary> /// Configure the results page, creating first if necessary /// </summary> /// <param name="ti"></param> internal void ConfigureResultsPage(int pi) { Query q = RootQuery; if (q == null) { return; } if (q.PresearchDerivedQuery != null) // get any derived browse query { q = q.PresearchDerivedQuery; } QueryManager qm = q.QueryManager as QueryManager; if (qm == null) { return; } if (pi < 0) { return; } SS.I.UISetupLevel++; ResultsPages pages = RootQuery.ResultsPages; // get any additional pages for query ResultsPage page = pages[pi]; SessionManager.Instance.StatusBarManager.ZoomControlVisible = false; // hide zoom controls initially ConfigureResultsPage(page); Tabs.ClosePageButtonShowMode = ClosePageButtonShowMode.InActiveTabPageHeader; // show close button in active tab q.InitialBrowsePage = pi; // set current tab page SS.I.UISetupLevel--; return; }
/// <summary> /// Tentatively add a new view of the specified type to the current page /// </summary> /// <param name="viewType"></param> /// <param name="query"></param> /// <param name="qrc"></param> /// <returns></returns> private static ResultsViewProps AddTentativeNewView( ResultsViewModel rvm) { ResultsPage rp; DialogResult dr; int intVal, max; ResultsViewType viewType = rvm.ViewType; string viewSubtype = rvm.ViewSubtype; string viewTitle = rvm.Title; Query query = rvm.Query; QueryResultsControl qrc = rvm.QueryResultsControl as QueryResultsControl; LastAddedViewType = viewType; int pi = qrc.CurrentPageIndex; if (pi < 0 || // add a page if no pages query.Root.ResultsPages.Pages[pi].Views.Count > 0) // or (for now) already a view on the current page { rp = ResultsPages.AddNewPage(query); pi = query.Root.ResultsPages.Pages.Count - 1; qrc.AddResultsPageTabPage(rp); } ResultsPage page = query.ResultsPages[pi]; ResultsViewProps view = page.AddNewView(rvm); if (view == null) { throw new Exception("Failed to add new view: " + viewType); } //view.CustomViewTypeImageName = rvm.CustomViewTypeImageName; // (should already be set) if (Lex.IsDefined(viewTitle) && Lex.Ne(viewTitle, viewType.ToString())) { view.Title = page.AddSequentialSuffixToTitle(viewTitle, query.ResultsPages); // set custom title (sequentially-numbered) if defined } qrc.SetCurrentPageTabTitleAndImage(); dr = view.ShowInitialViewSetupDialog(); if (dr != DialogResult.OK) { RemoveTentativeView(view, qrc); return(null); // not added } qrc.ConfigureResultsPage(page); // render the default view in the current page dr = view.ShowInitialViewPropertiesDialog(); if (dr == DialogResult.OK) { //view.ConfigureRenderingControl(); // be sure it's configured (not a good idea, adds overhead) qrc.SetCurrentPageTabTitleAndImage(); // update tab title & image accordingly return(view); } else // cancelled, remove view { RemoveTentativeView(view, qrc); return(null); // not added } }