From f86ba1e97dba4648fa8547704c12ef398958b4ab Mon Sep 17 00:00:00 2001 From: serge-rider Date: Fri, 4 May 2018 20:45:40 +0300 Subject: [PATCH] Debug object activation. Entity editor opening fix --- .../navigator/NavigatorHandlerObjectOpen.java | 17 ++++++++++--- .../ui/editors/data/AbstractDataEditor.java | 4 +-- .../ui/DatabaseDebugModelPresentation.java | 25 ++++++++++++------- 3 files changed, 32 insertions(+), 14 deletions(-) diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/navigator/NavigatorHandlerObjectOpen.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/navigator/NavigatorHandlerObjectOpen.java index bbb5d3deb2..9f1311072b 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/navigator/NavigatorHandlerObjectOpen.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/navigator/NavigatorHandlerObjectOpen.java @@ -47,6 +47,7 @@ import org.jkiss.dbeaver.model.struct.DBSObjectContainer; import org.jkiss.dbeaver.registry.DataSourceDescriptor; import org.jkiss.dbeaver.registry.editor.EntityEditorsRegistry; import org.jkiss.dbeaver.runtime.ui.DBUserInterface; +import org.jkiss.dbeaver.ui.IRefreshablePart; import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.controls.folders.ITabbedFolderContainer; import org.jkiss.dbeaver.ui.dialogs.connection.EditConnectionDialog; @@ -125,12 +126,13 @@ public class NavigatorHandlerObjectOpen extends NavigatorHandlerObjectBase imple @Nullable String defaultPageId, IWorkbenchWindow workbenchWindow) { - return openEntityEditor(selectedNode, defaultPageId, null , workbenchWindow); + return openEntityEditor(selectedNode, defaultPageId, null, null, workbenchWindow); } public static IEditorPart openEntityEditor( @NotNull DBNNode selectedNode, @Nullable String defaultPageId, + @Nullable String defaultFolderId, @Nullable Map attributes, IWorkbenchWindow workbenchWindow) { @@ -140,18 +142,27 @@ public class NavigatorHandlerObjectOpen extends NavigatorHandlerObjectBase imple return null; } try { - String defaultFolderId = null; if (selectedNode instanceof DBNDatabaseFolder && !(selectedNode.getParentNode() instanceof DBNDatabaseFolder) && selectedNode.getParentNode() instanceof DBNDatabaseNode) { - defaultFolderId = selectedNode.getNodeType(); + if (defaultFolderId == null) { + defaultFolderId = selectedNode.getNodeType(); + } selectedNode = selectedNode.getParentNode(); } IEditorPart editor = findEntityEditor(workbenchWindow, selectedNode); if (editor != null) { + if (editor.getEditorInput() instanceof IDatabaseEditorInput) { + setInputAttributes((DatabaseEditorInput) editor.getEditorInput(), defaultPageId, defaultFolderId, attributes); + } if (editor instanceof ITabbedFolderContainer && defaultFolderId != null) { // Activate default folder ((ITabbedFolderContainer) editor).switchFolder(defaultFolderId); } + if (!CommonUtils.isEmpty(attributes)) { + if (editor instanceof IRefreshablePart) { + ((IRefreshablePart) editor).refreshPart(selectedNode, true); + } + } workbenchWindow.getActivePage().activate(editor); return editor; } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/data/AbstractDataEditor.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/data/AbstractDataEditor.java index 0c96c7deba..0e9dff81df 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/data/AbstractDataEditor.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/data/AbstractDataEditor.java @@ -152,9 +152,9 @@ public abstract class AbstractDataEditor extends IEditorPart entityEditor = NavigatorHandlerObjectOpen.openEntityEditor( targetNode, DatabaseDataEditor.class.getName(), + null, Collections.singletonMap(DatabaseDataEditor.ATTR_DATA_FILTER, newFilter), - DBeaverUI.getActiveWorkbenchWindow() - ); + DBeaverUI.getActiveWorkbenchWindow()); if (entityEditor instanceof MultiPageEditorPart) { Object selectedPage = ((MultiPageEditorPart) entityEditor).getSelectedPage(); diff --git a/plugins/org.jkiss.dbeaver.debug.ui/src/org/jkiss/dbeaver/debug/ui/DatabaseDebugModelPresentation.java b/plugins/org.jkiss.dbeaver.debug.ui/src/org/jkiss/dbeaver/debug/ui/DatabaseDebugModelPresentation.java index 2c4c82d631..2ebf330e19 100644 --- a/plugins/org.jkiss.dbeaver.debug.ui/src/org/jkiss/dbeaver/debug/ui/DatabaseDebugModelPresentation.java +++ b/plugins/org.jkiss.dbeaver.debug.ui/src/org/jkiss/dbeaver/debug/ui/DatabaseDebugModelPresentation.java @@ -32,9 +32,11 @@ import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.osgi.util.NLS; import org.eclipse.swt.graphics.Image; import org.eclipse.ui.IEditorInput; +import org.eclipse.ui.IEditorPart; import org.eclipse.ui.model.WorkbenchLabelProvider; import org.jkiss.dbeaver.Log; import org.jkiss.dbeaver.core.DBeaverCore; +import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.debug.core.DebugCore; import org.jkiss.dbeaver.debug.core.breakpoints.DatabaseLineBreakpoint; import org.jkiss.dbeaver.debug.core.breakpoints.IDatabaseBreakpoint; @@ -48,8 +50,9 @@ import org.jkiss.dbeaver.model.navigator.DBNDatabaseNode; import org.jkiss.dbeaver.model.navigator.DBNModel; import org.jkiss.dbeaver.model.navigator.DBNNode; import org.jkiss.dbeaver.model.runtime.VoidProgressMonitor; +import org.jkiss.dbeaver.ui.UITask; +import org.jkiss.dbeaver.ui.actions.navigator.NavigatorHandlerObjectOpen; import org.jkiss.dbeaver.ui.editors.entity.EntityEditor; -import org.jkiss.dbeaver.ui.editors.entity.EntityEditorInput; public class DatabaseDebugModelPresentation extends LabelProvider implements IDebugModelPresentationExtension { @@ -167,15 +170,19 @@ public class DatabaseDebugModelPresentation extends LabelProvider implements IDe } protected IEditorInput createEditorInput(DBNDatabaseNode dbnNode) { - EntityEditorInput editorInput = new EntityEditorInput(dbnNode); - editorInput.setAttribute(DBPScriptObject.OPTION_DEBUGGER_SOURCE, Boolean.TRUE); DBGEditorAdvisor editorAdvisor = DebugUI.findEditorAdvisor(dbnNode.getDataSourceContainer()); - if (editorAdvisor != null) { - String sourceFolderId = editorAdvisor.getSourceFolderId(); - editorInput.setDefaultFolderId(sourceFolderId); - } - DebugCore.postDebuggerSourceEvent(dbnNode.getNodeItemPath()); - return editorInput; + String sourceFolderId = editorAdvisor == null ? null : editorAdvisor.getSourceFolderId(); + Map editorAttrs = new HashMap<>(); + editorAttrs.put(DBPScriptObject.OPTION_DEBUGGER_SOURCE, true); + + IEditorPart editorPart = new UITask() { + @Override + protected IEditorPart runTask() { + return NavigatorHandlerObjectOpen.openEntityEditor(dbnNode, null, sourceFolderId, editorAttrs, DBeaverUI.getActiveWorkbenchWindow()); + } + }.execute(); + + return editorPart == null ? null : editorPart.getEditorInput(); } @Override -- GitLab