提交 f86ba1e9 编写于 作者: S serge-rider

Debug object activation. Entity editor opening fix

上级 28dab56d
......@@ -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<String, Object> 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;
}
......
......@@ -152,9 +152,9 @@ public abstract class AbstractDataEditor<OBJECT_TYPE extends DBSObject> 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();
......
......@@ -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<String, Object> editorAttrs = new HashMap<>();
editorAttrs.put(DBPScriptObject.OPTION_DEBUGGER_SOURCE, true);
IEditorPart editorPart = new UITask<IEditorPart>() {
@Override
protected IEditorPart runTask() {
return NavigatorHandlerObjectOpen.openEntityEditor(dbnNode, null, sourceFolderId, editorAttrs, DBeaverUI.getActiveWorkbenchWindow());
}
}.execute();
return editorPart == null ? null : editorPart.getEditorInput();
}
@Override
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册