Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
suliangchun
dbeaver
提交
d53fd9c3
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,发现更多精彩内容 >>
提交
d53fd9c3
编写于
1月 16, 2019
作者:
S
Serge Rider
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
#4121 Tabbed driver viewer. Get rid of nebula gallery.
上级
536c8478
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
48 addition
and
436 deletion
+48
-436
features/org.jkiss.dbeaver.core.feature/feature.xml
features/org.jkiss.dbeaver.core.feature/feature.xml
+0
-1
plugins/org.jkiss.dbeaver.core/META-INF/MANIFEST.MF
plugins/org.jkiss.dbeaver.core/META-INF/MANIFEST.MF
+0
-1
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverGalleryItemRenderer.java
.../dbeaver/ui/dialogs/driver/DriverGalleryItemRenderer.java
+0
-213
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverGalleryViewer.java
.../jkiss/dbeaver/ui/dialogs/driver/DriverGalleryViewer.java
+0
-218
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverTabbedList.java
...org/jkiss/dbeaver/ui/dialogs/driver/DriverTabbedList.java
+46
-2
plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/controls/finder/viewer/AdvancedListViewer.java
...dbeaver/ui/controls/finder/viewer/AdvancedListViewer.java
+2
-1
未找到文件。
features/org.jkiss.dbeaver.core.feature/feature.xml
浏览文件 @
d53fd9c3
...
...
@@ -39,7 +39,6 @@
<plugin
id=
"com.github.jsqlparser"
download-size=
"0"
install-size=
"0"
version=
"0.0.0"
unpack=
"false"
/>
<plugin
id=
"org.apache.commons.jexl"
download-size=
"0"
install-size=
"0"
version=
"0.0.0"
unpack=
"false"
/>
<plugin
id=
"net.sf.opencsv"
download-size=
"0"
install-size=
"0"
version=
"0.0.0"
unpack=
"false"
/>
<plugin
id=
"org.eclipse.nebula.widgets.gallery"
download-size=
"0"
install-size=
"0"
version=
"0.0.0"
unpack=
"false"
/>
<plugin
id=
"org.jkiss.dbeaver.model"
download-size=
"0"
install-size=
"0"
version=
"0.0.0"
unpack=
"false"
/>
<plugin
id=
"org.jkiss.dbeaver.core"
download-size=
"0"
install-size=
"0"
version=
"0.0.0"
unpack=
"false"
/>
...
...
plugins/org.jkiss.dbeaver.core/META-INF/MANIFEST.MF
浏览文件 @
d53fd9c3
...
...
@@ -66,7 +66,6 @@ Require-Bundle: org.eclipse.core.runtime,
org.eclipse.e4.ui.services,
org.eclipse.e4.ui.workbench.swt,
org.eclipse.e4.ui.workbench.renderers.swt,
org.eclipse.nebula.widgets.gallery,
org.jkiss.dbeaver.model;visibility:=reexport,
org.jkiss.dbeaver.ui;visibility:=reexport,
org.jkiss.dbeaver.ui.editors.base;visibility:=reexport,
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverGalleryItemRenderer.java
已删除
100644 → 0
浏览文件 @
536c8478
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2019 Serge Rider (serge@jkiss.org)
*
* 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.dialogs.driver
;
import
org.eclipse.nebula.widgets.gallery.AbstractGalleryItemRenderer
;
import
org.eclipse.nebula.widgets.gallery.Gallery
;
import
org.eclipse.nebula.widgets.gallery.GalleryItem
;
import
org.eclipse.nebula.widgets.gallery.RendererHelper
;
import
org.eclipse.swt.SWT
;
import
org.eclipse.swt.graphics.*
;
import
org.eclipse.swt.widgets.Composite
;
import
org.eclipse.swt.widgets.Display
;
import
org.jkiss.dbeaver.ui.UIUtils
;
import
org.jkiss.utils.CommonUtils
;
/**
* DriverGalleryItemRenderer
*/
public
class
DriverGalleryItemRenderer
extends
AbstractGalleryItemRenderer
{
public
static
final
int
IMAGE_DRAW_WIDTH
=
50
;
public
static
final
int
ITEM_MARGIN
=
5
;
private
Color
selectionForegroundColor
;
private
Color
selectionBackgroundColor
;
private
Color
foregroundColor
,
backgroundColor
;
private
boolean
showRoundedSelectionCorners
=
true
;
private
int
selectionRadius
=
10
;
// Vars used during drawing (optimization)
private
boolean
drawBackground
=
false
;
private
Color
drawBackgroundColor
=
null
;
private
Color
drawForegroundColor
=
null
;
private
Font
normalFont
,
boldFont
;
public
DriverGalleryItemRenderer
(
Composite
panel
)
{
// Set defaults
foregroundColor
=
Display
.
getDefault
().
getSystemColor
(
SWT
.
COLOR_LIST_FOREGROUND
);
backgroundColor
=
Display
.
getDefault
().
getSystemColor
(
SWT
.
COLOR_LIST_BACKGROUND
);
selectionForegroundColor
=
Display
.
getDefault
().
getSystemColor
(
SWT
.
COLOR_LIST_SELECTION_TEXT
);
selectionBackgroundColor
=
Display
.
getDefault
().
getSystemColor
(
SWT
.
COLOR_LIST_SELECTION
);
normalFont
=
panel
.
getFont
();
boldFont
=
UIUtils
.
makeBoldFont
(
normalFont
);
}
public
void
draw
(
GC
gc
,
GalleryItem
item
,
int
index
,
int
x
,
int
y
,
int
width
,
int
height
)
{
final
Image
itemImage
=
item
.
getImage
();
drawForegroundColor
=
getForeground
(
item
);
// Set up the GC
gc
.
setFont
(
getFont
(
item
));
// Create some room for the label.
int
useableHeight
=
height
;
String
itemText
=
item
.
getText
();
String
itemDescription
=
item
.
getText
(
1
);
String
itemCategory
=
item
.
getText
(
2
);
// Draw background (rounded rectangles)
// Checks if background has to be drawn
drawBackground
=
selected
;
drawBackgroundColor
=
null
;
if
(!
drawBackground
&&
item
.
getBackground
(
true
)
!=
null
)
{
drawBackgroundColor
=
getBackground
(
item
);
if
(!
RendererHelper
.
isColorsEquals
(
drawBackgroundColor
,
gallery
.
getBackground
()))
{
drawBackground
=
true
;
}
}
if
(
drawBackground
)
{
// Set colors
if
(
selected
)
{
gc
.
setBackground
(
selectionBackgroundColor
);
gc
.
setForeground
(
selectionBackgroundColor
);
}
else
if
(
drawBackgroundColor
!=
null
)
{
gc
.
setBackground
(
drawBackgroundColor
);
}
// Draw
if
(
showRoundedSelectionCorners
)
{
gc
.
fillRoundRectangle
(
x
,
y
,
width
,
useableHeight
,
selectionRadius
,
selectionRadius
);
}
else
{
gc
.
fillRectangle
(
x
,
y
,
width
,
height
);
}
}
if
(
false
)
{
// Draw rectangle
gc
.
setForeground
(
drawForegroundColor
);
gc
.
drawRoundRectangle
(
x
+
1
,
y
+
1
,
width
-
2
,
useableHeight
-
2
,
selectionRadius
,
selectionRadius
);
}
// Draw image
if
(
itemImage
!=
null
)
{
Rectangle
itemImageBounds
=
itemImage
.
getBounds
();
int
imageWidth
=
itemImageBounds
.
width
;
int
imageHeight
=
itemImageBounds
.
height
;
int
imageDrawWidth
=
IMAGE_DRAW_WIDTH
;
int
imageDrawHeight
=
IMAGE_DRAW_WIDTH
;
gc
.
drawImage
(
itemImage
,
0
,
0
,
imageWidth
,
imageHeight
,
x
+
ITEM_MARGIN
,
y
+
ITEM_MARGIN
,
imageDrawWidth
,
imageDrawHeight
);
}
// Draw label
if
(
itemText
!=
null
&&
!
EMPTY_STRING
.
equals
(
itemText
))
{
// Set colors
if
(
selected
)
{
// Selected : use selection colors.
gc
.
setForeground
(
selectionForegroundColor
);
gc
.
setBackground
(
selectionBackgroundColor
);
}
else
{
// Not selected, use item values or defaults.
// Background
if
(
drawBackgroundColor
!=
null
)
{
gc
.
setBackground
(
drawBackgroundColor
);
}
else
{
gc
.
setBackground
(
backgroundColor
);
}
// Foreground
if
(
drawForegroundColor
!=
null
)
{
gc
.
setForeground
(
drawForegroundColor
);
}
else
{
gc
.
setForeground
(
foregroundColor
);
}
}
// Create label
String
text
=
RendererHelper
.
createLabel
(
itemText
,
gc
,
width
-
IMAGE_DRAW_WIDTH
-
ITEM_MARGIN
);
// Center text
//int textWidth = gc.textExtent(text).x;
//int textxShift = RendererHelper.getShift(width, textWidth);
// Draw
int
textY
=
y
+
ITEM_MARGIN
;
int
textX
=
x
+
IMAGE_DRAW_WIDTH
+
ITEM_MARGIN
*
2
;
gc
.
setFont
(
boldFont
);
gc
.
drawText
(
text
,
textX
,
textY
,
true
);
gc
.
setFont
(
normalFont
);
textY
+=
gc
.
getFontMetrics
().
getHeight
()
+
ITEM_MARGIN
;
if
(!
CommonUtils
.
isEmpty
(
itemCategory
))
{
gc
.
drawText
(
itemCategory
,
textX
,
textY
,
true
);
}
textY
+=
gc
.
getFontMetrics
().
getHeight
();
if
(!
CommonUtils
.
isEmpty
(
itemDescription
))
{
gc
.
drawText
(
itemDescription
,
textX
,
textY
,
true
);
}
}
}
/**
* Returns the font used for drawing all item labels or <tt>null</tt> if
* system font is used.
*
* @return the font
* @see {@link Gallery#getFont()} for setting font for a specific
* GalleryItem.
*/
public
Font
getFont
()
{
if
(
gallery
!=
null
)
{
return
gallery
.
getFont
();
}
return
null
;
}
/**
* Set the font for drawing all item labels or <tt>null</tt> to use system
* font.
*
* @param font the font to set
* @see {@link Gallery#setFont(Font)} for setting font for a specific
* GalleryItem.
*/
public
void
setFont
(
Font
font
)
{
if
(
gallery
!=
null
)
{
gallery
.
setFont
(
font
);
}
}
public
void
dispose
()
{
if
(
boldFont
!=
null
)
{
UIUtils
.
dispose
(
boldFont
);
boldFont
=
null
;
}
}
}
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverGalleryViewer.java
已删除
100644 → 0
浏览文件 @
536c8478
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2019 Serge Rider (serge@jkiss.org)
*
* 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.dialogs.driver
;
import
org.eclipse.jface.viewers.*
;
import
org.eclipse.nebula.jface.galleryviewer.FlatTreeContentProvider
;
import
org.eclipse.nebula.jface.galleryviewer.GalleryTreeViewer
;
import
org.eclipse.nebula.widgets.gallery.DefaultGalleryGroupRenderer
;
import
org.eclipse.nebula.widgets.gallery.Gallery
;
import
org.eclipse.nebula.widgets.gallery.GalleryItem
;
import
org.eclipse.swt.SWT
;
import
org.eclipse.swt.events.*
;
import
org.eclipse.swt.layout.GridData
;
import
org.eclipse.swt.widgets.Composite
;
import
org.eclipse.swt.widgets.Control
;
import
org.jkiss.dbeaver.model.DBIcon
;
import
org.jkiss.dbeaver.model.DBPDataSourceContainer
;
import
org.jkiss.dbeaver.model.DBPNamedObject
;
import
org.jkiss.dbeaver.model.connection.DBPDriver
;
import
org.jkiss.dbeaver.registry.DataSourceProviderDescriptor
;
import
org.jkiss.dbeaver.registry.DataSourceRegistry
;
import
org.jkiss.dbeaver.registry.driver.DriverUtils
;
import
org.jkiss.dbeaver.ui.DBeaverIcons
;
import
org.jkiss.dbeaver.ui.controls.ListContentProvider
;
import
org.jkiss.dbeaver.ui.editors.TextEditorUtils
;
import
org.jkiss.utils.CommonUtils
;
import
java.util.*
;
/**
* DriverGalleryViewer
*
* @author Serge Rider
*/
public
class
DriverGalleryViewer
extends
GalleryTreeViewer
{
public
static
final
String
GROUP_ALL
=
"all"
;
public
static
final
String
GROUP_RECENT
=
"recent"
;
//private final Gallery gallery;
private
final
List
<
DBPDriver
>
allDrivers
=
new
ArrayList
<>();;
public
DriverGalleryViewer
(
Composite
parent
,
Object
site
,
List
<
DataSourceProviderDescriptor
>
providers
,
boolean
expandRecent
)
{
super
(
new
Gallery
(
parent
,
SWT
.
V_SCROLL
|
SWT
.
SINGLE
|
SWT
.
BORDER
));
setContentProvider
(
new
FlatTreeContentProvider
(
new
ListContentProvider
()));
gallery
.
setBackground
(
TextEditorUtils
.
getDefaultTextBackground
());
gallery
.
setForeground
(
TextEditorUtils
.
getDefaultTextForeground
());
gallery
.
setLayoutData
(
new
GridData
(
GridData
.
FILL_BOTH
));
gallery
.
addSelectionListener
(
new
SelectionListener
()
{
@Override
public
void
widgetSelected
(
SelectionEvent
e
)
{
if
(
site
instanceof
ISelectionChangedListener
)
{
((
ISelectionChangedListener
)
site
).
selectionChanged
(
new
SelectionChangedEvent
(
DriverGalleryViewer
.
this
,
getSelection
()));
}
}
@Override
public
void
widgetDefaultSelected
(
SelectionEvent
e
)
{
if
(
site
instanceof
IDoubleClickListener
)
{
((
IDoubleClickListener
)
site
).
doubleClick
(
new
DoubleClickEvent
(
DriverGalleryViewer
.
this
,
getSelection
()));
}
}
});
gallery
.
addFocusListener
(
new
FocusAdapter
()
{
@Override
public
void
focusGained
(
FocusEvent
e
)
{
GalleryItem
[]
items
=
gallery
.
getSelection
();
if
(
items
.
length
==
0
)
{
items
=
gallery
.
getItems
();
}
if
(
items
.
length
>
0
)
{
if
(
items
[
0
].
getItemCount
()
>
0
)
{
items
[
0
]
=
items
[
0
].
getItem
(
0
);
}
gallery
.
setSelection
(
new
GalleryItem
[]{
items
[
0
]
});
}
}
});
// Renderers
DefaultGalleryGroupRenderer
groupRenderer
=
new
DefaultGalleryGroupRenderer
();
groupRenderer
.
setMaxImageHeight
(
16
);
groupRenderer
.
setMaxImageWidth
(
16
);
groupRenderer
.
setItemHeight
(
60
);
groupRenderer
.
setItemWidth
(
200
);
groupRenderer
.
setTitleBackground
(
gallery
.
getDisplay
().
getSystemColor
(
SWT
.
COLOR_TITLE_BACKGROUND
));
gallery
.
setGroupRenderer
(
groupRenderer
);
//gallery.setGroupRenderer(new NoGroupRenderer());
DriverGalleryItemRenderer
ir
=
new
DriverGalleryItemRenderer
(
parent
);
gallery
.
setItemRenderer
(
ir
);
for
(
DataSourceProviderDescriptor
dpd
:
providers
)
{
allDrivers
.
addAll
(
dpd
.
getEnabledDrivers
());
}
allDrivers
.
sort
(
Comparator
.
comparing
(
DBPNamedObject:
:
getName
));
createDriverGallery
();
}
private
void
createDriverGallery
()
{
int
oldItemCount
=
gallery
.
getItemCount
();
gallery
.
removeAll
();
GalleryItem
groupRecent
=
new
GalleryItem
(
gallery
,
SWT
.
NONE
);
groupRecent
.
setText
(
"Recent drivers"
);
//$NON-NLS-1$
groupRecent
.
setImage
(
DBeaverIcons
.
getImage
(
DBIcon
.
TREE_SCHEMA
));
groupRecent
.
setData
(
GROUP_RECENT
);
groupRecent
.
setExpanded
(
true
);
GalleryItem
groupAll
=
new
GalleryItem
(
gallery
,
SWT
.
NONE
);
groupAll
.
setText
(
"All drivers"
);
//$NON-NLS-1$
groupAll
.
setImage
(
DBeaverIcons
.
getImage
(
DBIcon
.
TREE_DATABASE
));
groupAll
.
setData
(
GROUP_ALL
);
groupAll
.
setExpanded
(
true
);
fillDriverGroup
(
groupRecent
);
if
(
groupRecent
.
getItemCount
()
==
0
)
{
groupRecent
.
dispose
();
}
fillDriverGroup
(
groupAll
);
if
(
oldItemCount
==
0
)
{
gallery
.
setFocus
();
gallery
.
setSelection
(
new
GalleryItem
[]{
gallery
.
getItem
(
0
)});
}
}
private
void
fillDriverGroup
(
GalleryItem
group
)
{
List
<
DBPDataSourceContainer
>
allDataSources
=
DataSourceRegistry
.
getAllDataSources
();
ViewerFilter
[]
filters
=
getFilters
();
List
<
DBPDriver
>
drivers
;
if
(
GROUP_ALL
.
equals
(
group
.
getData
()))
{
drivers
=
this
.
allDrivers
;
}
else
if
(
GROUP_RECENT
.
equals
(
group
.
getData
()))
{
drivers
=
DriverUtils
.
getRecentDrivers
(
allDrivers
,
6
);
}
else
{
drivers
=
Collections
.
emptyList
();
}
for
(
DBPDriver
driver
:
drivers
)
{
boolean
isVisible
=
true
;
for
(
ViewerFilter
filter
:
filters
)
{
if
(!
filter
.
select
(
this
,
null
,
driver
))
{
isVisible
=
false
;
break
;
}
}
if
(!
isVisible
)
{
continue
;
}
GalleryItem
item
=
new
GalleryItem
(
group
,
SWT
.
NONE
);
item
.
setImage
(
DBeaverIcons
.
getImage
(
driver
.
getIconBig
()));
item
.
setText
(
driver
.
getName
());
//$NON-NLS-1$
item
.
setText
(
0
,
driver
.
getName
());
//$NON-NLS-1$
List
<
DBPDataSourceContainer
>
usedBy
=
DriverUtils
.
getUsedBy
(
driver
,
allDataSources
);
if
(!
usedBy
.
isEmpty
())
{
item
.
setText
(
1
,
"Connections: "
+
usedBy
.
size
());
}
if
(!
CommonUtils
.
isEmpty
(
driver
.
getCategory
()))
{
item
.
setText
(
2
,
driver
.
getCategory
());
}
item
.
setData
(
driver
);
}
}
public
Control
getControl
()
{
return
getGallery
();
}
@Override
public
Object
getInput
()
{
return
allDrivers
;
}
public
Gallery
getGallery
()
{
return
gallery
;
}
public
void
addTraverseListener
(
TraverseListener
traverseListener
)
{
if
(
traverseListener
!=
null
)
{
gallery
.
addTraverseListener
(
traverseListener
);
}
}
/*
@Override
public ISelection getSelection() {
GalleryItem[] itemSelection = gallery.getSelection();
Object[] selectedDrivers = new Object[itemSelection.length];
for (int i = 0; i < itemSelection.length; i++) {
selectedDrivers[i] = itemSelection[i].getData();
}
return new StructuredSelection(selectedDrivers);
}
*/
@Override
public
void
refresh
(
boolean
updateLabels
)
{
createDriverGallery
();
}
}
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverTabbedList.java
浏览文件 @
d53fd9c3
...
...
@@ -16,27 +16,48 @@
*/
package
org.jkiss.dbeaver.ui.dialogs.driver
;
import
org.eclipse.jface.viewers.IStructuredContentProvider
;
import
org.eclipse.jface.viewers.LabelProvider
;
import
org.eclipse.swt.SWT
;
import
org.eclipse.swt.graphics.Image
;
import
org.eclipse.swt.widgets.Composite
;
import
org.jkiss.dbeaver.Log
;
import
org.jkiss.dbeaver.model.DBIcon
;
import
org.jkiss.dbeaver.model.connection.DBPDriver
;
import
org.jkiss.dbeaver.registry.driver.DriverUtils
;
import
org.jkiss.dbeaver.ui.DBeaverIcons
;
import
org.jkiss.dbeaver.ui.controls.finder.viewer.AdvancedListViewer
;
import
org.jkiss.dbeaver.ui.controls.folders.ITabbedFolder
;
import
org.jkiss.dbeaver.ui.controls.folders.TabbedFolderComposite
;
import
org.jkiss.dbeaver.ui.controls.folders.TabbedFolderInfo
;
import
java.util.List
;
/**
* DriverTabbedList
*/
public
class
DriverTabbedList
extends
Composite
{
private
static
final
Log
log
=
Log
.
getLog
(
DriverTabbedList
.
class
);
// Tabs:
// - Recent
// - Cloud
// - Embedded
// - All
public
DriverTabbedList
(
Composite
parent
,
int
style
)
{
super
(
parent
,
style
);
List
<
DBPDriver
>
allDrivers
=
DriverUtils
.
getAllDrivers
();
allDrivers
.
sort
((
o1
,
o2
)
->
{
return
o1
.
getName
().
compareToIgnoreCase
(
o2
.
getName
());
});
List
<
DBPDriver
>
recentDrivers
=
DriverUtils
.
getRecentDrivers
(
allDrivers
,
6
);
TabbedFolderComposite
folderComposite
=
new
TabbedFolderComposite
(
this
,
SWT
.
NONE
);
TabbedFolderInfo
[]
folders
=
new
TabbedFolderInfo
[]
{
new
TabbedFolderInfo
(
"recent"
,
"Recent"
,
DBIcon
.
TREE_DATABASE
,
"Recent drivers"
,
false
,
new
DriverListFolder
(
recentDrivers
)),
new
TabbedFolderInfo
(
"all"
,
"All"
,
DBIcon
.
TREE_DATABASE
,
"All drivers"
,
false
,
new
DriverListFolder
(
allDrivers
))
};
folderComposite
.
setFolders
(
getClass
().
getSimpleName
(),
folders
);
}
...
...
@@ -44,14 +65,37 @@ public class DriverTabbedList extends Composite {
private
static
class
DriverListFolder
implements
ITabbedFolder
{
private
AdvancedListViewer
viewer
;
private
List
<
DBPDriver
>
drivers
;
private
boolean
activated
;
DriverListFolder
(
List
<
DBPDriver
>
drivers
)
{
this
.
drivers
=
drivers
;
}
@Override
public
void
createControl
(
Composite
parent
)
{
viewer
=
new
AdvancedListViewer
(
parent
,
SWT
.
NONE
);
viewer
.
setContentProvider
((
IStructuredContentProvider
)
inputElement
->
drivers
.
toArray
());
viewer
.
setLabelProvider
(
new
LabelProvider
()
{
@Override
public
Image
getImage
(
Object
element
)
{
return
DBeaverIcons
.
getImage
(((
DBPDriver
)
element
).
getIconBig
());
}
@Override
public
String
getText
(
Object
element
)
{
return
((
DBPDriver
)
element
).
getName
();
}
});
}
@Override
public
void
aboutToBeShown
()
{
if
(!
activated
)
{
viewer
.
setInput
(
drivers
);
activated
=
true
;
}
}
@Override
...
...
plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/controls/finder/viewer/AdvancedListViewer.java
浏览文件 @
d53fd9c3
...
...
@@ -107,7 +107,7 @@ public class AdvancedListViewer extends StructuredViewer {
@Override
public
void
reveal
(
Object
element
)
{
//control.showControl();
}
@Override
...
...
@@ -120,4 +120,5 @@ public class AdvancedListViewer extends StructuredViewer {
super
.
inputChanged
(
input
,
oldInput
);
internalRefresh
(
getInput
());
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录