From 16152b8a679d91333a7d80c3f944920e6e958076 Mon Sep 17 00:00:00 2001 From: serge-rider Date: Sun, 2 Jun 2019 23:37:32 +0300 Subject: [PATCH] Execution plan tab name fix (show plan number) --- .../ui/views/session/SessionManagerViewer.java | 4 +++- .../org/jkiss/dbeaver/ui/editors/sql/SQLEditor.java | 12 ++++++++++-- .../ui/editors/sql/plan/ExplainPlanViewer.java | 11 ++++++++--- 3 files changed, 21 insertions(+), 6 deletions(-) diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/views/session/SessionManagerViewer.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/views/session/SessionManagerViewer.java index 6137936162..4c7b7446a5 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/views/session/SessionManagerViewer.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/views/session/SessionManagerViewer.java @@ -256,16 +256,18 @@ public class SessionManagerViewer } private void createPlannerTab(CTabFolder previewFolder) { - planViewer = new ExplainPlanViewer(workbenchPart, sqlViewer, previewFolder); + planViewer = new ExplainPlanViewer(workbenchPart, sqlViewer, previewFolder, 0); // planTree = new PlanNodesTree(previewFolder, SWT.SHEET, workbenchPart.getSite()); // planTree.substituteProgressPanel(getSessionListControl()); planViewer.addSelectionChangedListener(event -> showPlanNode()); + CTabItem sqlPlanItem = new CTabItem(previewFolder, SWT.NONE); sqlPlanItem.setText(CoreMessages.viewer_sql_plan_item_execution_plan); sqlPlanItem.setImage(DBeaverIcons.getImage(UIIcon.SQL_PAGE_EXPLAIN_PLAN)); sqlPlanItem.setControl(planViewer.getControl()); + sqlPlanItem.setData(planViewer); } private void showPlanNode() diff --git a/plugins/org.jkiss.dbeaver.ui.editors.sql/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditor.java b/plugins/org.jkiss.dbeaver.ui.editors.sql/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditor.java index de6fde40bd..1e833b6284 100644 --- a/plugins/org.jkiss.dbeaver.ui.editors.sql/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditor.java +++ b/plugins/org.jkiss.dbeaver.ui.editors.sql/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditor.java @@ -1599,10 +1599,18 @@ public class SQLEditor extends SQLEditorBase implements } if (planView == null) { - planView = new ExplainPlanViewer(this, this, resultTabs); + int maxPlanNumber = 0; + for (CTabItem item : resultTabs.getItems()) { + if (item.getData() instanceof ExplainPlanViewer) { + maxPlanNumber = Math.max(maxPlanNumber, ((ExplainPlanViewer) item.getData()).getPlanNumber()); + } + } + maxPlanNumber++; + + planView = new ExplainPlanViewer(this, this, resultTabs, maxPlanNumber); final CTabItem item = new CTabItem(resultTabs, SWT.CLOSE); item.setControl(planView.getControl()); - item.setText(SQLEditorMessages.editors_sql_error_execution_plan_title); + item.setText(SQLEditorMessages.editors_sql_error_execution_plan_title + " - " + maxPlanNumber); if (sqlQuery != null) { item.setToolTipText(sqlQuery.getText()); } diff --git a/plugins/org.jkiss.dbeaver.ui.editors.sql/src/org/jkiss/dbeaver/ui/editors/sql/plan/ExplainPlanViewer.java b/plugins/org.jkiss.dbeaver.ui.editors.sql/src/org/jkiss/dbeaver/ui/editors/sql/plan/ExplainPlanViewer.java index 7b65b0d586..432efb3676 100644 --- a/plugins/org.jkiss.dbeaver.ui.editors.sql/src/org/jkiss/dbeaver/ui/editors/sql/plan/ExplainPlanViewer.java +++ b/plugins/org.jkiss.dbeaver.ui.editors.sql/src/org/jkiss/dbeaver/ui/editors/sql/plan/ExplainPlanViewer.java @@ -96,15 +96,17 @@ public class ExplainPlanViewer extends Viewer implements IAdaptable private SQLQuery lastQuery; private Object lastQueryId; private DBCPlan lastPlan; + private int planNumber; private RefreshPlanAction refreshPlanAction; private String curFolder; - public ExplainPlanViewer(final IWorkbenchPart workbenchPart, DBPContextProvider contextProvider, Composite parent) + public ExplainPlanViewer(final IWorkbenchPart workbenchPart, DBPContextProvider contextProvider, Composite parent, int planNumber) { this.workbenchPart = workbenchPart; this.contextProvider = contextProvider; + this.planNumber = planNumber; this.refreshPlanAction = new RefreshPlanAction(); this.refreshPlanAction.setEnabled(false); @@ -170,8 +172,11 @@ public class ExplainPlanViewer extends Viewer implements IAdaptable public SQLQuery getQuery() { return lastQuery; } - - + + public int getPlanNumber() { + return planNumber; + } + public boolean loadQueryPlan(DBCQueryPlanner planner, Viewer viewer) { if (planner instanceof DBCQueryPlannerSerializable) { -- GitLab