/// <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; } }
public void SetupQueryResultsControlForResultsDisplay( QueryManager qm) { Progress.Hide(); // hide any progress so popup gets focus //string title = qm.Query.UserObject.Name; //PopupResults pr = new PopupResults(); //UIMisc.PositionPopupForm(pr); //pr.Text = title; QueryResultsControl qrc = QueryResultsControl; qm.LinkMember(qrc); Query q = qm.Query; if (SetupQueryResultsControlMethod != null) { SetupQueryResultsControlMethod(); // let parent know that we're setting up the QueryResultsControl } qrc.BuildResultsPagesTabs(q); if (q.ResultsPages.Pages.Count <= 1) // hide tabs if only one { qrc.ResultsLabel.Visible = qrc.Tabs.Visible = false; } //qrc.ConfigureResultsPage(0); // render the first page qrc.SelectPage(q.InitialBrowsePage); // show the initial browse page }
/// <summary> /// Allocate a new MoleculeGridPageControl /// and link into any associated QueryResultsContol /// </summary> /// <param name="qm"></param> /// <param name="container"></param> /// <returns></returns> public static MoleculeGridPageControl AllocateNewMoleculeGridPageControl( QueryManager qm, Control container) { QueryResultsControl qrc = null; PopupGrid pug = null; MoleculeGridPageControl page; MoleculeGridPanel panel; MoleculeGridControl grid; Query q = qm.Query; ResultsFormat rf = qm.ResultsFormat; page = new MoleculeGridPageControl(); // Create a new, clean page, panel and grids panel = page.MoleculeGridPanel; grid = panel.SelectBaseGridViewGrid(qm); qm.LinkMember(grid); // link grid into qm grid.ShowCheckMarkCol = q.ShowGridCheckBoxes; if (container is QueryResultsControl && rf.NotPopupOutputFormContext) // normal query results { qrc = container as QueryResultsControl; qrc.RemoveExistingControlsFromResultsPageControlContainer(); // properly dispose of any existing DevExpress controls qrc.MoleculeGridPageControl = page; // link query results to this page qrc.ResultsPageControlContainer.Controls.Add(page); page.Dock = DockStyle.Fill; } return(page); }
public static bool TryGetQrcAndQm( Control qrcContainingCtl, out QueryResultsControl qrc, out QueryManager qm) { ContainerControl cc; qrc = null; qm = null; if (!WindowsHelper.FindContainerControl(qrcContainingCtl, typeof(QueryResultsControl), out cc)) // find the QRC that we are contained in { return(false); } qrc = cc as QueryResultsControl; if (qrc == null) { return(false); } qm = qrc?.BaseQuery?.QueryManager as QueryManager; if (qm == null) { return(false); } return(true); }
/// <summary> /// Filter type selected, may be the same or different /// </summary> /// <param name="ft"></param> void FilterTypeSelected(FilterType ft) { ColumnInfo ci = Qm.ResultsFormat.GetColumnInfo(ActiveQueryColumn); QueryResultsControl.GetQrcThatContainsControl(this).ChangeFilterType(ci, ft); Render(); }
/// <summary> /// Get the QueryResultsControl associated with the view rendering control /// </summary> /// <returns></returns> QueryResultsControl GetQrc() { if (Qm != null && Qm.QueryResultsControl != null) { return(Qm.QueryResultsControl); } return(QueryResultsControl.GetQrcThatContainsControl(RenderingControl)); }
/// <summary> /// Free resources linked to this instance /// </summary> public void Dispose() { try { DisposeOfControls(); if (Query != null) { Query.FreeControlReferences(); // just free control references } if (MoleculeGrid != null) { MoleculeGrid.Dispose(); } if (QueryEngine != null) { QueryEngine.Dispose(); } if (DataTableManager != null) { DataTableManager.Dispose(); } if (ResultsFormat != null) { ResultsFormat.QueryManager = null; } if (ResultsFormatter != null) { ResultsFormatter.QueryManager = null; } if (StatusBarManager != null) { StatusBarManager.QueryManager = null; } if (QueryExec != null) { QueryExec.QueryManager = null; } QueryResultsControl = null; Query = null; DataTableManager = null; DataTable = null; ResultsFormat = null; ResultsFormatter = null; StatusBarManager = null; MoleculeGrid = null; QueryExec = null; QueryEngine = null; } catch (Exception ex) { DebugLog.Message(DebugLog.FormatExceptionMessage(ex)); } }
/// <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> /// Display filter string & associated controls /// </summary> /// <param name="filterString"></param> public void DisplayFilterString(bool show) { if (Qrc == null || Qrc.CrvQm == null) { return; } try { Query q = Qrc.CrvQm.Query; string filterString = q.BuildSecondaryFilterString(); if (!String.IsNullOrEmpty(filterString)) { filterString = "Filters: " + filterString; } QueryResultsControl rvc = Qrc; BarItemVisibility biv; if (String.IsNullOrEmpty(filterString) || !show) { biv = BarItemVisibility.Never; } else { biv = BarItemVisibility.Always; } if (ClearFiltersCtl != null) // add handler for button that clears filters { ClearFiltersCtl.Visibility = biv; } if (FiltersEnabledCtl != null) { FiltersEnabledCtl.Visibility = biv; FiltersEnabledCtl.EditValue = Qrc.CrvQm.DataTableManager.FiltersEnabled; } if (FilterStringCtl != null) { FilterStringCtl.Caption = filterString; FilterStringCtl.Visibility = biv; } } catch (Exception ex) { LastException = ex; } return; }
static void RemoveTentativeView( ResultsViewProps view, QueryResultsControl qrc) { ResultsPage page = view.ResultsPage; page.Views.Remove(view); int qti = qrc.Tabs.SelectedTabPageIndex; qrc.RemoveTabAndPage(qti); }
/// <summary> /// Gets the QueryManager for the current view for the QRC that contains the specified control /// </summary> /// <param name="ctl"></param> /// <returns></returns> public static QueryManager GetCurrentViewQm(Control ctl) { QueryResultsControl qrc = GetQrcThatContainsControl(ctl); if (qrc != null) { return(qrc.CrvQm); } else { return(null); } }
/// <summary> /// Show as a menu /// </summary> /// <param name="qrc"></param> /// <param name="qm"></param> /// <param name="location"></param> /// <returns></returns> public static void ShowPopupMenu( QueryResultsControl qrc, QueryManager qm, Point location) { ViewTypeSelectionMenu vtsd = new ViewTypeSelectionMenu(); vtsd.Qrc = qrc; vtsd.Qm = qm; vtsd.Location = location; // position the form vtsd.Size = new Size(2, 2); // make smaller so hidden behind menu vtsd.Show(SessionManager.ActiveForm); return; }
private void RemoveFilterMenuItem_Click(object sender, EventArgs e) { ActiveQueryColumn.SecondaryFilterType = FilterType.Unknown; ActiveQueryColumn.SecondaryCriteria = ActiveQueryColumn.SecondaryCriteriaDisplay = ""; if (QueryResultsControl.GetQrcThatContainsControl(this) != null) { ColumnInfo colInfo = ResultsFormat.GetColumnInfo(Qm, ActiveQueryColumn); QueryResultsControl.GetQrcThatContainsControl(this).UpdateFiltering(colInfo); } FilterBasicCriteriaControl.SyncBaseQuerySecondaryCriteria(ActiveQueryColumn); // sync any base query Render(); }
/// <summary> /// Show the specified query in a new PopupResults form /// </summary> /// <param name="qm"></param> /// <param name="html"></param> /// <param name="title"></param> public static void ShowHtml( // navigate browser to a document QueryManager qm, string html, string title) { string uri; int pi; Progress.Hide(); // hide any progress so popup gets focus uri = ClientDirs.TempDir + @"\PopupResults" + "1" + ".htm"; StreamWriter sw = new StreamWriter(uri); sw.Write(html); sw.Close(); PopupResults pr = new PopupResults(); UIMisc.PositionPopupForm(pr); pr.Text = title; QueryResultsControl qrc = pr.QueryResultsControl; qm.LinkMember(qrc); Query q = qm.Query; qrc.BuildResultsPagesTabs(q); for (pi = 0; pi < q.ResultsPages.Pages.Count; pi++) { ResultsPage page = q.ResultsPages.Pages[pi]; for (int vi = 0; vi < page.Views.Count; vi++) { ResultsViewProps view = page.Views[vi]; if (view.ViewType == ResultsViewType.HtmlTable) { view.Title = title; view.ContentUri = uri; // plug in file name for uri } } } pr.Show(); qrc.ConfigureResultsPage(0); // render the first page UIMisc.BringFormToFront(pr); return; }
/// <summary> /// Process input /// </summary> void ProcessInput() { CfSummaryView view = null; // todo... QueryResultsControl qrc = QueryResultsControl.GetQrcThatContainsControl(view.RenderingControl); RootQm = Qrc.CrvQm; Query rootQuery = RootQm.Query; Query subQuery = BuildQuery(); RootQm.Query.Subqueries.Add(subQuery); // add subquery to Parent subQuery.Parent = rootQuery; // link subquery to parent query view.BaseQuery = subQuery; // link view to subquery }
/// <summary> /// Show popup results in a results window /// </summary> /// <param name="qm"></param> /// <param name="title"></param> public static void Show( QueryManager qm) { string uri; int pi, posDelta = 20; Progress.Hide(); // hide any progress so popup gets focus string title = qm.Query.UserObject.Name; PopupResults pr = new PopupResults(); UIMisc.PositionPopupForm(pr); pr.Text = title; QueryResultsControl qrc = pr.QueryResultsControl; qm.LinkMember(qrc); Query q = qm.Query; qrc.BuildResultsPagesTabs(q); if (q.ResultsPages.Pages.Count <= 1) // hide tabs if only one { qrc.ResultsLabel.Visible = qrc.Tabs.Visible = false; } //qrc.ToolPanel.Visible = false; // hide tools for now (e.g. Edit Query) //if (q.ResultsPages.Pages.Count <= 1) // hide tabs if only one //{ // PanelControl pc = qrc.ResultsPagePanelContainer; // int delta = pc.Top; // pc.Top = 0; // pc.Height += delta; //} pr.Show(); //qrc.ConfigureResultsPage(0); // render the first page qrc.SelectPage(q.InitialBrowsePage); // show the initial browse page UIMisc.BringFormToFront(pr); return; }
/// <summary> /// Get any CustomExitingQueryResultsCallback associated with the supplied control /// </summary> /// <param name="qrcContainingCtl"></param> /// <returns></returns> public static ExitingQueryResultsDelegate GetCustomExitingQueryResultsCallback( Control qrcContainingCtl, out QueryResultsControl qrc, bool clearValueAfterGetting = false) { QueryManager qm; if (!TryGetQrcAndQm(qrcContainingCtl, out qrc, out qm)) { return(null); } ExitingQueryResultsDelegate callback = qm?.ResultsFormat?.CustomExitingQueryResultsCallback; // get any callback ref if (clearValueAfterGetting && callback != null) // clear call back so not called agin { qm.ResultsFormat.CustomExitingQueryResultsCallback = null; } return(callback); }
/// <summary> /// Show the dialog and create and display the chart /// </summary> /// <param name="chartEx"></param> /// <param name="tabName"></param> /// <returns></returns> public static DialogResult ShowDialog( ResultsViewProps view, string tabName) { DialogResult dr; if (Instance == null) { Instance = new AssayResultsHeatMapDialog(); } AssayResultsHeatMapDialog i = Instance; i.View = view as AssayResultsHeatMapView; i.Qrc = QueryResultsControl.GetQrcThatContainsControl(view.RenderingControl); if (!view.IsDefined) // initialize first time { i.Initializing = true; dr = i.InitializeChart(); if (dr == DialogResult.Cancel) { return(dr); } } else { i.Initializing = false; } i.Qm1 = view.BaseQuery.Parent.QueryManager as QueryManager; // root Qm i.Qm2 = view.BaseQuery.QueryManager as QueryManager; // Qm for summarized data i.SetupForm(); dr = i.ShowDialog(SessionManager.ActiveForm); return(dr); }
/// <summary> /// Add a new filter /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void AddFilterButton_Click(object sender, EventArgs e) { QueryColumn qc = null; FieldSelectorControl fieldSelector = new FieldSelectorControl(); Point p = new Point(AddFilterButton.Left, AddFilterButton.Bottom); p = this.PointToScreen(p); SelectColumnOptions flags = new SelectColumnOptions(); flags.SearchableOnly = true; flags.FirstTableKeyOnly = true; flags.SelectFromQueryOnly = true; DialogResult dr = fieldSelector.SelectColumnFromQuery(Qm.Query, null, flags, p.X, p.Y, out qc); if (dr != DialogResult.OK) { return; } if (qc.SecondaryFilterType != FilterType.Unknown) { } // already have a filter if (qc.MetaColumn.DataType == MetaColumnType.Structure) { qc.SecondaryFilterType = FilterType.StructureSearch; } else { ColumnStatistics stats = null; if (Qm != null && Qm.DataTableManager != null) { stats = Qm.DataTableManager.GetStats(qc); } if (stats != null && stats.DistinctValueList.Count <= 10) { qc.SecondaryFilterType = FilterType.CheckBoxList; } else if (qc.MetaColumn.IsNumeric) { qc.SecondaryFilterType = FilterType.RangeSlider; } else { qc.SecondaryFilterType = FilterType.BasicCriteria; } } ActiveQueryColumn = qc; if (!Qm.DataTableManager.FiltersEnabled) // be sure filters are enabled & view also { Qm.DataTableManager.FiltersEnabled = true; Qm.DataTableManager.ApplyFilters(); Qm.DataTableManager.UpdateFilterState(); QueryResultsControl.GetQrcThatContainsControl(this).UpdateFilteredViews(); } Render(); }
/// <summary> /// Configure the results page control for the current page /// </summary> /// <param name="qrc"></param> /// <param name="page"></param> /// <returns></returns> static internal ResultsPageControl Configure( QueryResultsControl qrc, ResultsPage page) { qrc.RemoveExistingControlsFromResultsPageControlContainer(); // properly dispose of any existing DevExpress controls ResultsPageControl rpc = new ResultsPageControl(); // page control with common tools and display area qrc.ResultsPageControl = rpc; // link the QueryResultsControl to rpc rpc.ResultsPage = page; // set the page that the rpc references PanelControl commonTools = rpc.Tools; // the array of common tools ResultsPagePanel rpp = rpc.ResultsPagePanel; // panel containing the display, filters and DoD panels page.ResultsPagePanel = rpp; //PanelControl rppc = qrc.ResultsPageControlContainer; // panel that contains the dock panels and rendering controls for the associated page views (1 per dock panel) //QueryResultsControl.DisposeOfChildMobiusControls(rppc); // properly dispose of any existing DevExpress controls //rppc.Controls.Clear(); // clear the view while building PanelControl rppc = qrc.ResultsPageControlContainer; // panel that contains the dock panels and rendering controls for the associated page views (1 per dock panel) rpp.Location = new Point(0, 0); // make the rpp the same size as rppc before adding it to avoid a resize rpp.Size = rppc.Size; rpp.Visible = false; // don't make visible until later rpp.Parent = rppc; // associate to parent before added to parent ViewsPanel viewsPanel = rpp.ViewsPanel; // Views DockPanels and their contained rendering controls go in here Query q = qrc.CrvQuery; // be sure we have a base QM if (q != null) { // be sure the QueryManager is complete QueryManager qm = q.QueryManager as QueryManager; if (qm == null) // allocate query manager if needed { qm = new QueryManager(); q.QueryManager = qm; qm.LinkMember(q); } qm.CompleteInitialization(OutputDest.WinForms); // be sure QueryManager is complete qm.LinkMember(qrc); // be sure qrc is linked to qm } ////rpp.SuspendLayout(); ////rppc.Controls.Add(rpp); // add the results page panel to the page container panel (needed to look up control tree to get Qrc) if (page.ShowFilterPanel) { rpp.RenderFilterPanel(); rpp.FiltersDockPanel.Visibility = DockVisibility.Visible; } else { rpp.FiltersDockPanel.Visibility = DockVisibility.Hidden; } if (page.ShowDetailsOnDemand) { rpp.RenderDetailsOnDemandPanel(); rpp.DodDockPanel.Visibility = DockVisibility.Visible; } else { rpp.DodDockPanel.Visibility = DockVisibility.Hidden; } bool showBeforeLayout = (page.Views.Count == 1 && page.Views[0].ViewType == ResultsViewType.Spotfire); if (showBeforeLayout) { rpp.Visible = true; rppc.Controls.Add(rpp); // add the results page panel to the page container panel rpp.Dock = DockStyle.Fill; rpp.ViewsPanel.LayoutAndRenderViews(); // add the data views } else // layout before showing { rpp.ViewsPanel.LayoutAndRenderViews(); // add the data views rpp.Visible = true; rppc.Controls.Add(rpp); // add the results page panel to the page container panel } ////rpp.ResumeLayout(); rpp.ViewsPanel.FocusActiveView(); return(rpc); }
/// <summary> /// Link in QueryManager member /// </summary> /// <param name="qrc"></param> public void LinkMember(QueryResultsControl qrc) { QueryResultsControl = qrc; //qrc.QueryManager = this; (the Qrc Qm is now associated with the current view for the Qrc, i.e. there are multiple QMs for a Qrc }
/// <summary> /// Format grid and show the data /// </summary> /// <param name="qm"></param> /// <param name="container">Either a QueryResultsControl or a PopupGrid</param> public static void ConfigureAndShow( QueryManager qm, Control container) { QueryResultsControl qrc = null; PopupGrid pug = null; MoleculeGridPageControl page; MoleculeGridPanel panel; MoleculeGridControl grid; Query q = qm.Query; ResultsFormat rf = qm.ResultsFormat; //qm.QueryResultsControl = null; page = new MoleculeGridPageControl(); // Create a new, clean page, panel and grids panel = page.MoleculeGridPanel; grid = panel.SelectBaseGridViewGrid(qm); qm.LinkMember(grid); // link grid into qm grid.ShowCheckMarkCol = q.ShowGridCheckBoxes; DataTableMx dt = qm.DataTable; // save ref to data table grid.DataSource = null; // clear source for header build qm.DataTable = dt; // restore data table grid.FormatGridHeaders(qm.ResultsFormat); // qm.MoleculeGrid.V.Columns.Count should be set for proper cols if (container is QueryResultsControl && rf.NotPopupOutputFormContext) // normal query results { qrc = container as QueryResultsControl; qrc.RemoveExistingControlsFromResultsPageControlContainer(); // properly dispose of any existing DevExpress controls qrc.MoleculeGridPageControl = page; // link query results to this page qrc.ResultsPageControlContainer.Controls.Add(page); page.Dock = DockStyle.Fill; //qm.QueryResultsControl = qrc; // link view set into query manager (used for filtering) if (q.Parent == null) // switch display to browse mode if root query { QbUtil.SetMode(QueryMode.Browse, q); } if (rf.Query.LogicType == QueryLogicType.And) // log grid query by logic type { UsageDao.LogEvent("QueryGridAnd", ""); } else if (rf.Query.LogicType == QueryLogicType.Or) { UsageDao.LogEvent("QueryGridOr", ""); } else if (rf.Query.LogicType == QueryLogicType.Complex) { UsageDao.LogEvent("QueryGridComplex", ""); } } else if (container is PopupGrid || rf.PopupOutputFormContext) // popup results { if (container is PopupGrid) { pug = container as PopupGrid; } else // create a popup { pug = new PopupGrid(qm); pug.Text = q.UserObject.Name; } if (pug.Controls.ContainsKey(panel.Name)) // remove any existing panel control { pug.Controls.RemoveByKey(panel.Name); } pug.Controls.Add(panel); pug.MoleculeGridPanel = panel; // restore direct link as well grid.ScaleView(q.ViewScale); UIMisc.PositionPopupForm(pug); pug.Text = q.UserObject.Name; pug.Show(); } else { throw new Exception("Invalid container type: " + container.GetType()); } // Set the DataSource to the real DataTable panel.SetDataSource(qm, dt); return; }
/// <summary> /// Run the query /// </summary> /// <param name="browseExistingResults">If true browse existing results</param> /// <returns></returns> public string RunQuery3( ResultsFormat rf, bool saveHitlist, bool browseExistingResults) { Query modifiedQuery; QueryTable qt; QueryColumn qc; ResultsTable rt; ResultsField rfld; MetaTable mt; MetaColumn mc; string txt, msg; DialogResult dr; bool success; CellGraphic cg; Lex lex = new Lex(); string tempfile, tok, command, unrecognizedCommand, response; int ti, gi, rc, i1, i2; // Begin execution if (rf == null) { throw new Exception("QueryExec.Run - Null ResultsFormat"); } if (ResultsFormatter == null) { throw new Exception("QueryExec.Run - Null ResultsFormatter"); } if (rf.Segments == null) { throw new Exception("QueryExec.Run - Null ResultsFormat.Segments"); } if (Query == null) { throw new Exception("QueryExec.Run - Null Rf.Query"); } if (Query.Tables == null || Query.Tables.Count <= 0) { throw new QueryException("QueryExec.Run - No Query Tables"); } QueryManager qm = QueryManager; ReturnMsg = ""; //bool useExistingQueryEngine = Rf.ParentQe != null; //bool useExistingDataTable = Query.BrowseExistingResultsWhenOpened && Query.SerializeResults && // qm.DataTable != null && qm.DataTable.Rows.Count > 0; try { //if (Math.Sqrt(4) == 2) throw new Exception("test"); // debug if (!browseExistingResults) // normal open of search { Progress.Show("Analyzing query..."); // put up a status message to the user as soon as possible to let them know something is happening... dr = ValidateQuery(Query); if (dr == DialogResult.Cancel) { return(""); } WriteCurrentListToServerIfNeeded(Query); if (rf.OutputDestination == OutputDest.WinForms) // update access stats if grid { UpdateTableUsageStatistics(Query); } Query.ResultsDataTable = null; // be sure to get new results qm = BuildQueryManager(Query, rf); Query.ResetViewStates(); // reset state of views for proper operation if (Rf.ParentQe == null) // open search unless using existing query engine { if (!ExecuteSearch(saveHitlist)) // returns false if cancelled by user { Progress.Hide(); return(""); } } if ((ResultsKeys == null || ResultsKeys.Count == 0) && // nothing for search !Query.Preview && !MqlUtil.SingleStepExecution(Query) && qm.DataTable.Rows.Count == 0 && Query.RetrievesDataFromQueryEngine) { // if (!Rf.PopupDisplay) Progress.Hide(); if (qm.StatusBarManager != null) { qm.StatusBarManager.DisplayStatusMessage(""); } // if (QueryEngine.Cancelled) return ""; // cancelled by user msg = "No data have been found that matches your query."; if (ResultsFormat.PopupOutputFormContext && !ResultsFormat.SuppressNoDataMessage) { MessageBoxMx.Show(msg, "Search Result", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return("Command EditQuery"); // return to edit query menu } else { return(msg); } } //if (ResultsFormat.PopupDisplay) // SessionManager.DisplayStatusMessage("Retrieving data..."); //else Progress.Show("Retrieving data...", UmlautMobius.Value, true, "Cancelling Retrieval..."); //Progress.Show("Retrieving data...", UmlautMobius.String, true, "Cancelling Retrieval..."); Progress.Hide(); // hide progress - "Retrieving data..." message now appears as bottom line of grid if (ResultsFormat.Grid) { if (ResultsFormat.SessionOutputFormContext) // if normal main session form grid display, set browse mode & view state { Query.ResetViewStates(); // reset view state for all views QbUtil.SetMode(QueryMode.Browse, Query); if (ResultsFormat.Query.LogicType == QueryLogicType.And) // log grid query by logic type { UsageDao.LogEvent("QueryGridAnd", ""); } else if (ResultsFormat.Query.LogicType == QueryLogicType.Or) { UsageDao.LogEvent("QueryGridOr", ""); } else if (ResultsFormat.Query.LogicType == QueryLogicType.Complex) { UsageDao.LogEvent("QueryGridComplex", ""); } } else if (ResultsFormat.PopupOutputFormContext) // create popup window & configure { PopupResults.Show(qm); //MoleculeGridPanel.ConfigureAndShow(qm, null); } else if (ResultsFormat.ToolOutputFormContext) { ContainerControl cc; QueryResultsControl qrc = ResultsFormat.OutputContainerControl as QueryResultsControl; AssertMx.IsTrue(qrc != null, "ResultsFormat.OutputContainerControl must be a QueryResultsControl"); if (!WindowsHelper.FindContainerControl(qrc, typeof(ToolResultsContainer), out cc)) { throw new Exception("ToolResultsContainer not found"); } ToolResultsContainer trc = cc as ToolResultsContainer; trc.SetupQueryResultsControlForResultsDisplay(qm); } else { throw new Exception("Invalid OutputformContext: " + ResultsFormat.OutputFormContext); } } } else // reentering display switch to browse tab { QbUtil.SetMode(QueryMode.Browse, Query); } response = ResultsFormatter.BeginFormatting(browseExistingResults); // format the data if (ResultsFormat.SessionOutputFormContext) // normal display { if (MqlUtil.SingleStepExecution(Query)) { // be sure hit count display is up to date if (ResultsKeys != null) { if (qm.StatusBarManager != null) { qm.StatusBarManager.DisplayCurrentCount(); } } } if (saveHitlist) { CidList hitList = new CidList(ResultsKeys); rc = CidListCommand.WriteCurrentList(hitList); SessionManager.DisplayCurrentCount(); } } return(response); } // end of surrounding try catch (Exception ex) { Progress.Hide(); if (ex is UserQueryException) // exception that can occur from user error { throw new UserQueryException(ex.Message, ex); } else { msg = DebugLog.FormatExceptionMessage(ex); if (!Lex.Contains(msg, "QueryLogged:")) // exception & query { QueryEngine.LogExceptionAndSerializedQuery(msg, Query); } else { ServicesLog.Message(msg); // just log exception } throw new Exception(ex.Message, ex); // pass it up } } }
/// <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 } }