Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
一剑流云
dbeaver
提交
3625d3b7
D
dbeaver
项目概览
一剑流云
/
dbeaver
与 Fork 源项目一致
从无法访问的项目Fork
通知
7
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dbeaver
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
3625d3b7
编写于
1月 05, 2018
作者:
S
serge-rider
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
#1712 PG privilege editor redesign (use nav tree)
上级
bce8da43
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
109 addition
and
135 deletion
+109
-135
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/itemlist/ItemListControl.java
...g/jkiss/dbeaver/ui/controls/itemlist/ItemListControl.java
+2
-14
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/DatabaseEditorUtils.java
...src/org/jkiss/dbeaver/ui/editors/DatabaseEditorUtils.java
+39
-0
plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/ui/editors/PostgresRolePrivilegesEditor.java
...t/postgresql/ui/editors/PostgresRolePrivilegesEditor.java
+68
-121
未找到文件。
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/itemlist/ItemListControl.java
浏览文件 @
3625d3b7
...
...
@@ -43,6 +43,7 @@ import org.jkiss.dbeaver.runtime.properties.ObjectPropertyDescriptor;
import
org.jkiss.dbeaver.runtime.ui.DBUserInterface
;
import
org.jkiss.dbeaver.ui.*
;
import
org.jkiss.dbeaver.ui.actions.navigator.NavigatorHandlerFilterConfig
;
import
org.jkiss.dbeaver.ui.editors.DatabaseEditorUtils
;
import
org.jkiss.dbeaver.ui.editors.entity.EntityEditor
;
import
org.jkiss.dbeaver.ui.navigator.NavigatorUtils
;
import
org.jkiss.utils.ArrayUtils
;
...
...
@@ -140,20 +141,7 @@ public class ItemListControl extends NodeListControl
final
MultiPageEditorPart
editor
=
((
MultiPageEditorSite
)
workbenchSite
).
getMultiPageEditor
();
if
(
editor
instanceof
EntityEditor
)
{
contributionManager
.
add
(
new
Separator
());
contributionManager
.
add
(
ActionUtils
.
makeCommandContribution
(
workbenchSite
,
IWorkbenchCommandConstants
.
FILE_SAVE
,
null
,
UIIcon
.
SAVE
,
null
,
true
));
contributionManager
.
add
(
ActionUtils
.
makeCommandContribution
(
workbenchSite
,
IWorkbenchCommandConstants
.
FILE_REVERT
,
null
,
UIIcon
.
RESET
,
null
,
true
));
DatabaseEditorUtils
.
contributeStandardEditorActions
(
workbenchSite
,
contributionManager
);
}
}
}
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/DatabaseEditorUtils.java
浏览文件 @
3625d3b7
...
...
@@ -16,15 +16,36 @@
*/
package
org.jkiss.dbeaver.ui.editors
;
import
org.eclipse.jface.action.Action
;
import
org.eclipse.jface.action.IContributionManager
;
import
org.eclipse.jface.action.Separator
;
import
org.eclipse.swt.custom.CTabFolder
;
import
org.eclipse.swt.graphics.Color
;
import
org.eclipse.swt.widgets.Composite
;
import
org.eclipse.ui.IEditorPart
;
import
org.eclipse.ui.IWorkbenchCommandConstants
;
import
org.eclipse.ui.IWorkbenchSite
;
import
org.eclipse.ui.part.MultiPageEditorPart
;
import
org.eclipse.ui.part.MultiPageEditorSite
;
import
org.jkiss.dbeaver.core.CoreCommands
;
import
org.jkiss.dbeaver.core.CoreMessages
;
import
org.jkiss.dbeaver.model.DBPContextProvider
;
import
org.jkiss.dbeaver.model.DBPDataSourceContainer
;
import
org.jkiss.dbeaver.model.IDataSourceContainerProvider
;
import
org.jkiss.dbeaver.model.edit.DBEObjectReorderer
;
import
org.jkiss.dbeaver.model.exec.DBCExecutionContext
;
import
org.jkiss.dbeaver.model.navigator.DBNDatabaseFolder
;
import
org.jkiss.dbeaver.model.navigator.DBNDatabaseNode
;
import
org.jkiss.dbeaver.model.navigator.DBNNode
;
import
org.jkiss.dbeaver.registry.editor.EntityEditorsRegistry
;
import
org.jkiss.dbeaver.ui.ActionUtils
;
import
org.jkiss.dbeaver.ui.DBeaverIcons
;
import
org.jkiss.dbeaver.ui.UIIcon
;
import
org.jkiss.dbeaver.ui.UIUtils
;
import
org.jkiss.dbeaver.ui.actions.navigator.NavigatorHandlerFilterConfig
;
import
org.jkiss.dbeaver.ui.editors.entity.EntityEditor
;
import
java.util.List
;
/**
* DB editor utils
...
...
@@ -66,4 +87,22 @@ public class DatabaseEditorUtils {
}
}
public
static
void
contributeStandardEditorActions
(
IWorkbenchSite
workbenchSite
,
IContributionManager
contributionManager
)
{
contributionManager
.
add
(
ActionUtils
.
makeCommandContribution
(
workbenchSite
,
IWorkbenchCommandConstants
.
FILE_SAVE
,
null
,
UIIcon
.
SAVE
,
null
,
true
));
contributionManager
.
add
(
ActionUtils
.
makeCommandContribution
(
workbenchSite
,
IWorkbenchCommandConstants
.
FILE_REVERT
,
null
,
UIIcon
.
RESET
,
null
,
true
));
}
}
plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/ui/editors/PostgresRolePrivilegesEditor.java
浏览文件 @
3625d3b7
...
...
@@ -16,9 +16,7 @@
*/
package
org.jkiss.dbeaver.ext.postgresql.ui.editors
;
import
org.eclipse.jface.action.Action
;
import
org.eclipse.jface.action.IContributionManager
;
import
org.eclipse.jface.action.MenuManager
;
import
org.eclipse.jface.action.Separator
;
import
org.eclipse.jface.viewers.TreeViewer
;
import
org.eclipse.jface.viewers.Viewer
;
...
...
@@ -31,8 +29,10 @@ import org.eclipse.swt.events.SelectionAdapter;
import
org.eclipse.swt.events.SelectionEvent
;
import
org.eclipse.swt.graphics.Font
;
import
org.eclipse.swt.layout.GridData
;
import
org.eclipse.swt.layout.GridLayout
;
import
org.eclipse.swt.layout.RowLayout
;
import
org.eclipse.swt.widgets.Button
;
import
org.eclipse.swt.widgets.Composite
;
import
org.eclipse.swt.widgets.Menu
;
import
org.eclipse.swt.widgets.Table
;
import
org.eclipse.swt.widgets.TableItem
;
import
org.eclipse.ui.IWorkbenchCommandConstants
;
...
...
@@ -41,7 +41,6 @@ import org.jkiss.dbeaver.DBException;
import
org.jkiss.dbeaver.core.DBeaverCore
;
import
org.jkiss.dbeaver.core.DBeaverUI
;
import
org.jkiss.dbeaver.ext.postgresql.model.*
;
import
org.jkiss.dbeaver.model.DBIcon
;
import
org.jkiss.dbeaver.model.DBPEvaluationContext
;
import
org.jkiss.dbeaver.model.DBUtils
;
import
org.jkiss.dbeaver.model.navigator.DBNDatabaseFolder
;
...
...
@@ -53,10 +52,10 @@ import org.jkiss.dbeaver.model.runtime.load.DatabaseLoadService;
import
org.jkiss.dbeaver.model.struct.DBSObject
;
import
org.jkiss.dbeaver.ui.ActionUtils
;
import
org.jkiss.dbeaver.ui.LoadingJob
;
import
org.jkiss.dbeaver.ui.UIIcon
;
import
org.jkiss.dbeaver.ui.UIUtils
;
import
org.jkiss.dbeaver.ui.controls.ProgressPageControl
;
import
org.jkiss.dbeaver.ui.editors.AbstractDatabaseObjectEditor
;
import
org.jkiss.dbeaver.ui.editors.DatabaseEditorUtils
;
import
org.jkiss.dbeaver.ui.navigator.NavigatorUtils
;
import
org.jkiss.dbeaver.ui.navigator.database.DatabaseNavigatorLabelProvider
;
import
org.jkiss.dbeaver.ui.navigator.database.DatabaseNavigatorTree
;
...
...
@@ -77,8 +76,6 @@ public class PostgresRolePrivilegesEditor extends AbstractDatabaseObjectEditor<P
private
boolean
isLoaded
;
private
DatabaseNavigatorTree
roleOrObjectTable
;
private
Table
permissionTable
;
private
Action
actionCheckAll
;
private
Action
actionCheckNone
;
private
PostgrePermission
currentPermission
;
private
DBSObject
currentObject
;
...
...
@@ -135,30 +132,6 @@ public class PostgresRolePrivilegesEditor extends AbstractDatabaseObjectEditor<P
}
};
*/
actionCheckAll
=
new
Action
(
"All"
)
{
@Override
public
void
run
()
{
boolean
hadNonChecked
=
false
;
for
(
TableItem
item
:
permissionTable
.
getItems
())
{
if
(!
item
.
getChecked
())
hadNonChecked
=
true
;
item
.
setChecked
(
true
);
}
if
(
hadNonChecked
)
updateCurrentPrivileges
();
}
};
actionCheckNone
=
new
Action
(
"None"
)
{
@Override
public
void
run
()
{
boolean
hadChecked
=
false
;
for
(
TableItem
item
:
permissionTable
.
getItems
())
{
item
.
setChecked
(
false
);
if
(
item
.
getChecked
())
hadChecked
=
true
;
}
if
(
hadChecked
)
{
updateCurrentPrivileges
();
}
}
};
}
this
.
pageControl
=
new
PageControl
(
parent
);
...
...
@@ -207,107 +180,85 @@ public class PostgresRolePrivilegesEditor extends AbstractDatabaseObjectEditor<P
}
});
permissionTable
=
new
Table
(
composite
,
SWT
.
FULL_SELECTION
|
SWT
.
CHECK
);
permissionTable
.
setLayoutData
(
new
GridData
(
GridData
.
FILL_BOTH
));
permissionTable
.
setHeaderVisible
(
true
);
permissionTable
.
setLinesVisible
(
true
);
UIUtils
.
createTableColumn
(
permissionTable
,
SWT
.
LEFT
,
"Permission"
);
UIUtils
.
createTableColumn
(
permissionTable
,
SWT
.
CENTER
,
"With GRANT"
);
UIUtils
.
createTableColumn
(
permissionTable
,
SWT
.
CENTER
,
"With Hierarchy"
);
permissionTable
.
addSelectionListener
(
new
SelectionAdapter
()
{
@Override
public
void
widgetSelected
(
SelectionEvent
e
)
{
if
(
e
.
detail
==
SWT
.
CHECK
)
{
updateCurrentPrivileges
();
{
Composite
permEditPanel
=
new
Composite
(
composite
,
SWT
.
NONE
);
permEditPanel
.
setLayout
(
new
GridLayout
(
1
,
true
));
//permEditPanel.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
permissionTable
=
new
Table
(
permEditPanel
,
SWT
.
FULL_SELECTION
|
SWT
.
CHECK
);
permissionTable
.
setLayoutData
(
new
GridData
(
GridData
.
FILL_HORIZONTAL
));
permissionTable
.
setHeaderVisible
(
true
);
permissionTable
.
setLinesVisible
(
true
);
UIUtils
.
createTableColumn
(
permissionTable
,
SWT
.
LEFT
,
"Permission"
);
UIUtils
.
createTableColumn
(
permissionTable
,
SWT
.
CENTER
,
"With GRANT"
);
UIUtils
.
createTableColumn
(
permissionTable
,
SWT
.
CENTER
,
"With Hierarchy"
);
permissionTable
.
addSelectionListener
(
new
SelectionAdapter
()
{
@Override
public
void
widgetSelected
(
SelectionEvent
e
)
{
if
(
e
.
detail
==
SWT
.
CHECK
)
{
updateCurrentPrivileges
(((
TableItem
)
e
.
item
).
getChecked
(),
(
PostgrePrivilegeType
)
e
.
item
.
getData
());
}
}
}
});
permissionTable
.
addMouseListener
(
new
MouseAdapter
()
{
@Override
public
void
mouseDown
(
MouseEvent
e
)
{
super
.
mouseDown
(
e
);
}
});
});
permissionTable
.
addMouseListener
(
new
MouseAdapter
()
{
@Override
public
void
mouseDown
(
MouseEvent
e
)
{
super
.
mouseDown
(
e
);
}
});
for
(
PostgrePrivilegeType
pt
:
PostgrePrivilegeType
.
values
())
{
if
(!
pt
.
isValid
())
{
continue
;
for
(
PostgrePrivilegeType
pt
:
PostgrePrivilegeType
.
values
())
{
if
(!
pt
.
isValid
())
{
continue
;
}
TableItem
privItem
=
new
TableItem
(
permissionTable
,
SWT
.
LEFT
);
privItem
.
setText
(
0
,
pt
.
name
());
privItem
.
setData
(
pt
);
}
TableItem
privItem
=
new
TableItem
(
permissionTable
,
SWT
.
LEFT
);
privItem
.
setText
(
0
,
pt
.
name
());
privItem
.
setData
(
pt
);
Composite
buttonPanel
=
new
Composite
(
permEditPanel
,
SWT
.
NONE
);
buttonPanel
.
setLayoutData
(
new
GridData
(
GridData
.
FILL_HORIZONTAL
));
buttonPanel
.
setLayout
(
new
RowLayout
());
Button
actionCheckAll
=
UIUtils
.
createPushButton
(
buttonPanel
,
"Check All"
,
null
,
new
SelectionAdapter
()
{
@Override
public
void
widgetSelected
(
SelectionEvent
e
)
{
boolean
hadNonChecked
=
false
;
for
(
TableItem
item
:
permissionTable
.
getItems
())
{
if
(!
item
.
getChecked
())
hadNonChecked
=
true
;
item
.
setChecked
(
true
);
}
if
(
hadNonChecked
)
updateCurrentPrivileges
(
true
,
null
);
}
});
Button
actionCheckNone
=
UIUtils
.
createPushButton
(
buttonPanel
,
"Check None"
,
null
,
new
SelectionAdapter
()
{
@Override
public
void
widgetSelected
(
SelectionEvent
e
)
{
boolean
hadChecked
=
false
;
for
(
TableItem
item
:
permissionTable
.
getItems
())
{
if
(
item
.
getChecked
())
hadChecked
=
true
;
item
.
setChecked
(
false
);
}
if
(
hadChecked
)
{
updateCurrentPrivileges
(
false
,
null
);
}
}
});
}
pageControl
.
createOrSubstituteProgressPanel
(
getSite
());
updateObjectPermissions
(
null
,
null
);
registerContextMenu
();
}
private
PostgrePermission
getObjectPermissions
(
DBSObject
object
)
{
return
permissionMap
.
get
(
DBUtils
.
getObjectFullName
(
object
,
DBPEvaluationContext
.
DDL
));
}
private
void
updateCurrentPrivileges
()
{
private
void
updateCurrentPrivileges
(
boolean
grant
,
PostgrePrivilegeType
data
)
{
//System.out.println("Privs changed");
}
private
void
registerContextMenu
()
{
/*
// Register objects context menu
{
MenuManager menuMgr = new MenuManager();
menuMgr.addMenuListener(manager -> {
manager.add(actionGrant);
manager.add(actionRevoke);
});
menuMgr.setRemoveAllWhenShown(true);
Menu menu = menuMgr.createContextMenu(roleOrObjectTable);
roleOrObjectTable.setMenu(menu);
}
*/
// Register objects context menu
{
MenuManager
menuMgr
=
new
MenuManager
();
menuMgr
.
addMenuListener
(
manager
->
{
manager
.
add
(
actionCheckAll
);
manager
.
add
(
actionCheckNone
);
});
menuMgr
.
setRemoveAllWhenShown
(
true
);
Menu
menu
=
menuMgr
.
createContextMenu
(
permissionTable
);
permissionTable
.
setMenu
(
menu
);
}
}
private
void
openPermObject
()
{
DBSObject
selectedObject
=
NavigatorUtils
.
getSelectedObject
(
roleOrObjectTable
.
getViewer
().
getSelection
());
if
(
selectedObject
==
null
)
{
updateObjectPermissions
(
null
,
null
);
}
else
{
PostgrePermission
permission
=
permissionMap
.
get
(
selectedObject
);
updateObjectPermissions
(
permission
,
selectedObject
);
}
/*
new AbstractJob("Open target object") {
@Override
protected IStatus run(DBRProgressMonitor monitor) {
try {
final PostgreObject targetObject = permission.getTargetObject(monitor);
if (targetObject != null) {
DBeaverUI.syncExec(() -> NavigatorHandlerObjectOpen.openEntityEditor(targetObject));
}
} catch (DBException e) {
return GeneralUtils.makeExceptionStatus(e);
}
return Status.OK_STATUS;
}
}.schedule();
*/
}
private
void
updateObjectPermissions
(
PostgrePermission
data
,
DBSObject
curObject
)
{
this
.
currentPermission
=
data
;
if
(
curObject
instanceof
PostgreTableBase
||
curObject
instanceof
PostgreRole
)
{
...
...
@@ -341,8 +292,6 @@ public class PostgresRolePrivilegesEditor extends AbstractDatabaseObjectEditor<P
}
}
}
actionCheckAll
.
setEnabled
(
data
!=
null
);
actionCheckNone
.
setEnabled
(
data
!=
null
);
}
private
boolean
isRoleEditor
()
{
...
...
@@ -437,13 +386,11 @@ public class PostgresRolePrivilegesEditor extends AbstractDatabaseObjectEditor<P
protected
void
fillCustomActions
(
IContributionManager
contributionManager
)
{
super
.
fillCustomActions
(
contributionManager
);
contributionManager
.
add
(
new
Separator
());
contributionManager
.
add
(
actionCheckAll
);
contributionManager
.
add
(
actionCheckNone
);
contributionManager
.
add
(
new
Separator
());
IWorkbenchSite
workbenchSite
=
getSite
();
if
(
workbenchSite
!=
null
)
{
DatabaseEditorUtils
.
contributeStandardEditorActions
(
workbenchSite
,
contributionManager
);
contributionManager
.
add
(
ActionUtils
.
makeCommandContribution
(
workbenchSite
,
IWorkbenchCommandConstants
.
FILE_REFRESH
));
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录