Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
suliangchun
dbeaver
提交
385b87ac
D
dbeaver
项目概览
suliangchun
/
dbeaver
与 Fork 源项目一致
从无法访问的项目Fork
通知
3
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,发现更多精彩内容 >>
提交
385b87ac
编写于
10月 11, 2019
作者:
S
Serge Rider
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
#6810 Result tabs DnD support + panel tabs DnD.
上级
092d7647
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
198 addition
and
6 deletion
+198
-6
plugins/org.jkiss.dbeaver.ui.dashboard/src/org/jkiss/dbeaver/ui/dashboard/control/DashboardList.java
...org/jkiss/dbeaver/ui/dashboard/control/DashboardList.java
+4
-2
plugins/org.jkiss.dbeaver.ui.editors.data/src/org/jkiss/dbeaver/ui/controls/lightgrid/LightGrid.java
...rc/org/jkiss/dbeaver/ui/controls/lightgrid/LightGrid.java
+4
-0
plugins/org.jkiss.dbeaver.ui.editors.data/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetViewer.java
.../jkiss/dbeaver/ui/controls/resultset/ResultSetViewer.java
+2
-0
plugins/org.jkiss.dbeaver.ui.editors.sql/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditor.java
...s.sql/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditor.java
+2
-4
plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/controls/TabFolderReorder.java
...i/src/org/jkiss/dbeaver/ui/controls/TabFolderReorder.java
+186
-0
未找到文件。
plugins/org.jkiss.dbeaver.ui.dashboard/src/org/jkiss/dbeaver/ui/dashboard/control/DashboardList.java
浏览文件 @
385b87ac
...
...
@@ -21,9 +21,7 @@ import org.eclipse.swt.SWT;
import
org.eclipse.swt.dnd.*
;
import
org.eclipse.swt.events.*
;
import
org.eclipse.swt.graphics.*
;
import
org.eclipse.swt.layout.FillLayout
;
import
org.eclipse.swt.layout.GridLayout
;
import
org.eclipse.swt.layout.RowLayout
;
import
org.eclipse.swt.widgets.Composite
;
import
org.eclipse.swt.widgets.Control
;
import
org.eclipse.swt.widgets.Display
;
...
...
@@ -300,6 +298,10 @@ public class DashboardList extends Composite implements DashboardGroupContainer
event
.
doit
=
false
;
}
else
{
Rectangle
columnBounds
=
selectedItem
.
getBounds
();
if
(
dragImage
!=
null
)
{
dragImage
.
dispose
();
dragImage
=
null
;
}
GC
gc
=
new
GC
(
DashboardList
.
this
);
dragImage
=
new
Image
(
Display
.
getCurrent
(),
columnBounds
.
width
,
columnBounds
.
height
);
gc
.
copyArea
(
...
...
plugins/org.jkiss.dbeaver.ui.editors.data/src/org/jkiss/dbeaver/ui/controls/lightgrid/LightGrid.java
浏览文件 @
385b87ac
...
...
@@ -4482,6 +4482,10 @@ public abstract class LightGrid extends Canvas {
event
.
doit
=
false
;
return
;
}
if
(
dragImage
!=
null
)
{
dragImage
.
dispose
();
dragImage
=
null
;
}
GC
gc
=
new
GC
(
LightGrid
.
this
);
dragImage
=
new
Image
(
Display
.
getCurrent
(),
columnBounds
.
width
,
columnBounds
.
height
);
gc
.
copyArea
(
...
...
plugins/org.jkiss.dbeaver.ui.editors.data/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetViewer.java
浏览文件 @
385b87ac
...
...
@@ -81,6 +81,7 @@ import org.jkiss.dbeaver.tools.transfer.registry.DataTransferNodeDescriptor;
import
org.jkiss.dbeaver.tools.transfer.registry.DataTransferProcessorDescriptor
;
import
org.jkiss.dbeaver.tools.transfer.registry.DataTransferRegistry
;
import
org.jkiss.dbeaver.ui.*
;
import
org.jkiss.dbeaver.ui.controls.TabFolderReorder
;
import
org.jkiss.dbeaver.ui.controls.ToolbarSeparatorContribution
;
import
org.jkiss.dbeaver.ui.controls.VerticalButton
;
import
org.jkiss.dbeaver.ui.controls.VerticalFolder
;
...
...
@@ -274,6 +275,7 @@ public class ResultSetViewer extends Viewer
if
(
supportsPanels
)
{
this
.
panelFolder
=
new
CTabFolder
(
this
.
viewerSash
,
SWT
.
FLAT
|
SWT
.
TOP
);
CSSUtils
.
setCSSClass
(
panelFolder
,
DBStyles
.
COLORED_BY_CONNECTION_TYPE
);
new
TabFolderReorder
(
panelFolder
);
this
.
panelFolder
.
marginWidth
=
0
;
this
.
panelFolder
.
marginHeight
=
0
;
this
.
panelFolder
.
setMinimizeVisible
(
true
);
...
...
plugins/org.jkiss.dbeaver.ui.editors.sql/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditor.java
浏览文件 @
385b87ac
...
...
@@ -89,10 +89,7 @@ import org.jkiss.dbeaver.tools.transfer.IDataTransferProducer;
import
org.jkiss.dbeaver.tools.transfer.database.DatabaseTransferProducer
;
import
org.jkiss.dbeaver.tools.transfer.ui.wizard.DataTransferWizard
;
import
org.jkiss.dbeaver.ui.*
;
import
org.jkiss.dbeaver.ui.controls.CustomSashForm
;
import
org.jkiss.dbeaver.ui.controls.StyledTextFindReplaceTarget
;
import
org.jkiss.dbeaver.ui.controls.VerticalButton
;
import
org.jkiss.dbeaver.ui.controls.VerticalFolder
;
import
org.jkiss.dbeaver.ui.controls.*
;
import
org.jkiss.dbeaver.ui.controls.resultset.*
;
import
org.jkiss.dbeaver.ui.controls.resultset.internal.ResultSetMessages
;
import
org.jkiss.dbeaver.ui.css.CSSUtils
;
...
...
@@ -874,6 +871,7 @@ public class SQLEditor extends SQLEditorBase implements
{
resultTabs
=
new
CTabFolder
(
resultsSash
,
SWT
.
TOP
|
SWT
.
FLAT
);
CSSUtils
.
setCSSClass
(
resultTabs
,
DBStyles
.
COLORED_BY_CONNECTION_TYPE
);
new
TabFolderReorder
(
resultTabs
);
resultTabs
.
setLayoutData
(
new
GridData
(
GridData
.
FILL_BOTH
));
resultTabs
.
addSelectionListener
(
new
SelectionAdapter
()
{
@Override
...
...
plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/controls/TabFolderReorder.java
0 → 100644
浏览文件 @
385b87ac
/*
* 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.controls
;
import
org.eclipse.swt.custom.CTabFolder
;
import
org.eclipse.swt.custom.CTabItem
;
import
org.eclipse.swt.dnd.*
;
import
org.eclipse.swt.graphics.GC
;
import
org.eclipse.swt.graphics.Image
;
import
org.eclipse.swt.graphics.Point
;
import
org.eclipse.swt.graphics.Rectangle
;
import
org.eclipse.swt.widgets.Control
;
import
org.eclipse.swt.widgets.Display
;
import
org.jkiss.dbeaver.ui.dnd.LocalObjectTransfer
;
/**
* TabFolderReorder
*/
public
class
TabFolderReorder
{
private
CTabItem
dragItem
;
public
TabFolderReorder
(
CTabFolder
folder
)
{
final
DragSource
source
=
new
DragSource
(
folder
,
DND
.
DROP_MOVE
);
source
.
setTransfer
(
TabTransfer
.
INSTANCE
);
source
.
addDragListener
(
new
DragSourceListener
()
{
private
Image
dragImage
;
@Override
public
void
dragStart
(
DragSourceEvent
event
)
{
Point
point
=
folder
.
toControl
(
folder
.
getDisplay
().
getCursorLocation
());
dragItem
=
folder
.
getItem
(
point
);
if
(
dragItem
==
null
)
{
return
;
}
Rectangle
columnBounds
=
dragItem
.
getBounds
();
if
(
dragImage
!=
null
)
{
dragImage
.
dispose
();
dragImage
=
null
;
}
GC
gc
=
new
GC
(
folder
);
dragImage
=
new
Image
(
Display
.
getCurrent
(),
columnBounds
.
width
,
columnBounds
.
height
);
gc
.
copyArea
(
dragImage
,
columnBounds
.
x
,
columnBounds
.
y
);
event
.
image
=
dragImage
;
gc
.
dispose
();
}
@Override
public
void
dragSetData
(
DragSourceEvent
event
)
{
event
.
data
=
dragItem
;
}
@Override
public
void
dragFinished
(
DragSourceEvent
event
)
{
if
(
dragImage
!=
null
)
{
dragImage
.
dispose
();
dragImage
=
null
;
}
}
});
DropTarget
dropTarget
=
new
DropTarget
(
folder
,
DND
.
DROP_MOVE
);
dropTarget
.
setTransfer
(
TabTransfer
.
INSTANCE
,
TextTransfer
.
getInstance
());
dropTarget
.
addDropListener
(
new
DropTargetListener
()
{
@Override
public
void
dragEnter
(
DropTargetEvent
event
)
{
handleDragEvent
(
event
);
}
@Override
public
void
dragLeave
(
DropTargetEvent
event
)
{
handleDragEvent
(
event
);
}
@Override
public
void
dragOperationChanged
(
DropTargetEvent
event
)
{
handleDragEvent
(
event
);
}
@Override
public
void
dragOver
(
DropTargetEvent
event
)
{
handleDragEvent
(
event
);
}
@Override
public
void
drop
(
DropTargetEvent
event
)
{
handleDragEvent
(
event
);
if
(
event
.
detail
==
DND
.
DROP_MOVE
)
{
moveTabs
(
folder
,
event
);
}
}
@Override
public
void
dropAccept
(
DropTargetEvent
event
)
{
handleDragEvent
(
event
);
}
private
void
handleDragEvent
(
DropTargetEvent
event
)
{
if
(!
isDropSupported
(
folder
,
event
))
{
event
.
detail
=
DND
.
DROP_NONE
;
}
else
{
event
.
detail
=
DND
.
DROP_MOVE
;
}
event
.
feedback
=
DND
.
FEEDBACK_SELECT
;
}
private
boolean
isDropSupported
(
CTabFolder
folder
,
DropTargetEvent
event
)
{
if
(
dragItem
==
null
)
{
return
false
;
}
Point
point
=
folder
.
toControl
(
folder
.
getDisplay
().
getCursorLocation
());
return
folder
.
getItem
(
new
Point
(
point
.
x
,
point
.
y
))
!=
null
;
}
});
}
private
void
moveTabs
(
CTabFolder
folder
,
DropTargetEvent
event
)
{
Point
point
=
folder
.
toControl
(
folder
.
getDisplay
().
getCursorLocation
());
CTabItem
item
=
folder
.
getItem
(
new
Point
(
point
.
x
,
point
.
y
));
if
(
item
!=
null
&&
dragItem
!=
null
)
{
Control
dragControl
=
dragItem
.
getControl
();
String
dragText
=
dragItem
.
getText
();
Image
dragImage
=
dragItem
.
getImage
();
Object
dragData
=
dragItem
.
getData
();
dragItem
.
setText
(
item
.
getText
());
dragItem
.
setImage
(
item
.
getImage
());
dragItem
.
setData
(
item
.
getData
());
dragItem
.
setControl
(
item
.
getControl
());
item
.
setText
(
dragText
);
item
.
setImage
(
dragImage
);
item
.
setData
(
dragData
);
item
.
setControl
(
dragControl
);
folder
.
setSelection
(
item
);
}
}
public
final
static
class
TabTransfer
extends
LocalObjectTransfer
<
CTabItem
>
{
public
static
final
TabTransfer
INSTANCE
=
new
TabTransfer
();
private
static
final
String
TYPE_NAME
=
"TabTransfer.CTabItem Transfer"
+
System
.
currentTimeMillis
()
+
":"
+
INSTANCE
.
hashCode
();
//$NON-NLS-1$
private
static
final
int
TYPEID
=
registerType
(
TYPE_NAME
);
private
TabTransfer
()
{
}
@Override
protected
int
[]
getTypeIds
()
{
return
new
int
[]
{
TYPEID
};
}
@Override
protected
String
[]
getTypeNames
()
{
return
new
String
[]
{
TYPE_NAME
};
}
}
}
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录