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

Navigator filters fix. PG privs page UI fix

上级 8b855ea3
......@@ -43,15 +43,18 @@ import org.jkiss.dbeaver.ext.postgresql.edit.PostgreCommandGrantPrivilege;
import org.jkiss.dbeaver.ext.postgresql.model.*;
import org.jkiss.dbeaver.model.DBPEvaluationContext;
import org.jkiss.dbeaver.model.DBUtils;
import org.jkiss.dbeaver.model.access.DBAUser;
import org.jkiss.dbeaver.model.edit.DBECommandReflector;
import org.jkiss.dbeaver.model.navigator.DBNDatabaseFolder;
import org.jkiss.dbeaver.model.navigator.DBNDatabaseNode;
import org.jkiss.dbeaver.model.navigator.DBNEvent;
import org.jkiss.dbeaver.model.navigator.DBNNode;
import org.jkiss.dbeaver.model.navigator.*;
import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
import org.jkiss.dbeaver.model.runtime.VoidProgressMonitor;
import org.jkiss.dbeaver.model.runtime.load.DatabaseLoadService;
import org.jkiss.dbeaver.model.struct.DBSEntity;
import org.jkiss.dbeaver.model.struct.DBSObject;
import org.jkiss.dbeaver.model.struct.rdb.DBSPackage;
import org.jkiss.dbeaver.model.struct.rdb.DBSProcedure;
import org.jkiss.dbeaver.model.struct.rdb.DBSSequence;
import org.jkiss.dbeaver.model.struct.rdb.DBSTableIndex;
import org.jkiss.dbeaver.runtime.DBWorkbench;
import org.jkiss.dbeaver.ui.LoadingJob;
import org.jkiss.dbeaver.ui.UIUtils;
......@@ -92,7 +95,12 @@ public class PostgresRolePrivilegesEditor extends AbstractDatabaseObjectEditor<P
SashForm composite = UIUtils.createPartDivider(getSite().getPart(), this.pageControl, SWT.HORIZONTAL);
composite.setLayoutData(new GridData(GridData.FILL_BOTH));
roleOrObjectTable = new DatabaseNavigatorTree(composite, DBWorkbench.getPlatform().getNavigatorModel().getRoot(), SWT.MULTI | SWT.FULL_SELECTION, false, new DatabaseNavigatorTreeFilter());
roleOrObjectTable = new DatabaseNavigatorTree(
composite,
DBWorkbench.getPlatform().getNavigatorModel().getRoot(),
SWT.MULTI | SWT.FULL_SELECTION,
false,
isRoleEditor() ? new DatabaseObjectFilter() : null);
roleOrObjectTable.setLayoutData(new GridData(GridData.FILL_BOTH));
final TreeViewer treeViewer = roleOrObjectTable.getViewer();
treeViewer.setLabelProvider(new DatabaseNavigatorLabelProvider(treeViewer) {
......@@ -459,6 +467,36 @@ public class PostgresRolePrivilegesEditor extends AbstractDatabaseObjectEditor<P
}
}
private static class DatabaseObjectFilter extends DatabaseNavigatorTreeFilter {
@Override
public boolean filterFolders() {
return false;
}
@Override
public boolean isLeafObject(Object object) {
if (object instanceof DBNDatabaseItem) {
DBSObject dbObject = ((DBNDatabaseItem) object).getObject();
return
dbObject instanceof DBSEntity ||
dbObject instanceof DBSProcedure ||
dbObject instanceof DBSTableIndex ||
dbObject instanceof DBSPackage ||
dbObject instanceof DBSSequence ||
dbObject instanceof DBAUser;
}
return false;
}
@Override
public boolean select(Object element) {
if (!(element instanceof DBNDatabaseItem)) {
return true;
}
return isLeafObject(element);
}
}
private class PageControl extends ProgressPageControl {
PageControl(Composite parent) {
super(parent, SWT.SHEET);
......
......@@ -27,6 +27,9 @@ public interface INavigatorFilter extends IFilter
boolean filterFolders();
/**
* @param object navigator node (DBN*)
*/
boolean isLeafObject(Object object);
}
......@@ -149,7 +149,7 @@ class DatabaseNavigatorContentProvider implements IStructuredContentProvider, IT
public boolean hasChildren(Object parent)
{
if (parent instanceof DBNDatabaseNode) {
if (navigatorTree.getNavigatorFilter() != null && navigatorTree.getNavigatorFilter().isLeafObject(((DBNDatabaseNode) parent).getObject())) {
if (navigatorTree.getNavigatorFilter() != null && navigatorTree.getNavigatorFilter().isLeafObject(parent)) {
return false;
}
}
......
......@@ -93,9 +93,14 @@ public class BrowseObjectDialog extends Dialog {
@Override
public boolean isLeafObject(Object object) {
if (leafTypes != null && leafTypes.length > 0) {
for (Class<?> leafType : leafTypes) {
if (leafType.isAssignableFrom(object.getClass())) {
return true;
if (object instanceof DBNDatabaseNode) {
DBSObject dbObject = ((DBNDatabaseNode) object).getObject();
if (dbObject != null) {
for (Class<?> leafType : leafTypes) {
if (leafType.isAssignableFrom(dbObject.getClass())) {
return true;
}
}
}
}
}
......
......@@ -100,7 +100,7 @@ public class SelectDataSourceDialog extends AbstractPopupPanel {
@Override
public boolean isLeafObject(Object object) {
return object instanceof DBPDataSourceContainer;
return object instanceof DBNDataSource;
}
@Override
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册