Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
suliangchun
dbeaver
提交
9e7e23cd
D
dbeaver
项目概览
suliangchun
/
dbeaver
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
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,发现更多精彩内容 >>
提交
9e7e23cd
编写于
1月 31, 2020
作者:
S
Serge Rider
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
#7790 Reference panel refresh fix
上级
c76a3f5f
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
39 addition
and
27 deletion
+39
-27
plugins/org.jkiss.dbeaver.ui.editors.data/src/org/jkiss/dbeaver/ui/controls/resultset/panel/references/ReferencesPanel.java
.../controls/resultset/panel/references/ReferencesPanel.java
+21
-8
plugins/org.jkiss.dbeaver.ui.editors.data/src/org/jkiss/dbeaver/ui/controls/resultset/panel/references/ReferencesResultsContainer.java
...esultset/panel/references/ReferencesResultsContainer.java
+18
-19
未找到文件。
plugins/org.jkiss.dbeaver.ui.editors.data/src/org/jkiss/dbeaver/ui/controls/resultset/panel/references/ReferencesPanel.java
浏览文件 @
9e7e23cd
...
...
@@ -20,15 +20,16 @@ import org.eclipse.jface.action.IContributionManager;
import
org.eclipse.jface.dialogs.IDialogSettings
;
import
org.eclipse.jface.viewers.ISelectionChangedListener
;
import
org.eclipse.jface.viewers.ISelectionProvider
;
import
org.eclipse.jface.viewers.SelectionChangedEvent
;
import
org.eclipse.swt.SWT
;
import
org.eclipse.swt.layout.FillLayout
;
import
org.eclipse.swt.widgets.Composite
;
import
org.eclipse.swt.widgets.Control
;
import
org.jkiss.dbeaver.ui.UIUtils
;
import
org.jkiss.dbeaver.ui.controls.resultset.
IResultSetPanel
;
import
org.jkiss.
dbeaver.ui.controls.resultset.IResultSetPresentation
;
import
org.jkiss.dbeaver.ui.controls.resultset.ResultSetListenerAdapter
;
import
org.jkiss.dbeaver.ui.controls.resultset.ResultSetUtils
;
import
org.jkiss.dbeaver.ui.controls.resultset.
*
;
import
org.jkiss.
utils.CommonUtils
;
import
java.util.List
;
/**
* RSV references panel
...
...
@@ -71,11 +72,23 @@ public class ReferencesPanel implements IResultSetPanel {
presentation
.
getControl
().
addDisposeListener
(
e
->
presentation
.
getController
().
removeListener
(
dataListener
));
if
(
presentation
instanceof
ISelectionProvider
)
{
ISelectionChangedListener
selectionListener
=
event
->
{
if
(
presentation
.
getController
().
getVisiblePanel
()
!=
ReferencesPanel
.
this
)
{
return
;
ISelectionChangedListener
selectionListener
=
new
ISelectionChangedListener
()
{
private
List
<
ResultSetRow
>
prevSelection
;
@Override
public
void
selectionChanged
(
SelectionChangedEvent
event
)
{
if
(
presentation
.
getController
().
getVisiblePanel
()
!=
ReferencesPanel
.
this
)
{
return
;
}
if
(!(
event
.
getSelection
()
instanceof
IResultSetSelection
))
{
return
;
}
List
<
ResultSetRow
>
selectedItems
=
((
IResultSetSelection
)
event
.
getSelection
()).
getSelectedRows
();
if
(
CommonUtils
.
equalObjects
(
prevSelection
,
selectedItems
))
{
return
;
}
this
.
prevSelection
=
selectedItems
;
getResultsContainer
().
refreshReferences
();
}
getResultsContainer
().
refreshReferences
();
};
((
ISelectionProvider
)
presentation
).
addSelectionChangedListener
(
selectionListener
);
presentation
.
getControl
().
addDisposeListener
(
e
->
((
ISelectionProvider
)
presentation
).
removeSelectionChangedListener
(
selectionListener
));
...
...
plugins/org.jkiss.dbeaver.ui.editors.data/src/org/jkiss/dbeaver/ui/controls/resultset/panel/references/ReferencesResultsContainer.java
浏览文件 @
9e7e23cd
...
...
@@ -42,7 +42,6 @@ import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
import
org.jkiss.dbeaver.model.struct.*
;
import
org.jkiss.dbeaver.model.virtual.DBVEntity
;
import
org.jkiss.dbeaver.model.virtual.DBVUtils
;
import
org.jkiss.dbeaver.runtime.DBWorkbench
;
import
org.jkiss.dbeaver.ui.DBeaverIcons
;
import
org.jkiss.dbeaver.ui.UIIcon
;
import
org.jkiss.dbeaver.ui.UIUtils
;
...
...
@@ -51,7 +50,6 @@ import org.jkiss.dbeaver.ui.controls.resultset.*;
import
org.jkiss.dbeaver.utils.GeneralUtils
;
import
org.jkiss.utils.CommonUtils
;
import
java.lang.reflect.InvocationTargetException
;
import
java.util.*
;
class
ReferencesResultsContainer
implements
IResultSetContainer
{
...
...
@@ -317,37 +315,41 @@ class ReferencesResultsContainer implements IResultSetContainer {
//log.error("No active reference key");
return
;
}
try
{
UIUtils
.
runInProgressService
(
monitor
->
{
new
AbstractJob
(
"Read references"
)
{
{
//setUser(true);
//setSystem(false);
}
@Override
protected
IStatus
run
(
DBRProgressMonitor
monitor
)
{
try
{
DBSEntity
realEntity
=
DBVUtils
.
getRealEntity
(
monitor
,
activeReferenceKey
.
refEntity
);
if
(!(
realEntity
instanceof
DBSDataContainer
))
{
log
.
error
(
"Referencing entity is not a data container"
);
return
;
return
Status
.
OK_STATUS
;
}
dataContainer
=
(
DBSDataContainer
)
realEntity
;
List
<
ResultSetRow
>
selectedRows
=
parentController
.
getSelection
().
getSelectedRows
();
if
(!
force
&&
CommonUtils
.
equalObjects
(
lastSelectedRows
,
selectedRows
))
{
return
;
return
Status
.
OK_STATUS
;
}
lastSelectedRows
=
selectedRows
;
if
(
selectedRows
.
isEmpty
())
{
UIUtils
.
asyncExec
(()
->
{
this
.
dataViewer
.
clearData
();
this
.
dataViewer
.
showEmptyPresentation
();
dataViewer
.
clearData
();
dataViewer
.
showEmptyPresentation
();
});
}
else
{
if
(
activeReferenceKey
.
isReference
)
{
this
.
dataViewer
.
navigateReference
(
dataViewer
.
navigateReference
(
monitor
,
parentController
.
getModel
(),
activeReferenceKey
.
refAssociation
,
selectedRows
,
false
);
}
else
{
this
.
dataViewer
.
navigateAssociation
(
dataViewer
.
navigateAssociation
(
monitor
,
parentController
.
getModel
(),
activeReferenceKey
.
refAssociation
,
...
...
@@ -355,15 +357,12 @@ class ReferencesResultsContainer implements IResultSetContainer {
}
}
}
catch
(
DB
Exception
e
)
{
throw
new
InvocationTargetException
(
e
);
}
catch
(
Exception
e
)
{
return
GeneralUtils
.
makeExceptionStatus
(
e
);
}
});
}
catch
(
InvocationTargetException
e
)
{
DBWorkbench
.
getPlatformUI
().
showError
(
"Can't show references"
,
"Error opening '"
+
dataContainer
.
getName
()
+
"' references"
,
e
.
getTargetException
());
}
catch
(
InterruptedException
e
)
{
// Ignore
}
return
Status
.
OK_STATUS
;
}
}.
schedule
();
}
static
class
ReferenceKey
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录