/// <summary> /// Handle custom buttons on tabbed view panel /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void TabDockPanel_CustomButtonClick(object sender, ButtonEventArgs e) { DockPanel dp, pp; dp = sender as DockPanel; CustomHeaderButton chb = e.Button as CustomHeaderButton; if (dp == null || chb == null) { return; } string buttonName = (chb.Tag != null) ? chb.Tag.ToString() : ""; if (buttonName == "Restore") // convert from tabbed form back to previous form { ResultsPage.TabbedLayout = false; // no longer in tabbed layout LayoutAndRenderViews(); // restore previous layout QueryResultsControl qrc = QueryResultsControl.GetQrcThatContainsControl(this); if (qrc != null) { qrc.SetCurrentPageTabTitleAndImage(); // update the page tab } } else if (buttonName == "Close") { ViewDockPanel_CustomButtonClick(dp, e); } else { return; } }
/// <summary> /// Layout and render the page in the specified layout format /// </summary> /// <param name="layout"></param> internal void CreateStandardLayoutAndRenderViews( ViewLayout layout) { XtraPanel viewPanel; // panel that contains current view control and is contained in a docking panel or directly in the views panel if single view on page ResultsPage page = ResultsPage; if (page == null) { return; } List <ResultsViewProps> views = page.Views; if (views.Count == 0) // just have a single blank panel if no views { RenderEmptyPage(); return; } UIMisc.EnteringSetup(); //Visible = false; SuspendLayout(); // suspend layout while building if (layout == ViewLayout.RowsAndCols) { CreateRowsAndColsLayoutAndRenderViews(); } else // other common type view { CreateCommonLayoutAndRenderViews(layout); } DockPanel dp = DockManager.ActivePanel; // get the active dock panel associated with current view RenderViews(); ResumeLayout(); //Visible = true; SaveLayout(); FocusActiveView(); QueryResultsControl qrc = QueryResultsControl.GetQrcThatContainsControl(this); if (qrc != null) { qrc.SetCurrentPageTabTitleAndImage(); // update the page tab } UIMisc.LeavingSetup(); 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 } }