コード例 #1
0
        /// <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;
            }
        }
コード例 #2
0
        /// <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;
        }
コード例 #3
0
        /// <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
            }
        }