Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
suliangchun
dbeaver
提交
25a8fb64
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,发现更多精彩内容 >>
提交
25a8fb64
编写于
9月 20, 2020
作者:
S
serge-rider
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
#9718 Filter connected datasources
上级
e7d6ab63
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
148 addition
and
10 deletion
+148
-10
plugins/org.jkiss.dbeaver.ui.app.standalone/META-INF/MANIFEST.MF
.../org.jkiss.dbeaver.ui.app.standalone/META-INF/MANIFEST.MF
+2
-1
plugins/org.jkiss.dbeaver.ui.editors.data/META-INF/MANIFEST.MF
...ns/org.jkiss.dbeaver.ui.editors.data/META-INF/MANIFEST.MF
+1
-0
plugins/org.jkiss.dbeaver.ui.navigator/OSGI-INF/l10n/bundle.properties
...kiss.dbeaver.ui.navigator/OSGI-INF/l10n/bundle.properties
+2
-0
plugins/org.jkiss.dbeaver.ui.navigator/plugin.xml
plugins/org.jkiss.dbeaver.ui.navigator/plugin.xml
+17
-0
plugins/org.jkiss.dbeaver.ui.navigator/src/org/jkiss/dbeaver/ui/navigator/NavigatorCommands.java
...src/org/jkiss/dbeaver/ui/navigator/NavigatorCommands.java
+2
-0
plugins/org.jkiss.dbeaver.ui.navigator/src/org/jkiss/dbeaver/ui/navigator/actions/NavigatorHandlerConnectionFilter.java
...i/navigator/actions/NavigatorHandlerConnectionFilter.java
+71
-0
plugins/org.jkiss.dbeaver.ui.navigator/src/org/jkiss/dbeaver/ui/navigator/database/DatabaseNavigatorTree.java
.../dbeaver/ui/navigator/database/DatabaseNavigatorTree.java
+52
-8
plugins/org.jkiss.dbeaver.ui.navigator/src/org/jkiss/dbeaver/ui/navigator/database/NavigatorViewBase.java
...kiss/dbeaver/ui/navigator/database/NavigatorViewBase.java
+1
-1
未找到文件。
plugins/org.jkiss.dbeaver.ui.app.standalone/META-INF/MANIFEST.MF
浏览文件 @
25a8fb64
...
...
@@ -32,5 +32,6 @@ Require-Bundle: org.eclipse.osgi,
org.w3c.css.sac,
org.jkiss.dbeaver.model,
org.jkiss.dbeaver.core,
org.jkiss.dbeaver.ui
org.jkiss.dbeaver.ui,
org.jkiss.dbeaver.ui.editors.data
Automatic-Module-Name: org.jkiss.dbeaver.ui.app.standalone
plugins/org.jkiss.dbeaver.ui.editors.data/META-INF/MANIFEST.MF
浏览文件 @
25a8fb64
...
...
@@ -41,6 +41,7 @@ Export-Package: org.jkiss.dbeaver.registry.functions,
org.jkiss.dbeaver.ui.data.managers,
org.jkiss.dbeaver.ui.data.managers.stream,
org.jkiss.dbeaver.ui.data.registry,
org.jkiss.dbeaver.ui.editors.content,
org.jkiss.dbeaver.ui.editors.data,
org.jkiss.dbeaver.ui.editors.data.preferences
Automatic-Module-Name: org.jkiss.dbeaver.ui.editors.data
...
...
plugins/org.jkiss.dbeaver.ui.navigator/OSGI-INF/l10n/bundle.properties
浏览文件 @
25a8fb64
...
...
@@ -72,6 +72,8 @@ command.org.jkiss.dbeaver.core.object.create.name=Create Object
command.org.jkiss.dbeaver.core.object.create.description
=
Create new database object
command.org.jkiss.dbeaver.core.object.delete.name
=
Delete Object
command.org.jkiss.dbeaver.core.object.delete.description
=
Delete database object
command.org.jkiss.dbeaver.navigator.filter.connected.name
=
Show connected
command.org.jkiss.dbeaver.navigator.filter.connected.description
=
View all/connected data sources
command.org.jkiss.dbeaver.core.object.filter.config.name
=
Configure filter
command.org.jkiss.dbeaver.core.object.filter.config.description
=
Configure objects filter
command.org.jkiss.dbeaver.core.object.filter.clear.name
=
Clear filter
...
...
plugins/org.jkiss.dbeaver.ui.navigator/plugin.xml
浏览文件 @
25a8fb64
...
...
@@ -228,6 +228,7 @@
<command
id=
"org.jkiss.dbeaver.core.object.move.down"
name=
"%command.org.jkiss.dbeaver.core.object.move.down.name"
description=
"%command.org.jkiss.dbeaver.core.object.move.down.description"
categoryId=
"org.jkiss.dbeaver.core.database"
/>
<command
id=
"org.jkiss.dbeaver.core.object.goto"
name=
"%command.org.jkiss.dbeaver.core.object.goto.name"
description=
"%command.org.jkiss.dbeaver.core.object.goto.description"
categoryId=
"org.jkiss.dbeaver.core.database"
/>
<command
id=
"org.jkiss.dbeaver.navigator.filter.connected"
name=
"%command.org.jkiss.dbeaver.navigator.filter.connected.name"
description=
"%command.org.jkiss.dbeaver.navigator.filter.connected.description"
categoryId=
"org.jkiss.dbeaver.core.database"
/>
<command
id=
"org.jkiss.dbeaver.core.object.filter.config"
name=
"%command.org.jkiss.dbeaver.core.object.filter.config.name"
description=
"%command.org.jkiss.dbeaver.core.object.filter.config.description"
categoryId=
"org.jkiss.dbeaver.core.database"
/>
<command
id=
"org.jkiss.dbeaver.core.object.filter.add.exclude"
name=
"%command.org.jkiss.dbeaver.core.object.filter.add.exclude.name"
description=
"%command.org.jkiss.dbeaver.core.object.filter.add.exclude.description"
categoryId=
"org.jkiss.dbeaver.core.database"
/>
<command
id=
"org.jkiss.dbeaver.core.object.filter.add.include"
name=
"%command.org.jkiss.dbeaver.core.object.filter.add.include.name"
description=
"%command.org.jkiss.dbeaver.core.object.filter.add.include.description"
categoryId=
"org.jkiss.dbeaver.core.database"
/>
...
...
@@ -277,6 +278,7 @@
<image
commandId=
"org.jkiss.dbeaver.core.object.move.up"
icon=
"platform:/plugin/org.jkiss.dbeaver.ui/icons/misc/arrow_up.png"
/>
<image
commandId=
"org.jkiss.dbeaver.core.object.move.down"
icon=
"platform:/plugin/org.jkiss.dbeaver.ui/icons/misc/arrow_down.png"
/>
<image
commandId=
"org.jkiss.dbeaver.navigator.filter.connected"
icon=
"platform:/plugin/org.jkiss.dbeaver.ui/icons/misc/filter_apply.png"
/>
<image
commandId=
"org.jkiss.dbeaver.core.object.filter.config"
icon=
"platform:/plugin/org.jkiss.dbeaver.ui/icons/misc/filter.png"
/>
<image
commandId=
"org.jkiss.dbeaver.core.object.filter.add.exclude"
icon=
"platform:/plugin/org.jkiss.dbeaver.ui/icons/misc/filter_add.png"
/>
<image
commandId=
"org.jkiss.dbeaver.core.object.filter.add.include"
icon=
"platform:/plugin/org.jkiss.dbeaver.ui/icons/misc/filter_add.png"
/>
...
...
@@ -329,6 +331,8 @@
-->
</handler>
<handler
commandId=
"org.jkiss.dbeaver.navigator.filter.connected"
class=
"org.jkiss.dbeaver.ui.navigator.actions.NavigatorHandlerConnectionFilter"
>
</handler>
<handler
commandId=
"org.jkiss.dbeaver.core.object.filter.config"
class=
"org.jkiss.dbeaver.ui.navigator.actions.NavigatorHandlerFilterConfig"
>
<enabledWhen>
<with
variable=
"selection"
>
...
...
@@ -745,6 +749,19 @@
</extension>
<extension
point=
"org.eclipse.ui.menus"
>
<!-- Database navigator filter toolbar -->
<menuContribution
allPopups=
"false"
locationURI=
"toolbar:org.jkiss.dbeaver.navigator.filter.toolbar?after=additions"
>
<command
commandId=
"org.jkiss.dbeaver.navigator.filter.connected"
id=
"org.jkiss.dbeaver.navigator.connectionFilterMenu"
style=
"pulldown"
/>
</menuContribution>
<!-- Connection filter menu -->
<menuContribution
allPopups=
"false"
locationURI=
"menu:org.jkiss.dbeaver.navigator.connectionFilterMenu"
>
<!-- <dynamic id="org.jkiss.dbeaver.core.menu.newConnection.select" class="org.jkiss.dbeaver.ui.actions.datasource.NewConnectionDriverSelectorContributor"/>-->
<separator
name=
"connected_toggle"
visible=
"true"
/>
<command
commandId=
"org.jkiss.dbeaver.navigator.filter.connected"
/>
</menuContribution>
<!-- Tools toolbar -->
<menuContribution
allPopups=
"false"
locationURI=
"toolbar:org.eclipse.ui.main.toolbar?after=additions"
>
<toolbar
id=
"dbeaver-tools"
label=
"Database Tools Toolbar"
>
<separator
name=
"additions"
visible=
"false"
/>
...
...
plugins/org.jkiss.dbeaver.ui.navigator/src/org/jkiss/dbeaver/ui/navigator/NavigatorCommands.java
浏览文件 @
25a8fb64
...
...
@@ -39,6 +39,8 @@ public class NavigatorCommands {
public
static
final
String
CMD_CREATE_FOLDER_LINK
=
"org.jkiss.dbeaver.core.resource.link.folder"
;
public
static
final
String
CMD_CREATE_PROJECT
=
"org.jkiss.dbeaver.core.project.create"
;
public
static
final
String
CMD_FILTER_CONNECTIONS
=
"org.jkiss.dbeaver.navigator.filter.connected"
;
public
static
final
String
PARAM_OBJECT_TYPE
=
"org.jkiss.dbeaver.core.object.type"
;
public
static
final
String
PARAM_OBJECT_TYPE_NAME
=
"org.jkiss.dbeaver.core.object.typeName"
;
public
static
final
String
PARAM_OBJECT_TYPE_ICON
=
"org.jkiss.dbeaver.core.object.typeIcon"
;
...
...
plugins/org.jkiss.dbeaver.ui.navigator/src/org/jkiss/dbeaver/ui/navigator/actions/NavigatorHandlerConnectionFilter.java
0 → 100644
浏览文件 @
25a8fb64
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2020 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org.jkiss.dbeaver.ui.navigator.actions
;
import
org.eclipse.core.commands.AbstractHandler
;
import
org.eclipse.core.commands.ExecutionEvent
;
import
org.eclipse.core.commands.ExecutionException
;
import
org.eclipse.ui.IWorkbenchPart
;
import
org.eclipse.ui.IWorkbenchPartSite
;
import
org.eclipse.ui.commands.IElementUpdater
;
import
org.eclipse.ui.handlers.HandlerUtil
;
import
org.eclipse.ui.menus.UIElement
;
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.navigator.NavigatorCommands
;
import
org.jkiss.dbeaver.ui.navigator.database.DatabaseNavigatorTree
;
import
org.jkiss.dbeaver.ui.navigator.database.DatabaseNavigatorView
;
import
java.util.Map
;
public
class
NavigatorHandlerConnectionFilter
extends
AbstractHandler
implements
IElementUpdater
{
@Override
public
Object
execute
(
ExecutionEvent
event
)
throws
ExecutionException
{
IWorkbenchPart
activePart
=
HandlerUtil
.
getActivePart
(
event
);
if
(
activePart
instanceof
DatabaseNavigatorView
)
{
DatabaseNavigatorTree
navigatorTree
=
((
DatabaseNavigatorView
)
activePart
).
getNavigatorTree
();
navigatorTree
.
setFilterShowConnected
(!
navigatorTree
.
isFilterShowConnected
());
navigatorTree
.
getViewer
().
getControl
().
setRedraw
(
false
);
try
{
navigatorTree
.
getViewer
().
refresh
();
}
finally
{
navigatorTree
.
getViewer
().
getControl
().
setRedraw
(
true
);
}
}
ActionUtils
.
fireCommandRefresh
(
NavigatorCommands
.
CMD_FILTER_CONNECTIONS
);
return
null
;
}
@Override
public
void
updateElement
(
UIElement
element
,
Map
parameters
)
{
IWorkbenchPartSite
partSite
=
UIUtils
.
getWorkbenchPartSite
(
element
.
getServiceLocator
());
if
(
partSite
!=
null
&&
partSite
.
getPart
()
instanceof
DatabaseNavigatorView
)
{
DatabaseNavigatorTree
navigatorTree
=
((
DatabaseNavigatorView
)
partSite
.
getPart
()).
getNavigatorTree
();
element
.
setIcon
(
DBeaverIcons
.
getImageDescriptor
(
navigatorTree
.
isFilterShowConnected
()
?
UIIcon
.
FILTER_RESET
:
UIIcon
.
FILTER_APPLY
));
String
actionName
=
navigatorTree
.
isFilterShowConnected
()
?
"Show all"
:
"Show connected only"
;
element
.
setText
(
actionName
);
element
.
setTooltip
(
actionName
);
}
}
}
\ No newline at end of file
plugins/org.jkiss.dbeaver.ui.navigator/src/org/jkiss/dbeaver/ui/navigator/database/DatabaseNavigatorTree.java
浏览文件 @
25a8fb64
...
...
@@ -19,6 +19,8 @@ package org.jkiss.dbeaver.ui.navigator.database;
import
org.eclipse.core.runtime.IProgressMonitor
;
import
org.eclipse.core.runtime.IStatus
;
import
org.eclipse.core.runtime.Status
;
import
org.eclipse.jface.action.Separator
;
import
org.eclipse.jface.action.ToolBarManager
;
import
org.eclipse.jface.viewers.*
;
import
org.eclipse.swt.SWT
;
import
org.eclipse.swt.custom.TreeEditor
;
...
...
@@ -30,10 +32,13 @@ import org.eclipse.swt.graphics.Rectangle;
import
org.eclipse.swt.layout.FillLayout
;
import
org.eclipse.swt.layout.GridLayout
;
import
org.eclipse.swt.widgets.*
;
import
org.eclipse.ui.IWorkbenchActionConstants
;
import
org.eclipse.ui.IWorkbenchCommandConstants
;
import
org.eclipse.ui.IWorkbenchPart
;
import
org.eclipse.ui.IWorkbenchWindow
;
import
org.eclipse.ui.dialogs.FilteredTree
;
import
org.eclipse.ui.dialogs.PatternFilter
;
import
org.eclipse.ui.menus.IMenuService
;
import
org.eclipse.ui.progress.WorkbenchJob
;
import
org.jkiss.code.NotNull
;
import
org.jkiss.code.Nullable
;
...
...
@@ -63,6 +68,7 @@ public class DatabaseNavigatorTree extends Composite implements INavigatorListen
private
static
final
Log
log
=
Log
.
getLog
(
DatabaseNavigatorTree
.
class
);
static
final
String
TREE_DATA_STAT_MAX_SIZE
=
"nav.stat.maxSize"
;
private
static
final
String
FILTER_TOOLBAR_CONTRIBUTION_ID
=
"toolbar:org.jkiss.dbeaver.navigator.filter.toolbar"
;
//$NON-NLS-1$
private
TreeViewer
treeViewer
;
private
DBNModel
model
;
...
...
@@ -73,8 +79,9 @@ public class DatabaseNavigatorTree extends Composite implements INavigatorListen
private
boolean
inlineRenameEnabled
=
false
;
private
INavigatorItemRenderer
itemRenderer
;
public
DatabaseNavigatorTree
(
Composite
parent
,
DBNNode
rootNode
,
int
style
)
{
private
boolean
filterShowConnected
=
false
;
public
DatabaseNavigatorTree
(
Composite
parent
,
DBNNode
rootNode
,
int
style
)
{
this
(
parent
,
rootNode
,
style
,
false
);
}
...
...
@@ -133,6 +140,14 @@ public class DatabaseNavigatorTree extends Composite implements INavigatorListen
}
}
public
boolean
isFilterShowConnected
()
{
return
filterShowConnected
;
}
public
void
setFilterShowConnected
(
boolean
filterShowConnected
)
{
this
.
filterShowConnected
=
filterShowConnected
;
}
public
ILabelDecorator
getLabelDecorator
()
{
return
((
DatabaseNavigatorLabelProvider
)
treeViewer
.
getLabelProvider
()).
getLabelDecorator
();
}
...
...
@@ -210,7 +225,7 @@ public class DatabaseNavigatorTree extends Composite implements INavigatorListen
return
checkboxTreeViewer
;
}
else
{
if
(
navigatorFilter
!=
null
)
{
CustomFilteredTree
filteredTree
=
new
CustomFilteredTree
(
t
his
,
t
reeStyle
);
CustomFilteredTree
filteredTree
=
new
CustomFilteredTree
(
treeStyle
);
filterControl
=
filteredTree
.
getFilterControl
();
return
filteredTree
.
getViewer
();
}
else
{
...
...
@@ -582,7 +597,7 @@ public class DatabaseNavigatorTree extends Composite implements INavigatorListen
////////////////////////////////////////////////////////////////////////////
// Filtered tree
private
static
class
TreeFilter
extends
PatternFilter
{
private
class
TreeFilter
extends
PatternFilter
{
private
final
INavigatorFilter
filter
;
private
boolean
hasPattern
=
false
;
...
...
@@ -609,7 +624,10 @@ public class DatabaseNavigatorTree extends Composite implements INavigatorListen
}
public
boolean
isElementVisible
(
Viewer
viewer
,
Object
element
){
if
(
hasPattern
&&
filter
.
filterFolders
()
&&
element
instanceof
DBNLocalFolder
)
{
if
(
filterShowConnected
&&
element
instanceof
DBNDataSource
&&
!((
DBNDataSource
)
element
).
getDataSourceContainer
().
isConnected
())
{
return
false
;
}
if
((
filterShowConnected
||
(
hasPattern
&&
filter
.
filterFolders
()))
&&
element
instanceof
DBNLocalFolder
)
{
return
hasVisibleConnections
(
viewer
,
(
DBNLocalFolder
)
element
);
}
if
(
filter
.
select
(
element
))
{
...
...
@@ -629,6 +647,10 @@ public class DatabaseNavigatorTree extends Composite implements INavigatorListen
return
true
;
}
}
else
if
(
isLeafMatch
(
viewer
,
child
))
{
if
(
filterShowConnected
&&
child
instanceof
DBNDataSource
&&
!((
DBNDataSource
)
child
).
getDataSourceContainer
().
isConnected
())
{
continue
;
}
return
true
;
}
}
...
...
@@ -637,9 +659,10 @@ public class DatabaseNavigatorTree extends Composite implements INavigatorListen
}
private
static
class
CustomFilteredTree
extends
FilteredTree
{
CustomFilteredTree
(
DatabaseNavigatorTree
navigatorTree
,
int
treeStyle
)
{
super
(
navigatorTree
,
treeStyle
,
new
TreeFilter
(
navigatorTree
.
navigatorFilter
),
true
);
private
class
CustomFilteredTree
extends
FilteredTree
{
CustomFilteredTree
(
int
treeStyle
)
{
super
(
DatabaseNavigatorTree
.
this
,
treeStyle
,
new
TreeFilter
(
DatabaseNavigatorTree
.
this
.
navigatorFilter
),
true
);
try
{
if
(
treeViewer
!=
null
)
{
treeViewer
.
setUseHashlookup
(
true
);
...
...
@@ -654,6 +677,27 @@ public class DatabaseNavigatorTree extends Composite implements INavigatorListen
UIUtils
.
addDefaultEditActionsSupport
(
UIUtils
.
getActiveWorkbenchWindow
(),
getFilterControl
());
}
@Override
protected
Composite
createFilterControls
(
Composite
parent
)
{
super
.
createFilterControls
(
parent
);
((
GridLayout
)
parent
.
getLayout
()).
numColumns
++;
IWorkbenchWindow
workbenchWindow
=
UIUtils
.
getActiveWorkbenchWindow
();
ToolBarManager
filterManager
=
new
ToolBarManager
();
filterManager
.
add
(
new
Separator
(
IWorkbenchActionConstants
.
MB_ADDITIONS
));
final
IMenuService
menuService
=
workbenchWindow
.
getService
(
IMenuService
.
class
);
if
(
menuService
!=
null
)
{
menuService
.
populateContributionManager
(
filterManager
,
FILTER_TOOLBAR_CONTRIBUTION_ID
);
}
filterManager
.
createControl
(
parent
);
parent
.
addDisposeListener
(
e
->
filterManager
.
dispose
());
return
parent
;
}
@Override
protected
TreeViewer
doCreateTreeViewer
(
Composite
parent
,
int
style
)
{
return
((
DatabaseNavigatorTree
)
getParent
()).
doCreateNavigatorTreeViewer
(
parent
,
style
);
...
...
plugins/org.jkiss.dbeaver.ui.navigator/src/org/jkiss/dbeaver/ui/navigator/database/NavigatorViewBase.java
浏览文件 @
25a8fb64
...
...
@@ -70,7 +70,7 @@ public abstract class NavigatorViewBase extends ViewPart implements INavigatorMo
return
DBWorkbench
.
getPlatform
().
getNavigatorModel
();
}
p
rotected
DatabaseNavigatorTree
getNavigatorTree
()
p
ublic
DatabaseNavigatorTree
getNavigatorTree
()
{
return
tree
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录