Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
suliangchun
dbeaver
提交
22faa186
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,发现更多精彩内容 >>
提交
22faa186
编写于
2月 26, 2017
作者:
S
Serge Rider
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
#91 Navigator nodes reorder. Events model refactoring.
上级
314c02c9
变更
10
隐藏空白更改
内联
并排
Showing
10 changed file
with
64 addition
and
34 deletion
+64
-34
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/navigator/NavigatorHandlerRefresh.java
...dbeaver/ui/actions/navigator/NavigatorHandlerRefresh.java
+2
-1
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/itemlist/ItemListControl.java
...g/jkiss/dbeaver/ui/controls/itemlist/ItemListControl.java
+1
-1
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/DatabaseEditorListener.java
.../org/jkiss/dbeaver/ui/editors/DatabaseEditorListener.java
+1
-1
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/entity/EntityEditor.java
...src/org/jkiss/dbeaver/ui/editors/entity/EntityEditor.java
+2
-1
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/DBPEvent.java
...s.dbeaver.model/src/org/jkiss/dbeaver/model/DBPEvent.java
+2
-0
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/sql/edit/SQLObjectEditor.java
...rg/jkiss/dbeaver/model/impl/sql/edit/SQLObjectEditor.java
+6
-3
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/navigator/DBNDatabaseNode.java
...rc/org/jkiss/dbeaver/model/navigator/DBNDatabaseNode.java
+30
-19
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/navigator/DBNEvent.java
...model/src/org/jkiss/dbeaver/model/navigator/DBNEvent.java
+3
-0
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/navigator/DBNNode.java
....model/src/org/jkiss/dbeaver/model/navigator/DBNNode.java
+0
-2
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/navigator/DBNProjectDatabases.java
...rg/jkiss/dbeaver/model/navigator/DBNProjectDatabases.java
+17
-6
未找到文件。
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/navigator/NavigatorHandlerRefresh.java
浏览文件 @
22faa186
...
...
@@ -31,6 +31,7 @@ import org.eclipse.ui.IWorkbenchPart;
import
org.eclipse.ui.handlers.HandlerUtil
;
import
org.jkiss.dbeaver.Log
;
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.runtime.AbstractJob
;
import
org.jkiss.dbeaver.model.runtime.DBRProgressMonitor
;
...
...
@@ -134,7 +135,7 @@ public class NavigatorHandlerRefresh extends AbstractHandler {
}
setName
(
"Refresh '"
+
node
.
getNodeName
()
+
"'..."
);
try
{
DBNNode
refreshed
=
node
.
refreshNode
(
monitor
,
DBN
Node
.
FORCE_REFRESH
);
DBNNode
refreshed
=
node
.
refreshNode
(
monitor
,
DBN
Event
.
FORCE_REFRESH
);
if
(
refreshed
!=
null
)
{
refreshedSet
.
add
(
refreshed
);
}
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/itemlist/ItemListControl.java
浏览文件 @
22faa186
...
...
@@ -112,7 +112,7 @@ public class ItemListControl extends NodeListControl
break
;
}
}
if
(
hasReorder
&&
false
)
{
if
(
hasReorder
)
{
contributionManager
.
add
(
new
Separator
());
contributionManager
.
add
(
ActionUtils
.
makeCommandContribution
(
workbenchSite
,
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/DatabaseEditorListener.java
浏览文件 @
22faa186
...
...
@@ -85,7 +85,7 @@ public class DatabaseEditorListener implements INavigatorListener
databaseEditor
.
refreshPart
(
event
,
event
.
getNodeChange
()
==
DBNEvent
.
NodeChange
.
REFRESH
&&
event
.
getSource
()
==
DBN
Node
.
FORCE_REFRESH
);
event
.
getSource
()
==
DBN
Event
.
FORCE_REFRESH
);
}
};
}
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/entity/EntityEditor.java
浏览文件 @
22faa186
...
...
@@ -43,6 +43,7 @@ import org.jkiss.dbeaver.model.exec.DBCException;
import
org.jkiss.dbeaver.model.impl.edit.DBECommandAdapter
;
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.runtime.*
;
import
org.jkiss.dbeaver.model.sql.SQLUtils
;
...
...
@@ -291,7 +292,7 @@ public class EntityEditor extends MultiPageDatabaseEditor
public
void
run
(
DBRProgressMonitor
monitor
)
throws
InvocationTargetException
,
InterruptedException
{
try
{
treeNode
.
refreshNode
(
monitor
,
DBN
Node
.
FORCE_REFRESH
);
treeNode
.
refreshNode
(
monitor
,
DBN
Event
.
FORCE_REFRESH
);
}
catch
(
DBException
e
)
{
throw
new
InvocationTargetException
(
e
);
}
...
...
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/DBPEvent.java
浏览文件 @
22faa186
...
...
@@ -33,6 +33,8 @@ public class DBPEvent
OBJECT_SELECT
,
}
public
static
final
Object
REORDER
=
new
Object
();
private
Action
action
;
private
DBSObject
object
;
...
...
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/sql/edit/SQLObjectEditor.java
浏览文件 @
22faa186
...
...
@@ -452,7 +452,7 @@ public abstract class SQLObjectEditor<OBJECT_TYPE extends DBSObject, CONTAINER_T
sibling
.
setOrdinalPosition
(
siblingPosition
+
1
);
}
}
else
{
if
(
siblingPosition
<
command
.
newPosition
&&
siblingPosition
>
command
.
oldPosition
)
{
if
(
siblingPosition
<
=
command
.
newPosition
&&
siblingPosition
>
command
.
oldPosition
)
{
sibling
.
setOrdinalPosition
(
siblingPosition
-
1
);
}
}
...
...
@@ -462,8 +462,11 @@ public abstract class SQLObjectEditor<OBJECT_TYPE extends DBSObject, CONTAINER_T
// Update target object position
((
DBPOrderedObject
)
object
).
setOrdinalPosition
(
command
.
newPosition
);
// Refresh object AND parent
DBUtils
.
fireObjectUpdate
(
object
);
DBUtils
.
fireObjectUpdate
(
object
.
getParentObject
());
final
DBSObject
parentObject
=
object
.
getParentObject
();
if
(
parentObject
!=
null
)
{
// We need to update order in navigator model
DBUtils
.
fireObjectUpdate
(
parentObject
,
DBPEvent
.
REORDER
);
}
}
@Override
...
...
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/navigator/DBNDatabaseNode.java
浏览文件 @
22faa186
...
...
@@ -186,7 +186,7 @@ public abstract class DBNDatabaseNode extends DBNNode implements DBSWrapper, DBP
if
(
childNodes
==
null
&&
hasChildren
(
false
))
{
if
(
this
.
initializeNode
(
monitor
,
null
))
{
final
List
<
DBNDatabaseNode
>
tmpList
=
new
ArrayList
<>();
loadChildren
(
monitor
,
getMeta
(),
null
,
tmpList
);
loadChildren
(
monitor
,
getMeta
(),
null
,
tmpList
,
true
);
if
(!
monitor
.
isCanceled
())
{
if
(
tmpList
.
isEmpty
())
{
this
.
childNodes
=
EMPTY_NODES
;
...
...
@@ -261,6 +261,13 @@ public abstract class DBNDatabaseNode extends DBNNode implements DBSWrapper, DBP
clearChildren
(
reflect
);
}
/**
* Reorder children nodes
*/
public
void
updateChildrenOrder
(
DBRProgressMonitor
monitor
,
boolean
reflect
)
throws
DBException
{
refreshNodeContent
(
monitor
,
getObject
(),
this
,
reflect
);
}
public
boolean
needsInitialization
()
{
return
childNodes
==
null
&&
hasChildren
(
false
);
...
...
@@ -309,7 +316,7 @@ public abstract class DBNDatabaseNode extends DBNNode implements DBSWrapper, DBP
}
return
null
;
}
else
{
refreshNodeContent
(
monitor
,
newObject
,
source
);
refreshNodeContent
(
monitor
,
newObject
,
source
,
true
);
return
this
;
}
}
else
{
...
...
@@ -322,7 +329,7 @@ public abstract class DBNDatabaseNode extends DBNNode implements DBSWrapper, DBP
}
}
private
void
refreshNodeContent
(
final
DBRProgressMonitor
monitor
,
DBSObject
newObject
,
Object
source
)
private
void
refreshNodeContent
(
final
DBRProgressMonitor
monitor
,
DBSObject
newObject
,
Object
source
,
boolean
reflect
)
throws
DBException
{
if
(
isDisposed
())
{
...
...
@@ -334,18 +341,17 @@ public abstract class DBNDatabaseNode extends DBNNode implements DBSWrapper, DBP
if
(
newObject
!=
getObject
())
{
reloadObject
(
monitor
,
newObject
);
}
model
.
fireNodeUpdate
(
source
,
this
,
DBNEvent
.
NodeChange
.
LOCK
);
if
(
reflect
)
model
.
fireNodeUpdate
(
source
,
this
,
DBNEvent
.
NodeChange
.
LOCK
);
this
.
reloadChildren
(
monitor
);
this
.
reloadChildren
(
monitor
,
reflect
);
model
.
fireNodeUpdate
(
source
,
this
,
DBNEvent
.
NodeChange
.
REFRESH
);
if
(
reflect
)
model
.
fireNodeUpdate
(
source
,
this
,
DBNEvent
.
NodeChange
.
REFRESH
);
}
finally
{
this
.
locked
=
false
;
// Unlock node
model
.
fireNodeUpdate
(
source
,
this
,
DBNEvent
.
NodeChange
.
UNLOCK
);
if
(
reflect
)
model
.
fireNodeUpdate
(
source
,
this
,
DBNEvent
.
NodeChange
.
UNLOCK
);
}
//new RefreshJob("Refresh node " + getNodeName()).schedule();
}
protected
void
clearChildren
(
boolean
reflect
)
...
...
@@ -366,7 +372,8 @@ public abstract class DBNDatabaseNode extends DBNNode implements DBSWrapper, DBP
DBRProgressMonitor
monitor
,
final
DBXTreeNode
meta
,
final
DBNDatabaseNode
[]
oldList
,
final
List
<
DBNDatabaseNode
>
toList
)
final
List
<
DBNDatabaseNode
>
toList
,
boolean
reflect
)
throws
DBException
{
if
(
monitor
.
isCanceled
())
{
...
...
@@ -387,11 +394,11 @@ public abstract class DBNDatabaseNode extends DBNNode implements DBSWrapper, DBP
monitor
.
subTask
(
ModelMessages
.
model_navigator_load_
+
" "
+
child
.
getChildrenType
(
getObject
().
getDataSource
()));
if
(
child
instanceof
DBXTreeItem
)
{
final
DBXTreeItem
item
=
(
DBXTreeItem
)
child
;
boolean
isLoaded
=
loadTreeItems
(
monitor
,
item
,
oldList
,
toList
);
boolean
isLoaded
=
loadTreeItems
(
monitor
,
item
,
oldList
,
toList
,
reflect
);
if
(!
isLoaded
&&
item
.
isOptional
()
&&
item
.
getRecursiveLink
()
==
null
)
{
// This may occur only if no child nodes was read
// Then we try to go on next DBX level
loadChildren
(
monitor
,
item
,
oldList
,
toList
);
loadChildren
(
monitor
,
item
,
oldList
,
toList
,
reflect
);
}
}
else
if
(
child
instanceof
DBXTreeFolder
)
{
if
(
oldList
==
null
)
{
...
...
@@ -401,7 +408,7 @@ public abstract class DBNDatabaseNode extends DBNNode implements DBSWrapper, DBP
}
else
{
for
(
DBNDatabaseNode
oldFolder
:
oldList
)
{
if
(
oldFolder
.
getMeta
()
==
child
)
{
oldFolder
.
reloadChildren
(
monitor
);
oldFolder
.
reloadChildren
(
monitor
,
reflect
);
toList
.
add
(
oldFolder
);
break
;
}
...
...
@@ -415,7 +422,7 @@ public abstract class DBNDatabaseNode extends DBNNode implements DBSWrapper, DBP
}
else
{
for
(
DBNDatabaseNode
oldObject
:
oldList
)
{
if
(
oldObject
.
getMeta
()
==
child
)
{
oldObject
.
reloadChildren
(
monitor
);
oldObject
.
reloadChildren
(
monitor
,
reflect
);
toList
.
add
(
oldObject
);
break
;
}
...
...
@@ -428,7 +435,7 @@ public abstract class DBNDatabaseNode extends DBNNode implements DBSWrapper, DBP
}
monitor
.
done
();
if
(
filtered
)
{
if
(
reflect
&&
filtered
)
{
getModel
().
fireNodeUpdate
(
this
,
this
,
DBNEvent
.
NodeChange
.
REFRESH
);
}
}
...
...
@@ -440,6 +447,7 @@ public abstract class DBNDatabaseNode extends DBNNode implements DBSWrapper, DBP
* @param meta items meta info
* @param oldList previous child items
* @param toList list ot add new items @return true on success
* @param reflect
* @return true on success
* @throws DBException on any DB error
*/
...
...
@@ -447,7 +455,8 @@ public abstract class DBNDatabaseNode extends DBNNode implements DBSWrapper, DBP
DBRProgressMonitor
monitor
,
DBXTreeItem
meta
,
final
DBNDatabaseNode
[]
oldList
,
final
List
<
DBNDatabaseNode
>
toList
)
final
List
<
DBNDatabaseNode
>
toList
,
boolean
reflect
)
throws
DBException
{
if
(
this
.
isDisposed
())
{
...
...
@@ -515,9 +524,11 @@ public abstract class DBNDatabaseNode extends DBNNode implements DBSWrapper, DBP
if
(
oldChild
.
hasChildren
(
false
)
&&
!
oldChild
.
needsInitialization
())
{
// Refresh children recursive
oldChild
.
reloadChildren
(
monitor
);
oldChild
.
reloadChildren
(
monitor
,
reflect
);
}
if
(
reflect
)
{
getModel
().
fireNodeUpdate
(
this
,
oldChild
,
DBNEvent
.
NodeChange
.
REFRESH
);
}
getModel
().
fireNodeUpdate
(
this
,
oldChild
,
DBNEvent
.
NodeChange
.
REFRESH
);
toList
.
add
(
oldChild
);
added
=
true
;
...
...
@@ -656,7 +667,7 @@ public abstract class DBNDatabaseNode extends DBNNode implements DBSWrapper, DBP
return
pathName
.
toString
();
}
protected
void
reloadChildren
(
DBRProgressMonitor
monitor
)
protected
void
reloadChildren
(
DBRProgressMonitor
monitor
,
boolean
reflect
)
throws
DBException
{
DBNDatabaseNode
[]
oldChildren
;
...
...
@@ -668,7 +679,7 @@ public abstract class DBNDatabaseNode extends DBNNode implements DBSWrapper, DBP
oldChildren
=
Arrays
.
copyOf
(
childNodes
,
childNodes
.
length
);
}
List
<
DBNDatabaseNode
>
newChildren
=
new
ArrayList
<>();
loadChildren
(
monitor
,
getMeta
(),
oldChildren
,
newChildren
);
loadChildren
(
monitor
,
getMeta
(),
oldChildren
,
newChildren
,
reflect
);
synchronized
(
this
)
{
childNodes
=
newChildren
.
toArray
(
new
DBNDatabaseNode
[
newChildren
.
size
()]);
}
...
...
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/navigator/DBNEvent.java
浏览文件 @
22faa186
...
...
@@ -23,6 +23,9 @@ import org.jkiss.code.NotNull;
* Navigator model event
*/
public
class
DBNEvent
{
public
static
final
Object
FORCE_REFRESH
=
new
Object
();
public
enum
Action
{
ADD
,
...
...
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/navigator/DBNNode.java
浏览文件 @
22faa186
...
...
@@ -39,8 +39,6 @@ public abstract class DBNNode implements DBPNamedObject, DBPPersistedObject, IAd
{
static
final
Log
log
=
Log
.
getLog
(
DBNNode
.
class
);
public
static
final
Object
FORCE_REFRESH
=
new
Object
();
public
enum
NodePathType
{
resource
,
folder
,
...
...
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/navigator/DBNProjectDatabases.java
浏览文件 @
22faa186
...
...
@@ -19,6 +19,7 @@ package org.jkiss.dbeaver.model.navigator;
import
org.eclipse.core.runtime.IStatus
;
import
org.eclipse.core.runtime.Status
;
import
org.jkiss.code.NotNull
;
import
org.jkiss.dbeaver.DBException
;
import
org.jkiss.dbeaver.Log
;
import
org.jkiss.dbeaver.model.*
;
import
org.jkiss.dbeaver.model.app.DBPDataSourceRegistry
;
...
...
@@ -26,6 +27,7 @@ import org.jkiss.dbeaver.model.messages.ModelMessages;
import
org.jkiss.dbeaver.model.meta.Property
;
import
org.jkiss.dbeaver.model.runtime.AbstractJob
;
import
org.jkiss.dbeaver.model.runtime.DBRProgressMonitor
;
import
org.jkiss.dbeaver.model.runtime.VoidProgressMonitor
;
import
org.jkiss.dbeaver.utils.GeneralUtils
;
import
java.util.*
;
...
...
@@ -301,14 +303,14 @@ public class DBNProjectDatabases extends DBNNode implements DBNContainer, DBPEve
case
OBJECT_UPDATE:
case
OBJECT_SELECT:
{
DBNNode
dbmNode
=
model
.
getNodeByObject
(
event
.
getObject
());
DBN
Database
Node
dbmNode
=
model
.
getNodeByObject
(
event
.
getObject
());
if
(
dbmNode
!=
null
)
{
DBNEvent
.
NodeChange
nodeChange
;
Boolean
enabled
=
event
.
getEnabled
();
Object
source
=
this
;
if
(
event
.
getAction
()
==
DBPEvent
.
Action
.
OBJECT_SELECT
)
{
nodeChange
=
DBNEvent
.
NodeChange
.
REFRESH
;
if
(
enabled
!=
null
&&
enabled
)
source
=
FORCE_REFRESH
;
if
(
enabled
!=
null
&&
enabled
)
source
=
DBNEvent
.
FORCE_REFRESH
;
}
else
{
if
(
enabled
!=
null
)
{
if
(
enabled
)
{
...
...
@@ -319,6 +321,13 @@ public class DBNProjectDatabases extends DBNNode implements DBNContainer, DBPEve
}
else
{
nodeChange
=
DBNEvent
.
NodeChange
.
REFRESH
;
}
if
(
event
.
getData
()
==
DBPEvent
.
REORDER
)
{
try
{
dbmNode
.
updateChildrenOrder
(
VoidProgressMonitor
.
INSTANCE
,
false
);
}
catch
(
DBException
e
)
{
log
.
error
(
e
);
}
}
}
model
.
fireNodeUpdate
(
source
,
...
...
@@ -329,10 +338,12 @@ public class DBNProjectDatabases extends DBNNode implements DBNContainer, DBPEve
// Clear disabled node
dbmNode
.
clearNode
(
false
);
}
else
{
if
(
event
.
getAction
()
==
DBPEvent
.
Action
.
OBJECT_UPDATE
&&
event
.
getObject
()
instanceof
DBPDataSourceContainer
)
{
// Force reorder
children
=
null
;
getModel
().
fireNodeEvent
(
new
DBNEvent
(
this
,
DBNEvent
.
Action
.
UPDATE
,
this
));
if
(
event
.
getAction
()
==
DBPEvent
.
Action
.
OBJECT_UPDATE
)
{
if
(
event
.
getObject
()
instanceof
DBPDataSourceContainer
)
{
// Force reorder
children
=
null
;
getModel
().
fireNodeEvent
(
new
DBNEvent
(
this
,
DBNEvent
.
Action
.
UPDATE
,
this
));
}
}
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录