Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
suliangchun
dbeaver
提交
92a5e620
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,发现更多精彩内容 >>
提交
92a5e620
编写于
4月 28, 2021
作者:
S
serge-rider
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Object list control: link cursor fix + boolean cursor fix
上级
06f32145
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
64 addition
and
27 deletion
+64
-27
plugins/org.jkiss.dbeaver.ui.navigator/src/org/jkiss/dbeaver/ui/controls/ViewerColumnController.java
...org/jkiss/dbeaver/ui/controls/ViewerColumnController.java
+1
-1
plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/controls/ObjectViewerRenderer.java
...c/org/jkiss/dbeaver/ui/controls/ObjectViewerRenderer.java
+63
-26
未找到文件。
plugins/org.jkiss.dbeaver.ui.navigator/src/org/jkiss/dbeaver/ui/controls/ViewerColumnController.java
浏览文件 @
92a5e620
...
...
@@ -95,7 +95,7 @@ public class ViewerColumnController<COLUMN, ELEMENT> {
control
.
addListener
(
SWT
.
MenuDetect
,
menuListener
);
}
cellRenderer
=
new
ObjectViewerRenderer
(
viewer
)
{
cellRenderer
=
new
ObjectViewerRenderer
(
viewer
,
false
)
{
@Nullable
@Override
public
Object
getCellValue
(
Object
element
,
int
columnIndex
)
{
...
...
plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/controls/ObjectViewerRenderer.java
浏览文件 @
92a5e620
...
...
@@ -55,8 +55,18 @@ public abstract class ObjectViewerRenderer {
private
final
Cursor
arrowCursor
;
private
final
Color
selectionBackgroundColor
;
// Cache
private
transient
int
booleanValueWith
;
public
ObjectViewerRenderer
(
ColumnViewer
viewer
)
{
this
(
viewer
,
true
);
}
protected
ObjectViewerRenderer
(
ColumnViewer
viewer
,
boolean
trackInput
)
{
itemsViewer
=
viewer
;
this
.
isTree
=
(
itemsViewer
instanceof
AbstractTreeViewer
);
...
...
@@ -69,22 +79,24 @@ public abstract class ObjectViewerRenderer {
itemsViewer
.
getControl
().
setCursor
(
arrowCursor
);
final
CellTrackListener
actionsListener
=
new
CellTrackListener
();
SelectionAdapter
selectionAdapter
=
new
SelectionAdapter
()
{
@Override
public
void
widgetSelected
(
SelectionEvent
e
)
{
selectedItem
=
lastClickItem
=
(
Item
)
e
.
item
;
if
(
trackInput
)
{
final
CellTrackListener
actionsListener
=
new
CellTrackListener
();
SelectionAdapter
selectionAdapter
=
new
SelectionAdapter
()
{
@Override
public
void
widgetSelected
(
SelectionEvent
e
)
{
selectedItem
=
lastClickItem
=
(
Item
)
e
.
item
;
}
};
if
(
isTree
)
{
getTree
().
addSelectionListener
(
selectionAdapter
);
}
else
{
getTable
().
addSelectionListener
(
selectionAdapter
);
}
};
if
(
isTree
)
{
getTree
().
addSelectionListener
(
selectionAdapter
);
}
else
{
getTable
().
addSelectionListener
(
selectionAdapter
);
itemsViewer
.
getControl
().
addMouseListener
(
new
MouseListener
());
itemsViewer
.
getControl
().
addMouseTrackListener
(
actionsListener
);
itemsViewer
.
getControl
().
addMouseMoveListener
(
actionsListener
);
itemsViewer
.
getControl
().
addKeyListener
(
actionsListener
);
}
itemsViewer
.
getControl
().
addMouseListener
(
new
MouseListener
());
itemsViewer
.
getControl
().
addMouseTrackListener
(
actionsListener
);
itemsViewer
.
getControl
().
addMouseMoveListener
(
actionsListener
);
itemsViewer
.
getControl
().
addKeyListener
(
actionsListener
);
}
public
boolean
isTree
()
...
...
@@ -154,19 +166,40 @@ public abstract class ObjectViewerRenderer {
private
Rectangle
getCellLinkBounds
(
Item
item
,
int
column
,
Object
cellValue
)
{
prepareLinkStyle
(
cellValue
,
null
);
Rectangle
itemBounds
;
if
(
isTree
)
{
itemBounds
=
((
TreeItem
)
item
).
getTextBounds
(
column
);
if
(
cellValue
instanceof
Boolean
&&
booleanValueWith
>
0
)
{
// Centered boolean - move x to center
Rectangle
itemBounds
;
if
(
isTree
)
{
itemBounds
=
((
TreeItem
)
item
).
getBounds
(
column
);
}
else
{
itemBounds
=
((
TableItem
)
item
).
getBounds
(
column
);
}
itemBounds
.
width
=
booleanValueWith
;
if
(
getBooleanEditStyle
()
==
ES_CENTERED
)
{
if
(
isTree
)
{
itemBounds
.
x
+=
(
getTree
().
getColumn
(
column
).
getWidth
()
-
booleanValueWith
)
/
2
;
}
else
{
itemBounds
.
x
+=
(
getTable
().
getColumn
(
column
).
getWidth
()
-
booleanValueWith
)
/
2
;
}
}
//itemBounds.x -= booleanValueWith / 4;
return
itemBounds
;
}
else
{
itemBounds
=
((
TableItem
)
item
).
getTextBounds
(
column
);
}
Rectangle
itemBounds
;
if
(
isTree
)
{
itemBounds
=
((
TreeItem
)
item
).
getTextBounds
(
column
);
}
else
{
itemBounds
=
((
TableItem
)
item
).
getTextBounds
(
column
);
}
Rectangle
linkBounds
=
linkLayout
.
getBounds
();
linkBounds
.
x
+=
itemBounds
.
x
;
linkBounds
.
y
+=
itemBounds
.
y
+
1
;
linkBounds
.
height
-=
2
;
return
linkBounds
;
Rectangle
linkBounds
=
linkLayout
.
getBounds
();
linkBounds
.
x
+=
itemBounds
.
x
;
linkBounds
.
y
+=
itemBounds
.
y
+
1
;
linkBounds
.
height
-=
2
;
return
linkBounds
;
}
}
//////////////////////////////////////////////////////
...
...
@@ -176,6 +209,7 @@ public abstract class ObjectViewerRenderer {
{
GC
gc
=
event
.
gc
;
if
(
Boolean
.
class
==
propDataType
||
Boolean
.
TYPE
==
propDataType
)
{
booleanValueWith
=
-
1
;
BooleanRenderer
.
Style
booleanStyle
=
BooleanRenderer
.
getDefaultStyle
();
Boolean
value
;
if
(
cellValue
==
null
)
{
...
...
@@ -191,6 +225,7 @@ public abstract class ObjectViewerRenderer {
// Paint only if item text is empty
String
strValue
=
booleanStyle
.
getText
(
value
);
Point
textExtent
=
gc
.
textExtent
(
strValue
);
booleanValueWith
=
textExtent
.
x
;
Rectangle
columnBounds
=
isTree
?
((
TreeItem
)
item
).
getBounds
(
columnIndex
)
:
((
TableItem
)
item
).
getBounds
(
columnIndex
);
//gc.setBackground(getControl().getBackground());
if
((
booleanStyle
==
BooleanRenderer
.
Style
.
CHECKBOX
||
booleanStyle
==
BooleanRenderer
.
Style
.
TEXTBOX
)
&&
getBooleanEditStyle
()
==
ES_CENTERED
)
{
...
...
@@ -205,6 +240,7 @@ public abstract class ObjectViewerRenderer {
// (boolValue ? ImageUtils.getImageCheckboxDisabledOn() : ImageUtils.getImageCheckboxDisabledOff());
Image
image
=
DBeaverIcons
.
getImage
(
booleanStyle
.
getImage
(
value
));
final
Rectangle
imageBounds
=
image
.
getBounds
();
booleanValueWith
=
imageBounds
.
width
;
Rectangle
columnBounds
=
isTree
?
((
TreeItem
)
item
).
getBounds
(
columnIndex
)
:
((
TableItem
)
item
).
getBounds
(
columnIndex
);
...
...
@@ -284,8 +320,9 @@ public abstract class ObjectViewerRenderer {
resetCursor
();
}
else
{
//tip = getCellString(cellValue);
boolean
ctrlPRessed
=
(
stateMask
&
SWT
.
CTRL
)
!=
0
||
(
stateMask
&
SWT
.
ALT
)
!=
0
;
if
(
ctrlPRessed
&&
isHyperlink
(
cellValue
)
&&
getCellLinkBounds
(
hoverItem
,
checkColumn
,
cellValue
).
contains
(
x
,
y
))
{
boolean
ctrlPressed
=
(
stateMask
&
SWT
.
CTRL
)
!=
0
||
(
stateMask
&
SWT
.
ALT
)
!=
0
;
boolean
isHyperlink
=
cellValue
instanceof
Boolean
||
(
ctrlPressed
&&
isHyperlink
(
cellValue
));
if
(
isHyperlink
&&
getCellLinkBounds
(
hoverItem
,
checkColumn
,
cellValue
).
contains
(
x
,
y
))
{
getItemsViewer
().
getControl
().
setCursor
(
linkCursor
);
}
else
{
resetCursor
();
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录