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

#5378 Object editors open fix (Object input id uniqueness)


Former-commit-id: 941114f5
上级 4869f680
......@@ -23,6 +23,7 @@ import org.eclipse.jface.viewers.ISelectionProvider;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.ui.*;
import org.jkiss.dbeaver.model.navigator.DBNDatabaseNode;
import org.jkiss.dbeaver.model.navigator.DBNDatabaseObject;
import org.jkiss.dbeaver.model.navigator.meta.DBXTreeNode;
import org.jkiss.dbeaver.model.navigator.meta.DBXTreeObject;
import org.jkiss.dbeaver.model.struct.DBSObject;
......@@ -35,8 +36,8 @@ import org.jkiss.dbeaver.ui.DBeaverIcons;
import org.jkiss.dbeaver.ui.UIUtils;
import org.jkiss.dbeaver.ui.actions.common.EmptyListAction;
import org.jkiss.dbeaver.ui.actions.common.ExecuteToolHandler;
import org.jkiss.dbeaver.ui.editors.DatabaseEditorInput;
import org.jkiss.dbeaver.ui.editors.IDatabaseEditorInput;
import org.jkiss.dbeaver.ui.editors.object.ObjectEditorInput;
import org.jkiss.dbeaver.ui.navigator.NavigatorUtils;
import org.jkiss.dbeaver.utils.RuntimeUtils;
import org.jkiss.utils.CommonUtils;
......@@ -84,13 +85,15 @@ public class DataSourceToolsContributor extends DataSourceMenuContributor
findObjectNodes(dsNode.getMeta(), navigatorObjectEditors, processedNodes);
}
if (!navigatorObjectEditors.isEmpty()) {
DBNDatabaseNode objectNode = dsNode;
// DBNDatabaseNode objectNode = NavigatorUtils.getNodeByObject(selectedObject);
// if (objectNode == null) {
// objectNode = dsNode;
// }
menuItems.add(new Separator());
for (DBXTreeObject editorMeta : navigatorObjectEditors) {
//DBNDatabaseNode objectNode = dsNode;
DBNDatabaseNode objectNode = NavigatorUtils.getNodeByObject(selectedObject);
if (objectNode == null) {
objectNode = dsNode;
}
menuItems.add(new ActionContributionItem(new OpenToolsEditorAction(activePage, objectNode, editorMeta)));
}
}
......@@ -189,12 +192,16 @@ public class DataSourceToolsContributor extends DataSourceMenuContributor
@Override
public void run() {
DatabaseEditorInput<DBNDatabaseNode> objectInput = new DatabaseEditorInput<DBNDatabaseNode>(databaseNode) {
ObjectEditorInput editorInput;
if (databaseNode instanceof DBNDatabaseObject) {
editorInput = new ObjectEditorInput((DBNDatabaseObject) databaseNode);
} else {
editorInput = new ObjectEditorInput(databaseNode, editorMeta);
}
};
try {
workbenchPage.openEditor(
objectInput,
editorInput,
editorMeta.getEditorId());
} catch (PartInitException e) {
DBWorkbench.getPlatformUI().showError("Editor open", "Error opening tool editor '" + editorMeta.getEditorId() + "'", e.getStatus());
......
......@@ -17,36 +17,60 @@
package org.jkiss.dbeaver.ui.editors.object;
import org.eclipse.jface.resource.ImageDescriptor;
import org.jkiss.code.NotNull;
import org.jkiss.dbeaver.model.navigator.DBNDatabaseNode;
import org.jkiss.dbeaver.model.navigator.DBNDatabaseObject;
import org.jkiss.dbeaver.model.navigator.meta.DBXTreeObject;
import org.jkiss.dbeaver.ui.DBeaverIcons;
import org.jkiss.dbeaver.ui.editors.DatabaseEditorInput;
/**
* ObjectEditorInput
*/
public class ObjectEditorInput extends DatabaseEditorInput<DBNDatabaseObject>
public class ObjectEditorInput extends DatabaseEditorInput<DBNDatabaseNode>
{
public ObjectEditorInput(DBNDatabaseObject dbmNode)
private DBXTreeObject editorMeta;
public ObjectEditorInput(@NotNull DBNDatabaseObject dbmNode)
{
super(dbmNode);
}
public ObjectEditorInput(@NotNull DBNDatabaseNode dbmNode, @NotNull DBXTreeObject meta)
{
super(dbmNode);
this.editorMeta = meta;
}
public DBXTreeObject getEditorMeta() {
if (editorMeta != null) {
return editorMeta;
} else {
return ((DBXTreeObject)getNavigatorNode().getMeta());
}
}
@Override
public ImageDescriptor getImageDescriptor()
{
DBNDatabaseObject node = getNavigatorNode();
DBNDatabaseNode node = getNavigatorNode();
// IEditorDescriptor editorDescriptor = node.getEditorDescriptor();
// if (editorDescriptor != null) {
// return editorDescriptor.getImageDescriptor();
// } else {
return DBeaverIcons.getImageDescriptor(node.getNodeIconDefault());
return DBeaverIcons.getImageDescriptor(getEditorMeta().getDefaultIcon());
// }
}
@Override
public String getToolTipText()
{
return getNavigatorNode().getMeta().getDescription();
return getEditorMeta().getDescription();
}
@Override
public boolean equals(Object obj) {
return obj instanceof ObjectEditorInput && super.equals(obj) && getEditorMeta() == ((ObjectEditorInput) obj).getEditorMeta();
}
}
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册