Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
suliangchun
dbeaver
提交
31c63e76
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,发现更多精彩内容 >>
提交
31c63e76
编写于
3月 21, 2015
作者:
J
jurgen
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
RSV refactoring.
Presentations support
上级
c3f2c949
变更
27
展开全部
隐藏空白更改
内联
并排
Showing
27 changed file
with
1942 addition
and
1529 deletion
+1942
-1529
plugins/org.jkiss.dbeaver.core/plugin.properties
plugins/org.jkiss.dbeaver.core/plugin.properties
+2
-2
plugins/org.jkiss.dbeaver.core/plugin.xml
plugins/org.jkiss.dbeaver.core/plugin.xml
+7
-12
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/CollectionElementData.java
.../dbeaver/ui/controls/resultset/CollectionElementData.java
+8
-1
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/FilterValueEditDialog.java
.../dbeaver/ui/controls/resultset/FilterValueEditDialog.java
+1
-1
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/IResultSetController.java
...s/dbeaver/ui/controls/resultset/IResultSetController.java
+37
-0
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/IResultSetPresentation.java
...dbeaver/ui/controls/resultset/IResultSetPresentation.java
+44
-4
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/IStatefulControl.java
...jkiss/dbeaver/ui/controls/resultset/IStatefulControl.java
+38
-0
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetCommandHandler.java
...beaver/ui/controls/resultset/ResultSetCommandHandler.java
+15
-14
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetCopySpecialHandler.java
...er/ui/controls/resultset/ResultSetCopySpecialHandler.java
+2
-2
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetDataPumpJob.java
...s/dbeaver/ui/controls/resultset/ResultSetDataPumpJob.java
+7
-7
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetModel.java
...g/jkiss/dbeaver/ui/controls/resultset/ResultSetModel.java
+2
-2
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetPersister.java
...iss/dbeaver/ui/controls/resultset/ResultSetPersister.java
+3
-3
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetPropertyTester.java
...beaver/ui/controls/resultset/ResultSetPropertyTester.java
+3
-3
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetRow.java
...org/jkiss/dbeaver/ui/controls/resultset/ResultSetRow.java
+4
-4
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetUtils.java
...g/jkiss/dbeaver/ui/controls/resultset/ResultSetUtils.java
+40
-4
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetValueController.java
...eaver/ui/controls/resultset/ResultSetValueController.java
+213
-0
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetViewer.java
.../jkiss/dbeaver/ui/controls/resultset/ResultSetViewer.java
+131
-1422
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/spreadsheet/Spreadsheet.java
...beaver/ui/controls/resultset/spreadsheet/Spreadsheet.java
+18
-12
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/spreadsheet/SpreadsheetCommandHandler.java
...rols/resultset/spreadsheet/SpreadsheetCommandHandler.java
+6
-0
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/spreadsheet/SpreadsheetPresentation.java
...ntrols/resultset/spreadsheet/SpreadsheetPresentation.java
+1246
-21
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/spreadsheet/SpreadsheetTogglePreviewHandler.java
...esultset/spreadsheet/SpreadsheetTogglePreviewHandler.java
+7
-3
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/spreadsheet/ThemeConstants.java
...ver/ui/controls/resultset/spreadsheet/ThemeConstants.java
+1
-1
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/spreadsheet/ViewValuePanel.java
...ver/ui/controls/resultset/spreadsheet/ViewValuePanel.java
+1
-1
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/view/EmptyPresentation.java
...dbeaver/ui/controls/resultset/view/EmptyPresentation.java
+50
-2
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/view/StatisticsPresentation.java
...er/ui/controls/resultset/view/StatisticsPresentation.java
+50
-2
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/data/DatabaseDataEditor.java
...org/jkiss/dbeaver/ui/editors/data/DatabaseDataEditor.java
+1
-1
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditor.java
....core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditor.java
+5
-5
未找到文件。
plugins/org.jkiss.dbeaver.core/plugin.properties
浏览文件 @
31c63e76
...
...
@@ -128,8 +128,8 @@ command.org.jkiss.dbeaver.core.compare.objects.description=Compare database obje
command.org.jkiss.dbeaver.core.resultset.toggleMode.name
=
Toggle Grid/Record view
command.org.jkiss.dbeaver.core.resultset.toggleMode.description
=
Toggle Result Set Grid/Record View
command.org.jkiss.dbeaver.core.resultset.togglePreview.name
=
Toggle value view panel
command.org.jkiss.dbeaver.core.resultset.togglePreview.description
=
Toggle result set cell value view panel
command.org.jkiss.dbeaver.core.resultset.
grid.
togglePreview.name
=
Toggle value view panel
command.org.jkiss.dbeaver.core.resultset.
grid.
togglePreview.description
=
Toggle result set cell value view panel
command.org.jkiss.dbeaver.core.resultset.row.first.name
=
First row
command.org.jkiss.dbeaver.core.resultset.row.first.description
=
Move to first row
command.org.jkiss.dbeaver.core.resultset.row.previous.name
=
Previous row
...
...
plugins/org.jkiss.dbeaver.core/plugin.xml
浏览文件 @
31c63e76
...
...
@@ -222,7 +222,6 @@
<command
id=
"org.jkiss.dbeaver.core.compare.objects"
name=
"%command.org.jkiss.dbeaver.core.compare.objects.name"
description=
"%command.org.jkiss.dbeaver.core.compare.objects.description"
categoryId=
"org.jkiss.dbeaver.core.util"
/>
<command
id=
"org.jkiss.dbeaver.core.resultset.toggleMode"
name=
"%command.org.jkiss.dbeaver.core.resultset.toggleMode.name"
description=
"%command.org.jkiss.dbeaver.core.resultset.toggleMode.description"
categoryId=
"org.jkiss.dbeaver.core.rs"
/>
<command
id=
"org.jkiss.dbeaver.core.resultset.togglePreview"
name=
"%command.org.jkiss.dbeaver.core.resultset.togglePreview.name"
description=
"%command.org.jkiss.dbeaver.core.resultset.togglePreview.description"
categoryId=
"org.jkiss.dbeaver.core.rs"
/>
<command
id=
"org.jkiss.dbeaver.core.resultset.row.first"
name=
"%command.org.jkiss.dbeaver.core.resultset.row.first.name"
description=
"%command.org.jkiss.dbeaver.core.resultset.row.first.description"
categoryId=
"org.jkiss.dbeaver.core.rs"
/>
<command
id=
"org.jkiss.dbeaver.core.resultset.row.previous"
name=
"%command.org.jkiss.dbeaver.core.resultset.row.previous.name"
description=
"%command.org.jkiss.dbeaver.core.resultset.row.previous.description"
categoryId=
"org.jkiss.dbeaver.core.rs"
/>
<command
id=
"org.jkiss.dbeaver.core.resultset.row.next"
name=
"%command.org.jkiss.dbeaver.core.resultset.row.next.name"
description=
"%command.org.jkiss.dbeaver.core.resultset.row.next.description"
categoryId=
"org.jkiss.dbeaver.core.rs"
/>
...
...
@@ -234,6 +233,7 @@
<command
id=
"org.jkiss.dbeaver.core.resultset.row.delete"
name=
"%command.org.jkiss.dbeaver.core.resultset.row.delete.name"
description=
"%command.org.jkiss.dbeaver.core.resultset.row.delete.description"
categoryId=
"org.jkiss.dbeaver.core.rs"
/>
<command
id=
"org.jkiss.dbeaver.core.resultset.applyChanges"
name=
"%command.org.jkiss.dbeaver.core.resultset.applyChanges.name"
description=
"%command.org.jkiss.dbeaver.core.resultset.applyChanges.description"
categoryId=
"org.jkiss.dbeaver.core.rs"
/>
<command
id=
"org.jkiss.dbeaver.core.resultset.rejectChanges"
name=
"%command.org.jkiss.dbeaver.core.resultset.rejectChanges.name"
description=
"%command.org.jkiss.dbeaver.core.resultset.rejectChanges.description"
categoryId=
"org.jkiss.dbeaver.core.rs"
/>
<command
id=
"org.jkiss.dbeaver.core.resultset.grid.togglePreview"
name=
"%command.org.jkiss.dbeaver.core.resultset.grid.togglePreview.name"
description=
"%command.org.jkiss.dbeaver.core.resultset.grid.togglePreview.description"
categoryId=
"org.jkiss.dbeaver.core.rs"
/>
<command
id=
"org.jkiss.dbeaver.core.edit.copy.special"
name=
"%command.org.jkiss.dbeaver.core.edit.copy.special.name"
description=
"%command.org.jkiss.dbeaver.core.edit.copy.special.description"
categoryId=
"org.jkiss.dbeaver.core.util"
/>
...
...
@@ -298,7 +298,7 @@
<image
commandId=
"org.jkiss.dbeaver.core.resultset.applyChanges"
icon=
"icons/sql/accept.png"
/>
<image
commandId=
"org.jkiss.dbeaver.core.resultset.rejectChanges"
icon=
"icons/sql/cancel.png"
/>
<image
commandId=
"org.jkiss.dbeaver.core.resultset.toggleMode"
icon=
"icons/sql/grid.png"
/>
<image
commandId=
"org.jkiss.dbeaver.core.resultset.togglePreview"
icon=
"icons/sql/details.png"
/>
<image
commandId=
"org.jkiss.dbeaver.core.resultset.
grid.
togglePreview"
icon=
"icons/sql/details.png"
/>
<image
commandId=
"org.jkiss.dbeaver.core.qm.filter"
icon=
"icons/misc/filter.png"
/>
<image
commandId=
"org.jkiss.dbeaver.core.qm.clear"
icon=
"IMG_ETOOL_CLEAR"
/>
...
...
@@ -950,7 +950,9 @@
<activeWhen><reference
definitionId=
"org.jkiss.dbeaver.core.ui.spreadsheet.control"
/></activeWhen>
</handler>
<handler
commandId=
"org.jkiss.dbeaver.core.resultset.grid.togglePreview"
class=
"org.jkiss.dbeaver.ui.controls.resultset.spreadsheet.SpreadsheetTogglePreviewHandler"
>
<activeWhen><reference
definitionId=
"org.jkiss.dbeaver.core.ui.resultset.part"
/></activeWhen>
</handler>
<handler
commandId=
"org.eclipse.ui.edit.selectAll"
class=
"org.jkiss.dbeaver.ui.controls.resultset.spreadsheet.SpreadsheetCommandHandler"
>
<activeWhen><reference
definitionId=
"org.jkiss.dbeaver.core.ui.spreadsheet.control"
/></activeWhen>
<enabledWhen>
...
...
@@ -959,6 +961,7 @@
</with>
</enabledWhen>
</handler>
<handler
commandId=
"org.eclipse.ui.edit.copy"
class=
"org.jkiss.dbeaver.ui.controls.resultset.ResultSetCommandHandler"
>
<activeWhen><reference
definitionId=
"org.jkiss.dbeaver.core.ui.spreadsheet.control"
/></activeWhen>
<enabledWhen>
...
...
@@ -988,14 +991,6 @@
</with>
</enabledWhen>
</handler>
<handler
commandId=
"org.jkiss.dbeaver.core.resultset.togglePreview"
class=
"org.jkiss.dbeaver.ui.controls.resultset.ResultSetModeTogglePreviewHandler"
>
<activeWhen><reference
definitionId=
"org.jkiss.dbeaver.core.ui.resultset.part"
/></activeWhen>
<enabledWhen>
<with
variable=
"activePart"
>
<test
property=
"org.jkiss.dbeaver.core.resultset.canToggle"
/>
</with>
</enabledWhen>
</handler>
<handler
commandId=
"org.jkiss.dbeaver.core.resultset.row.first"
class=
"org.jkiss.dbeaver.ui.controls.resultset.ResultSetCommandHandler"
>
<activeWhen><reference
definitionId=
"org.jkiss.dbeaver.core.ui.resultset.part"
/></activeWhen>
<enabledWhen>
...
...
@@ -1645,7 +1640,6 @@
<extension
point=
"org.eclipse.ui.bindings"
>
<key
commandId=
"org.jkiss.dbeaver.core.resultset.toggleMode"
schemeId=
"org.eclipse.ui.defaultAcceleratorConfiguration"
sequence=
"TAB"
/>
<key
commandId=
"org.jkiss.dbeaver.core.resultset.togglePreview"
schemeId=
"org.eclipse.ui.defaultAcceleratorConfiguration"
sequence=
"F7"
/>
<key
commandId=
"org.jkiss.dbeaver.core.resultset.row.first"
schemeId=
"org.eclipse.ui.defaultAcceleratorConfiguration"
sequence=
"CTRL+SHIFT+ARROW_LEFT"
/>
<key
commandId=
"org.jkiss.dbeaver.core.resultset.row.previous"
schemeId=
"org.eclipse.ui.defaultAcceleratorConfiguration"
sequence=
"CTRL+ARROW_LEFT"
/>
<key
commandId=
"org.jkiss.dbeaver.core.resultset.row.next"
schemeId=
"org.eclipse.ui.defaultAcceleratorConfiguration"
sequence=
"CTRL+ARROW_RIGHT"
/>
...
...
@@ -1657,6 +1651,7 @@
<key
commandId=
"org.jkiss.dbeaver.core.resultset.row.delete"
schemeId=
"org.eclipse.ui.defaultAcceleratorConfiguration"
sequence=
"ALT+DELETE"
/>
<key
commandId=
"org.jkiss.dbeaver.core.resultset.applyChanges"
schemeId=
"org.eclipse.ui.defaultAcceleratorConfiguration"
sequence=
"CTRL+ALT+S"
/>
<key
commandId=
"org.jkiss.dbeaver.core.resultset.rejectChanges"
schemeId=
"org.eclipse.ui.defaultAcceleratorConfiguration"
sequence=
"CTRL+ALT+R"
/>
<key
commandId=
"org.jkiss.dbeaver.core.resultset.grid.togglePreview"
schemeId=
"org.eclipse.ui.defaultAcceleratorConfiguration"
sequence=
"F7"
/>
<key
commandId=
"org.jkiss.dbeaver.core.edit.copy.special"
schemeId=
"org.eclipse.ui.defaultAcceleratorConfiguration"
sequence=
"CTRL+SHIFT+C"
/>
<key
commandId=
"org.jkiss.dbeaver.core.navigator.bookmark.add"
schemeId=
"org.eclipse.ui.defaultAcceleratorConfiguration"
sequence=
"CTRL+D"
/>
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/CollectionElementData.java
浏览文件 @
31c63e76
...
...
@@ -35,7 +35,7 @@ import java.util.List;
* Complex value element.
* Map pair or array item
*/
class
CollectionElementData
{
public
class
CollectionElementData
{
static
final
Log
log
=
Log
.
getLog
(
CollectionElementData
.
class
);
...
...
@@ -67,4 +67,11 @@ class CollectionElementData {
}
}
public
DBDAttributeBinding
getCollectionBinding
()
{
return
collectionBinding
;
}
public
DBDAttributeBindingElement
[]
getElements
()
{
return
elements
;
}
}
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/FilterValueEditDialog.java
浏览文件 @
31c63e76
...
...
@@ -68,7 +68,7 @@ class FilterValueEditDialog extends BaseDialog {
editorPlaceholder
.
setLayoutData
(
new
GridData
(
GridData
.
FILL_BOTH
));
editorPlaceholder
.
setLayout
(
new
FillLayout
());
final
ResultSetV
iewer
.
ResultSetValueController
valueController
=
new
ResultSetViewer
.
ResultSetValueController
(
final
ResultSetV
alueController
valueController
=
new
ResultSetValueController
(
viewer
,
attr
,
row
,
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/IResultSetController.java
浏览文件 @
31c63e76
...
...
@@ -21,6 +21,7 @@ package org.jkiss.dbeaver.ui.controls.resultset;
import
org.eclipse.jface.action.IMenuManager
;
import
org.eclipse.jface.preference.IPreferenceStore
;
import
org.eclipse.swt.graphics.Color
;
import
org.eclipse.ui.IWorkbenchPartSite
;
import
org.jkiss.code.NotNull
;
import
org.jkiss.code.Nullable
;
...
...
@@ -35,6 +36,8 @@ import org.jkiss.dbeaver.model.struct.DBSDataContainer;
*/
public
interface
IResultSetController
{
public
static
final
String
MENU_GROUP_EDIT
=
"edit"
;
@NotNull
IWorkbenchPartSite
getSite
();
...
...
@@ -49,10 +52,14 @@ public interface IResultSetController {
boolean
hasData
();
boolean
isHasMoreData
();
boolean
isReadOnly
();
boolean
isRecordMode
();
boolean
isColumnReadOnly
(
DBDAttributeBinding
attr
);
@NotNull
IPreferenceStore
getPreferenceStore
();
...
...
@@ -60,13 +67,43 @@ public interface IResultSetController {
void
rejectChanges
();
/**
* Refreshes data. Reads data from underlying data container
*/
void
refreshData
(
@Nullable
Runnable
onSuccess
);
/**
* Reads next segment of data
*/
void
readNextSegment
();
/**
* Redraws results and updates all toolbars/edit controls
* @param rowsChanged updates contents
*/
void
redrawData
(
boolean
rowsChanged
);
void
fillContextMenu
(
@NotNull
IMenuManager
manager
,
@Nullable
DBDAttributeBinding
attr
,
@Nullable
ResultSetRow
row
);
@Nullable
ResultSetRow
getCurrentRow
();
void
setCurrentRow
(
@Nullable
ResultSetRow
row
);
void
navigateAssociation
(
@NotNull
DBRProgressMonitor
monitor
,
@NotNull
DBDAttributeBinding
attr
,
@NotNull
ResultSetRow
row
)
throws
DBException
;
void
updateValueView
();
void
updateEditControls
();
void
fireResultSetChange
();
void
setStatus
(
String
message
,
boolean
error
);
Color
getDefaultBackground
();
Color
getDefaultForeground
();
IResultSetPresentation
getActivePresentation
();
}
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/IResultSetPresentation.java
浏览文件 @
31c63e76
...
...
@@ -19,29 +19,69 @@
package
org.jkiss.dbeaver.ui.controls.resultset
;
import
org.eclipse.jface.action.IMenuManager
;
import
org.eclipse.jface.action.IToolBarManager
;
import
org.eclipse.swt.widgets.Composite
;
import
org.eclipse.swt.widgets.Control
;
import
org.jkiss.code.NotNull
;
import
org.jkiss.code.Nullable
;
import
org.jkiss.dbeaver.model.data.DBDAttributeBinding
;
import
org.jkiss.dbeaver.model.data.DBDDisplayFormat
;
/**
* Result set renderer.
* Visualizes result set viewer/editor.
*
* May additionally implement ISelectionProvider
* May additionally implement ISelectionProvider
, IStatefulControl
*/
public
interface
IResultSetPresentation
{
void
createPresentation
(
IResultSetController
controller
,
Composite
parent
);
public
enum
RowPosition
{
FIRST
,
PREVIOUS
,
NEXT
,
LAST
}
void
createPresentation
(
@NotNull
IResultSetController
controller
,
@NotNull
Composite
parent
);
Control
getControl
();
void
refreshData
(
boolean
refreshMetadata
);
/**
* Called after results refresh
* @param refreshData data was refreshed
*/
void
formatData
(
boolean
refreshData
);
void
clearData
();
void
updateValueView
();
void
fillToolbar
(
IToolBarManager
toolBar
);
void
fillToolbar
(
@NotNull
IToolBarManager
toolBar
);
void
fillMenu
(
@NotNull
IMenuManager
menu
);
void
changeMode
(
boolean
recordMode
);
// ISelectionProvider
void
scrollToRow
(
@NotNull
RowPosition
position
);
@Nullable
DBDAttributeBinding
getCurrentAttribute
();
@Nullable
Control
openValueEditor
(
final
boolean
inline
);
@Nullable
String
copySelectionToString
(
boolean
copyHeader
,
boolean
copyRowNumbers
,
boolean
cut
,
String
delimiter
,
DBDDisplayFormat
format
);
void
pasteFromClipboard
();
}
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/IStatefulControl.java
0 → 100644
浏览文件 @
31c63e76
/*
* Copyright (C) 2010-2015 Serge Rieder
* serge@jkiss.org
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package
org.jkiss.dbeaver.ui.controls.resultset
;
/**
* Result set provider
*/
public
interface
IStatefulControl
{
/**
* Saves presentation state (focus position)
*/
Object
saveState
();
/**
* Restores presentation state (focus position)
*/
void
restoreState
(
Object
state
);
}
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetCommandHandler.java
浏览文件 @
31c63e76
...
...
@@ -27,7 +27,6 @@ import org.eclipse.ui.handlers.HandlerUtil;
import
org.eclipse.ui.texteditor.ITextEditorActionDefinitionIds
;
import
org.jkiss.code.Nullable
;
import
org.jkiss.dbeaver.model.data.DBDDisplayFormat
;
import
org.jkiss.dbeaver.ui.controls.resultset.spreadsheet.SpreadsheetCommandHandler
;
import
org.jkiss.dbeaver.ui.editors.MultiPageAbstractEditor
;
/**
...
...
@@ -35,7 +34,6 @@ import org.jkiss.dbeaver.ui.editors.MultiPageAbstractEditor;
*/
public
class
ResultSetCommandHandler
extends
AbstractHandler
{
public
static
final
String
CMD_TOGGLE_PREVIEW
=
"org.jkiss.dbeaver.core.resultset.togglePreview"
;
public
static
final
String
CMD_TOGGLE_MODE
=
"org.jkiss.dbeaver.core.resultset.toggleMode"
;
public
static
final
String
CMD_ROW_FIRST
=
"org.jkiss.dbeaver.core.resultset.row.first"
;
public
static
final
String
CMD_ROW_PREVIOUS
=
"org.jkiss.dbeaver.core.resultset.row.previous"
;
...
...
@@ -62,20 +60,18 @@ public class ResultSetCommandHandler extends AbstractHandler {
resultSet
.
refresh
();
}
else
if
(
actionId
.
equals
(
CMD_TOGGLE_MODE
))
{
resultSet
.
toggleMode
();
}
else
if
(
actionId
.
equals
(
CMD_TOGGLE_PREVIEW
))
{
resultSet
.
togglePreview
();
}
else
if
(
actionId
.
equals
(
CMD_ROW_PREVIOUS
)
||
actionId
.
equals
(
ITextEditorActionDefinitionIds
.
WORD_PREVIOUS
))
{
resultSet
.
scrollToRow
(
ResultSetViewer
.
RowPosition
.
PREVIOUS
);
resultSet
.
getActivePresentation
().
scrollToRow
(
IResultSetPresentation
.
RowPosition
.
PREVIOUS
);
}
else
if
(
actionId
.
equals
(
CMD_ROW_NEXT
)
||
actionId
.
equals
(
ITextEditorActionDefinitionIds
.
WORD_NEXT
))
{
resultSet
.
scrollToRow
(
ResultSetViewer
.
RowPosition
.
NEXT
);
resultSet
.
getActivePresentation
().
scrollToRow
(
IResultSetPresentation
.
RowPosition
.
NEXT
);
}
else
if
(
actionId
.
equals
(
CMD_ROW_FIRST
)
||
actionId
.
equals
(
ITextEditorActionDefinitionIds
.
SELECT_WORD_PREVIOUS
))
{
resultSet
.
scrollToRow
(
ResultSetViewer
.
RowPosition
.
FIRST
);
resultSet
.
getActivePresentation
().
scrollToRow
(
IResultSetPresentation
.
RowPosition
.
FIRST
);
}
else
if
(
actionId
.
equals
(
CMD_ROW_LAST
)
||
actionId
.
equals
(
ITextEditorActionDefinitionIds
.
SELECT_WORD_NEXT
))
{
resultSet
.
scrollToRow
(
ResultSetViewer
.
RowPosition
.
LAST
);
resultSet
.
getActivePresentation
().
scrollToRow
(
IResultSetPresentation
.
RowPosition
.
LAST
);
}
else
if
(
actionId
.
equals
(
CMD_ROW_EDIT
))
{
resultSet
.
showCell
Editor
(
false
);
resultSet
.
getActivePresentation
().
openValue
Editor
(
false
);
}
else
if
(
actionId
.
equals
(
CMD_ROW_EDIT_INLINE
))
{
resultSet
.
showCell
Editor
(
true
);
resultSet
.
getActivePresentation
().
openValue
Editor
(
true
);
}
else
if
(
actionId
.
equals
(
CMD_ROW_ADD
))
{
resultSet
.
addNewRow
(
false
);
}
else
if
(
actionId
.
equals
(
CMD_ROW_COPY
))
{
...
...
@@ -87,13 +83,18 @@ public class ResultSetCommandHandler extends AbstractHandler {
}
else
if
(
actionId
.
equals
(
CMD_REJECT_CHANGES
))
{
resultSet
.
rejectChanges
();
}
else
if
(
actionId
.
equals
(
IWorkbenchCommandConstants
.
EDIT_COPY
))
{
resultSet
.
copySelectionToClipboard
(
false
,
false
,
false
,
null
,
DBDDisplayFormat
.
EDIT
);
ResultSetUtils
.
copyToClipboard
(
resultSet
.
getActivePresentation
().
copySelectionToString
(
false
,
false
,
false
,
null
,
DBDDisplayFormat
.
EDIT
));
}
else
if
(
actionId
.
equals
(
IWorkbenchCommandConstants
.
EDIT_PASTE
))
{
resultSet
.
pasteCellValue
();
resultSet
.
getActivePresentation
().
pasteFromClipboard
();
}
else
if
(
actionId
.
equals
(
IWorkbenchCommandConstants
.
EDIT_CUT
))
{
resultSet
.
copySelectionToClipboard
(
false
,
false
,
true
,
null
,
DBDDisplayFormat
.
EDIT
);
ResultSetUtils
.
copyToClipboard
(
resultSet
.
getActivePresentation
().
copySelectionToString
(
false
,
false
,
true
,
null
,
DBDDisplayFormat
.
EDIT
)
);
}
else
if
(
actionId
.
equals
(
ITextEditorActionDefinitionIds
.
SMART_ENTER
))
{
resultSet
.
showCell
Editor
(
false
);
resultSet
.
getActivePresentation
().
openValue
Editor
(
false
);
}
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetCopySpecialHandler.java
浏览文件 @
31c63e76
...
...
@@ -52,12 +52,12 @@ public class ResultSetCopySpecialHandler extends ResultSetCommandHandler impleme
if
(
event
.
getCommand
().
getId
().
equals
(
ICommandIds
.
CMD_COPY_SPECIAL
))
{
ConfigDialog
configDialog
=
new
ConfigDialog
(
HandlerUtil
.
getActiveShell
(
event
));
if
(
configDialog
.
open
()
==
IDialogConstants
.
OK_ID
)
{
resultSet
.
copySelectionToClipboard
(
ResultSetUtils
.
copyToClipboard
(
resultSet
.
getActivePresentation
().
copySelectionToString
(
configDialog
.
copyHeader
,
configDialog
.
copyRows
,
false
,
configDialog
.
delimiter
,
configDialog
.
format
);
configDialog
.
format
)
)
;
}
}
return
null
;
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetDataPumpJob.java
浏览文件 @
31c63e76
...
...
@@ -178,10 +178,10 @@ class ResultSetDataPumpJob extends DataSourceJob {
return
Status
.
OK_STATUS
;
}
private
void
showProgress
(
final
Composite
spreadsheet
)
{
private
void
showProgress
(
final
Composite
progressPlaceholder
)
{
if
(
progressOverlay
==
null
)
{
// Start progress visualization
cancelButton
=
new
Button
(
spreadsheet
,
SWT
.
PUSH
);
cancelButton
=
new
Button
(
progressPlaceholder
,
SWT
.
PUSH
);
cancelButton
.
setText
(
"Cancel"
);
GridData
gd
=
new
GridData
(
GridData
.
FILL_BOTH
);
gd
.
verticalIndent
=
DBIcon
.
PROGRESS0
.
getImage
().
getBounds
().
height
*
2
;
...
...
@@ -221,18 +221,18 @@ class ResultSetDataPumpJob extends DataSourceJob {
int
statusX
=
(
buttonBounds
.
x
+
buttonBounds
.
width
/
2
)
-
statusSize
.
x
/
2
;
int
statusY
=
buttonBounds
.
y
-
imageBounds
.
height
-
10
-
statusSize
.
y
;
e
.
gc
.
setForeground
(
spreadsheet
.
getForeground
());
e
.
gc
.
setBackground
(
spreadsheet
.
getBackground
());
e
.
gc
.
setForeground
(
progressPlaceholder
.
getForeground
());
e
.
gc
.
setBackground
(
progressPlaceholder
.
getBackground
());
e
.
gc
.
fillRectangle
(
statusX
-
2
,
statusY
-
2
,
statusSize
.
x
+
4
,
statusSize
.
y
+
4
);
e
.
gc
.
drawText
(
status
,
statusX
,
statusY
,
true
);
}
};
spreadsheet
.
addPaintListener
(
painListener
);
progressPlaceholder
.
addPaintListener
(
painListener
);
progressOverlay
=
new
ControlEditor
(
spreadsheet
)
{
progressOverlay
=
new
ControlEditor
(
progressPlaceholder
)
{
@Override
public
void
layout
()
{
spreadsheet
.
redraw
();
progressPlaceholder
.
redraw
();
super
.
layout
();
}
};
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetModel.java
浏览文件 @
31c63e76
...
...
@@ -510,7 +510,7 @@ public class ResultSetModel {
}
}
boolean
isColumnReadOnly
(
@NotNull
DBDAttributeBinding
column
)
public
boolean
isColumnReadOnly
(
@NotNull
DBDAttributeBinding
column
)
{
if
(
column
.
getMetaAttribute
().
isReadOnly
())
{
return
true
;
...
...
@@ -673,7 +673,7 @@ public class ResultSetModel {
this
.
dataFilter
.
setAnyConstraint
(
filter
.
isAnyConstraint
());
}
void
resetOrdering
()
public
void
resetOrdering
()
{
final
boolean
hasOrdering
=
dataFilter
.
hasOrdering
();
// Sort locally
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetPersister.java
浏览文件 @
31c63e76
...
...
@@ -219,10 +219,10 @@ class ResultSetPersister {
}
model
.
refreshChangeCount
();
viewer
.
re
freshSpreadsheet
(
rowsChanged
);
viewer
.
re
drawData
(
rowsChanged
);
viewer
.
fireResultSetChange
();
viewer
.
updateEditControls
();
viewer
.
previewValue
();
viewer
.
getActivePresentation
().
updateValueView
();
}
// Reflect data changes in viewer
...
...
@@ -330,7 +330,7 @@ class ResultSetPersister {
}
if
(!
viewer
.
getControl
().
isDisposed
())
{
//releaseStatements();
viewer
.
re
freshSpreadsheet
(
rowsChanged
);
viewer
.
re
drawData
(
rowsChanged
);
viewer
.
updateEditControls
();
if
(
error
==
null
)
{
viewer
.
setStatus
(
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetPropertyTester.java
浏览文件 @
31c63e76
...
...
@@ -52,9 +52,9 @@ public class ResultSetPropertyTester extends PropertyTester
}
else
if
(
PROP_HAS_DATA
.
equals
(
property
))
{
return
rsv
.
getModel
().
getRowCount
()
>
0
;
}
else
if
(
PROP_CAN_COPY
.
equals
(
property
))
{
return
rsv
.
get
FocusAttribute
()
!=
null
&&
rsv
.
getFocus
Row
()
!=
null
;
return
rsv
.
get
ActivePresentation
().
getCurrentAttribute
()
!=
null
&&
rsv
.
getCurrent
Row
()
!=
null
;
}
else
if
(
PROP_CAN_PASTE
.
equals
(
property
)
||
PROP_CAN_CUT
.
equals
(
property
))
{
DBDAttributeBinding
attr
=
rsv
.
get
Focus
Attribute
();
DBDAttributeBinding
attr
=
rsv
.
get
ActivePresentation
().
getCurrent
Attribute
();
return
attr
!=
null
&&
!
rsv
.
isColumnReadOnly
(
attr
);
}
else
if
(
PROP_CAN_MOVE
.
equals
(
property
))
{
ResultSetRow
currentRow
=
rsv
.
getCurrentRow
();
...
...
@@ -68,7 +68,7 @@ public class ResultSetPropertyTester extends PropertyTester
return
false
;
}
if
(
"edit"
.
equals
(
expectedValue
)
||
"inline"
.
equals
(
expectedValue
))
{
DBDAttributeBinding
attr
=
rsv
.
get
Focus
Attribute
();
DBDAttributeBinding
attr
=
rsv
.
get
ActivePresentation
().
getCurrent
Attribute
();
if
(
attr
==
null
)
{
return
false
;
}
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetRow.java
浏览文件 @
31c63e76
...
...
@@ -34,9 +34,9 @@ import java.util.Map;
*/
public
class
ResultSetRow
{
static
final
byte
STATE_NORMAL
=
1
;
static
final
byte
STATE_ADDED
=
2
;
static
final
byte
STATE_REMOVED
=
3
;
public
static
final
byte
STATE_NORMAL
=
1
;
public
static
final
byte
STATE_ADDED
=
2
;
public
static
final
byte
STATE_REMOVED
=
3
;
// Physical row number
private
int
rowNumber
;
...
...
@@ -118,7 +118,7 @@ public class ResultSetRow {
}
@NotNull
CollectionElementData
getCollectionData
(
DBDAttributeBinding
binding
,
DBDCollection
collection
)
{
public
CollectionElementData
getCollectionData
(
DBDAttributeBinding
binding
,
DBDCollection
collection
)
{
if
(
collections
==
null
)
{
collections
=
new
HashMap
<
DBDValue
,
CollectionElementData
>();
}
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetUtils.java
浏览文件 @
31c63e76
...
...
@@ -19,14 +19,18 @@
package
org.jkiss.dbeaver.ui.controls.resultset
;
import
org.eclipse.swt.dnd.Clipboard
;
import
org.eclipse.swt.dnd.TextTransfer
;
import
org.eclipse.swt.dnd.Transfer
;
import
org.eclipse.swt.widgets.Display
;
import
org.jkiss.code.NotNull
;
import
org.jkiss.code.Nullable
;
import
org.jkiss.dbeaver.DBException
;
import
org.jkiss.dbeaver.core.Log
;
import
org.jkiss.dbeaver.model.DBPDataSource
;
import
org.jkiss.dbeaver.model.DBUtils
;
import
org.jkiss.dbeaver.model.data.*
;
import
org.jkiss.dbeaver.model.exec.DBCAttributeMetaData
;
import
org.jkiss.dbeaver.model.exec.DBCEntityMetaData
;
import
org.jkiss.dbeaver.model.exec.DBCSession
;
import
org.jkiss.dbeaver.model.exec.*
;
import
org.jkiss.dbeaver.model.runtime.DBRProgressMonitor
;
import
org.jkiss.dbeaver.model.sql.SQLQuery
;
import
org.jkiss.dbeaver.model.struct.*
;
...
...
@@ -35,6 +39,7 @@ import org.jkiss.dbeaver.model.struct.rdb.DBSTable;
import
org.jkiss.dbeaver.model.struct.rdb.DBSTableIndex
;
import
org.jkiss.dbeaver.model.virtual.DBVEntity
;
import
org.jkiss.dbeaver.model.virtual.DBVEntityConstraint
;
import
org.jkiss.dbeaver.runtime.VoidProgressMonitor
;
import
org.jkiss.utils.CommonUtils
;
import
java.util.*
;
...
...
@@ -42,7 +47,7 @@ import java.util.*;
/**
* Utils
*/
class
ResultSetUtils
public
class
ResultSetUtils
{
static
final
Log
log
=
Log
.
getLog
(
ResultSetUtils
.
class
);
...
...
@@ -248,4 +253,35 @@ class ResultSetUtils
attr1
.
getTypeID
()
==
attr2
.
getTypeID
()
&&
CommonUtils
.
equalObjects
(
attr1
.
getTypeName
(),
attr2
.
getTypeName
());
}
@Nullable
public
static
Object
getColumnValueFromClipboard
(
DBDAttributeBinding
metaColumn
)
throws
DBCException
{
DBPDataSource
dataSource
=
metaColumn
.
getDataSource
();
DBCSession
session
=
dataSource
.
openSession
(
VoidProgressMonitor
.
INSTANCE
,
DBCExecutionPurpose
.
UTIL
,
"Copy from clipboard"
);
Clipboard
clipboard
=
new
Clipboard
(
Display
.
getCurrent
());
try
{
String
strValue
=
(
String
)
clipboard
.
getContents
(
TextTransfer
.
getInstance
());
return
metaColumn
.
getValueHandler
().
getValueFromObject
(
session
,
metaColumn
.
getAttribute
(),
strValue
,
true
);
}
finally
{
session
.
close
();
clipboard
.
dispose
();
}
}
public
static
void
copyToClipboard
(
String
string
)
{
if
(
string
.
length
()
>
0
)
{
Clipboard
clipboard
=
new
Clipboard
(
Display
.
getCurrent
());
try
{
TextTransfer
textTransfer
=
TextTransfer
.
getInstance
();
clipboard
.
setContents
(
new
Object
[]{
string
},
new
Transfer
[]{
textTransfer
});
}
finally
{
clipboard
.
dispose
();
}
}
}
}
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetValueController.java
0 → 100644
浏览文件 @
31c63e76
/*
* Copyright (C) 2010-2015 Serge Rieder
* serge@jkiss.org
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package
org.jkiss.dbeaver.ui.controls.resultset
;
import
org.eclipse.swt.widgets.Composite
;
import
org.eclipse.swt.widgets.ToolBar
;
import
org.eclipse.ui.IWorkbenchPartSite
;
import
org.jkiss.code.NotNull
;
import
org.jkiss.code.Nullable
;
import
org.jkiss.dbeaver.model.DBPDataSource
;
import
org.jkiss.dbeaver.model.DBUtils
;
import
org.jkiss.dbeaver.model.data.*
;
import
org.jkiss.dbeaver.model.exec.DBCAttributeMetaData
;
import
org.jkiss.dbeaver.model.struct.DBSDataContainer
;
import
org.jkiss.dbeaver.model.struct.DBSTypedObject
;
import
java.util.Arrays
;
import
java.util.List
;
/**
* ResultSetValueController
*/
public
class
ResultSetValueController
implements
DBDAttributeController
,
DBDRowController
{
protected
final
IResultSetController
controller
;
protected
final
EditType
editType
;
protected
final
Composite
inlinePlaceholder
;
protected
ResultSetRow
curRow
;
protected
final
DBDAttributeBinding
binding
;
public
ResultSetValueController
(
@NotNull
IResultSetController
controller
,
@NotNull
DBDAttributeBinding
binding
,
@NotNull
ResultSetRow
row
,
@NotNull
EditType
editType
,
@Nullable
Composite
inlinePlaceholder
)
{
this
.
controller
=
controller
;
this
.
binding
=
binding
;
this
.
curRow
=
row
;
this
.
editType
=
editType
;
this
.
inlinePlaceholder
=
inlinePlaceholder
;
}
public
ResultSetRow
getCurRow
()
{
return
curRow
;
}
public
void
setCurRow
(
ResultSetRow
curRow
)
{
this
.
curRow
=
curRow
;
}
@Nullable
@Override
public
DBPDataSource
getDataSource
()
{
DBSDataContainer
dataContainer
=
controller
.
getDataContainer
();
return
dataContainer
==
null
?
null
:
dataContainer
.
getDataSource
();
}
@Override
public
String
getValueName
()
{
return
binding
.
getName
();
}
@Override
public
DBSTypedObject
getValueType
()
{
return
binding
.
getMetaAttribute
();
}
@NotNull
@Override
public
DBDRowController
getRowController
()
{
return
this
;
}
@NotNull
@Override
public
DBDAttributeBinding
getBinding
()
{
return
binding
;
}
@NotNull
@Override
public
String
getColumnId
()
{
DBPDataSource
dataSource
=
getDataSource
();
DBCAttributeMetaData
metaAttribute
=
binding
.
getMetaAttribute
();
return
DBUtils
.
getSimpleQualifiedName
(
dataSource
==
null
?
null
:
dataSource
.
getContainer
().
getName
(),
metaAttribute
.
getEntityName
(),
metaAttribute
.
getName
());
}
@Override
public
Object
getValue
()
{
return
controller
.
getModel
().
getCellValue
(
binding
,
curRow
);
}
@Override
public
void
updateValue
(
@Nullable
Object
value
)
{
if
(
controller
.
getModel
().
updateCellValue
(
binding
,
curRow
,
value
))
{
// Update controls
controller
.
getSite
().
getShell
().
getDisplay
().
syncExec
(
new
Runnable
()
{
@Override
public
void
run
()
{
controller
.
updateValueView
();
}
});
}
controller
.
fireResultSetChange
();
}
@Nullable
@Override
public
DBDRowIdentifier
getRowIdentifier
()
{
return
binding
.
getRowIdentifier
();
}
@Override
public
DBDValueHandler
getValueHandler
()
{
return
binding
.
getValueHandler
();
}
@Override
public
EditType
getEditType
()
{
return
editType
;
}
@Override
public
boolean
isReadOnly
()
{
return
controller
.
isColumnReadOnly
(
binding
);
}
@Override
public
IWorkbenchPartSite
getValueSite
()
{
return
controller
.
getSite
();
}
@Nullable
@Override
public
Composite
getEditPlaceholder
()
{
return
inlinePlaceholder
;
}
@Nullable
@Override
public
ToolBar
getEditToolBar
()
{
return
null
;
}
@Override
public
void
closeInlineEditor
()
{
}
@Override
public
void
nextInlineEditor
(
boolean
next
)
{
}
@Override
public
void
unregisterEditor
(
DBDValueEditorStandalone
editor
)
{
}
@Override
public
void
showMessage
(
String
message
,
boolean
error
)
{
controller
.
setStatus
(
message
,
error
);
}
@NotNull
@Override
public
List
<
DBDAttributeBinding
>
getRowAttributes
()
{
return
Arrays
.
asList
(
controller
.
getModel
().
getColumns
());
}
@Nullable
@Override
public
Object
getAttributeValue
(
DBDAttributeBinding
attribute
)
{
return
controller
.
getModel
().
getCellValue
(
attribute
,
curRow
);
}
}
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetViewer.java
浏览文件 @
31c63e76
此差异已折叠。
点击以展开。
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/spreadsheet/Spreadsheet.java
浏览文件 @
31c63e76
...
...
@@ -59,7 +59,7 @@ public class Spreadsheet extends LightGrid implements Listener {
@NotNull
private
final
IWorkbenchPartSite
site
;
@NotNull
private
final
SpreadsheetPresentation
spreadsheetController
;
private
final
SpreadsheetPresentation
presentation
;
@NotNull
private
final
IGridContentProvider
contentProvider
;
@NotNull
...
...
@@ -71,7 +71,7 @@ public class Spreadsheet extends LightGrid implements Listener {
@NotNull
final
Composite
parent
,
final
int
style
,
@NotNull
final
IWorkbenchPartSite
site
,
@NotNull
final
SpreadsheetPresentation
spreadsheetController
,
@NotNull
final
SpreadsheetPresentation
presentation
,
@NotNull
final
IGridContentProvider
contentProvider
,
@NotNull
final
IGridLabelProvider
labelProvider
)
{
...
...
@@ -84,7 +84,7 @@ public class Spreadsheet extends LightGrid implements Listener {
this
.
setLayout
(
layout
);
this
.
site
=
site
;
this
.
spreadsheetController
=
spreadsheetController
;
this
.
presentation
=
presentation
;
this
.
contentProvider
=
contentProvider
;
this
.
labelProvider
=
labelProvider
;
...
...
@@ -125,6 +125,11 @@ public class Spreadsheet extends LightGrid implements Listener {
}
}
@NotNull
public
SpreadsheetPresentation
getPresentation
()
{
return
presentation
;
}
public
Clipboard
getClipboard
()
{
return
clipboard
;
...
...
@@ -234,7 +239,7 @@ public class Spreadsheet extends LightGrid implements Listener {
(
event
.
keyCode
>=
'a'
&&
event
.
keyCode
<=
'z'
)
||
(
event
.
keyCode
>=
'0'
&&
event
.
keyCode
<=
'9'
))
{
final
Control
editorControl
=
spreadsheetController
.
showCell
Editor
(
true
);
final
Control
editorControl
=
presentation
.
openValue
Editor
(
true
);
if
(
editorControl
!=
null
&&
event
.
keyCode
!=
SWT
.
CR
)
{
// Forward the same key event to just created control
final
Event
fwdEvent
=
new
Event
();
...
...
@@ -254,7 +259,7 @@ public class Spreadsheet extends LightGrid implements Listener {
Object
col
=
getFocusColumnElement
();
Object
row
=
getFocusRowElement
();
if
(
col
!=
null
&&
row
!=
null
)
{
spreadsheetController
.
resetCellValue
(
col
,
row
,
false
);
presentation
.
resetCellValue
(
col
,
row
,
false
);
}
}
break
;
...
...
@@ -263,27 +268,27 @@ public class Spreadsheet extends LightGrid implements Listener {
GridPos
focusPos
=
super
.
getFocusPos
();
if
(
pos
!=
null
&&
focusPos
!=
null
&&
pos
.
equals
(
super
.
getFocusPos
()))
{
DoubleClickBehavior
doubleClickBehavior
=
DoubleClickBehavior
.
valueOf
(
spreadsheetController
.
getPreferenceStore
().
getString
(
DBeaverPreferences
.
RESULT_SET_DOUBLE_CLICK
));
presentation
.
getPreferenceStore
().
getString
(
DBeaverPreferences
.
RESULT_SET_DOUBLE_CLICK
));
switch
(
doubleClickBehavior
)
{
case
NONE:
return
;
case
EDITOR:
spreadsheetController
.
showCell
Editor
(
false
);
presentation
.
openValue
Editor
(
false
);
break
;
case
INLINE_EDITOR:
spreadsheetController
.
showCell
Editor
(
true
);
presentation
.
openValue
Editor
(
true
);
break
;
}
}
break
;
case
SWT
.
MouseDown
:
if
(
event
.
button
==
2
)
{
spreadsheetController
.
showCell
Editor
(
true
);
presentation
.
openValue
Editor
(
true
);
}
break
;
case
LightGrid
.
Event_ChangeSort
:
spreadsheetController
.
changeSorting
(
event
.
data
,
event
.
stateMask
);
presentation
.
changeSorting
(
event
.
data
,
event
.
stateMask
);
break
;
case
LightGrid
.
Event_NavigateLink
:
// Perform navigation async because it may change grid content and
...
...
@@ -291,7 +296,7 @@ public class Spreadsheet extends LightGrid implements Listener {
getDisplay
().
asyncExec
(
new
Runnable
()
{
@Override
public
void
run
()
{
spreadsheetController
.
navigateLink
((
GridCell
)
event
.
data
,
event
.
stateMask
);
presentation
.
navigateLink
((
GridCell
)
event
.
data
,
event
.
stateMask
);
}
});
break
;
...
...
@@ -302,6 +307,7 @@ public class Spreadsheet extends LightGrid implements Listener {
public
void
refreshData
(
boolean
refreshColumns
)
{
cancelInlineEditor
();
super
.
refreshData
(
refreshColumns
);
super
.
redraw
();
}
private
void
hookContextMenu
()
...
...
@@ -316,7 +322,7 @@ public class Spreadsheet extends LightGrid implements Listener {
// Let controller to provide it's own menu items
GridPos
focusPos
=
getFocusPos
();
spreadsheetController
.
fillContextMenu
(
presentation
.
fillContextMenu
(
focusPos
.
col
>=
0
&&
focusPos
.
col
<
columnElements
.
length
?
columnElements
[
focusPos
.
col
]
:
null
,
focusPos
.
row
>=
0
&&
focusPos
.
row
<
rowElements
.
length
?
rowElements
[
focusPos
.
row
]
:
null
,
manager
);
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/spreadsheet/SpreadsheetCommandHandler.java
浏览文件 @
31c63e76
...
...
@@ -35,6 +35,8 @@ import org.jkiss.code.Nullable;
*/
public
class
SpreadsheetCommandHandler
extends
AbstractHandler
{
public
static
final
String
CMD_TOGGLE_PREVIEW
=
"org.jkiss.dbeaver.core.resultset.grid.togglePreview"
;
public
static
Spreadsheet
getActiveSpreadsheet
(
ExecutionEvent
event
)
{
Object
control
=
HandlerUtil
.
getVariable
(
event
,
ISources
.
ACTIVE_FOCUS_CONTROL_NAME
);
...
...
@@ -57,7 +59,11 @@ public class SpreadsheetCommandHandler extends AbstractHandler {
if
(
actionId
.
equals
(
IWorkbenchCommandConstants
.
EDIT_SELECT_ALL
))
{
spreadsheet
.
selectAll
();
return
null
;
}
else
if
(
actionId
.
equals
(
CMD_TOGGLE_PREVIEW
))
{
spreadsheet
.
getPresentation
().
togglePreview
();
return
null
;
}
Event
keyEvent
=
new
Event
();
keyEvent
.
doit
=
true
;
if
(
actionId
.
equals
(
ITextEditorActionDefinitionIds
.
LINE_START
))
{
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/spreadsheet/SpreadsheetPresentation.java
浏览文件 @
31c63e76
此差异已折叠。
点击以展开。
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/
ResultSetMode
TogglePreviewHandler.java
→
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/
spreadsheet/Spreadsheet
TogglePreviewHandler.java
浏览文件 @
31c63e76
...
...
@@ -16,18 +16,21 @@
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package
org.jkiss.dbeaver.ui.controls.resultset
;
package
org.jkiss.dbeaver.ui.controls.resultset
.spreadsheet
;
import
org.eclipse.ui.IWorkbenchPartSite
;
import
org.eclipse.ui.commands.IElementUpdater
;
import
org.eclipse.ui.menus.UIElement
;
import
org.jkiss.dbeaver.ui.controls.resultset.IResultSetContainer
;
import
org.jkiss.dbeaver.ui.controls.resultset.IResultSetPresentation
;
import
org.jkiss.dbeaver.ui.controls.resultset.ResultSetViewer
;
import
java.util.Map
;
/**
* ResultSetModeTogglePreviewHandler
*/
public
class
ResultSetModeTogglePreviewHandler
extends
ResultS
etCommandHandler
implements
IElementUpdater
{
public
class
SpreadsheetTogglePreviewHandler
extends
Spreadshe
etCommandHandler
implements
IElementUpdater
{
@Override
public
void
updateElement
(
UIElement
element
,
Map
parameters
)
...
...
@@ -37,7 +40,8 @@ public class ResultSetModeTogglePreviewHandler extends ResultSetCommandHandler i
if
(
partSite
.
getPart
()
instanceof
IResultSetContainer
)
{
ResultSetViewer
rsv
=
((
IResultSetContainer
)
partSite
.
getPart
()).
getResultSetViewer
();
if
(
rsv
!=
null
)
{
if
(
rsv
.
isPreviewVisible
())
{
IResultSetPresentation
presentation
=
rsv
.
getActivePresentation
();
if
(
presentation
instanceof
SpreadsheetPresentation
&&
((
SpreadsheetPresentation
)
presentation
).
isPreviewVisible
())
{
element
.
setText
(
"Hide value view panel"
);
element
.
setChecked
(
true
);
}
else
{
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ThemeConstants.java
→
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/
spreadsheet/
ThemeConstants.java
浏览文件 @
31c63e76
...
...
@@ -17,7 +17,7 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package
org.jkiss.dbeaver.ui.controls.resultset
;
package
org.jkiss.dbeaver.ui.controls.resultset
.spreadsheet
;
/**
* ThemeConstants
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ViewValuePanel.java
→
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/
spreadsheet/
ViewValuePanel.java
浏览文件 @
31c63e76
...
...
@@ -16,7 +16,7 @@
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package
org.jkiss.dbeaver.ui.controls.resultset
;
package
org.jkiss.dbeaver.ui.controls.resultset
.spreadsheet
;
import
org.eclipse.swt.events.TraverseEvent
;
import
org.eclipse.swt.events.TraverseListener
;
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/view/EmptyPresentation.java
浏览文件 @
31c63e76
...
...
@@ -19,10 +19,15 @@
package
org.jkiss.dbeaver.ui.controls.resultset.view
;
import
org.eclipse.jface.action.IMenuManager
;
import
org.eclipse.jface.action.IToolBarManager
;
import
org.eclipse.swt.SWT
;
import
org.eclipse.swt.widgets.Composite
;
import
org.eclipse.swt.widgets.Control
;
import
org.jkiss.code.NotNull
;
import
org.jkiss.code.Nullable
;
import
org.jkiss.dbeaver.model.data.DBDAttributeBinding
;
import
org.jkiss.dbeaver.model.data.DBDDisplayFormat
;
import
org.jkiss.dbeaver.ui.controls.resultset.IResultSetController
;
import
org.jkiss.dbeaver.ui.controls.resultset.IResultSetPresentation
;
...
...
@@ -35,7 +40,7 @@ public class EmptyPresentation implements IResultSetPresentation {
private
Composite
placeholder
;
@Override
public
void
createPresentation
(
IResultSetController
controller
,
Composite
parent
)
{
public
void
createPresentation
(
@NotNull
IResultSetController
controller
,
@NotNull
Composite
parent
)
{
placeholder
=
new
Composite
(
parent
,
SWT
.
NONE
);
}
...
...
@@ -49,13 +54,28 @@ public class EmptyPresentation implements IResultSetPresentation {
}
@Override
public
void
formatData
(
boolean
refreshData
)
{
}
@Override
public
void
clearData
()
{
}
@Override
public
void
updateValueView
()
{
}
@Override
public
void
fillToolbar
(
IToolBarManager
toolBar
)
{
public
void
fillToolbar
(
@NotNull
IToolBarManager
toolBar
)
{
}
@Override
public
void
fillMenu
(
@NotNull
IMenuManager
menu
)
{
}
...
...
@@ -64,4 +84,32 @@ public class EmptyPresentation implements IResultSetPresentation {
}
@Override
public
void
scrollToRow
(
@NotNull
RowPosition
position
)
{
}
@Nullable
@Override
public
DBDAttributeBinding
getCurrentAttribute
()
{
return
null
;
}
@Nullable
@Override
public
Control
openValueEditor
(
boolean
inline
)
{
return
null
;
}
@Nullable
@Override
public
String
copySelectionToString
(
boolean
copyHeader
,
boolean
copyRowNumbers
,
boolean
cut
,
String
delimiter
,
DBDDisplayFormat
format
)
{
return
null
;
}
@Override
public
void
pasteFromClipboard
()
{
}
}
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/view/StatisticsPresentation.java
浏览文件 @
31c63e76
...
...
@@ -19,11 +19,16 @@
package
org.jkiss.dbeaver.ui.controls.resultset.view
;
import
org.eclipse.jface.action.IMenuManager
;
import
org.eclipse.jface.action.IToolBarManager
;
import
org.eclipse.jface.viewers.TableViewer
;
import
org.eclipse.swt.SWT
;
import
org.eclipse.swt.widgets.Composite
;
import
org.eclipse.swt.widgets.Control
;
import
org.jkiss.code.NotNull
;
import
org.jkiss.code.Nullable
;
import
org.jkiss.dbeaver.model.data.DBDAttributeBinding
;
import
org.jkiss.dbeaver.model.data.DBDDisplayFormat
;
import
org.jkiss.dbeaver.ui.controls.resultset.IResultSetController
;
import
org.jkiss.dbeaver.ui.controls.resultset.IResultSetPresentation
;
...
...
@@ -36,7 +41,7 @@ public class StatisticsPresentation implements IResultSetPresentation {
private
TableViewer
tableViewer
;
@Override
public
void
createPresentation
(
IResultSetController
controller
,
Composite
parent
)
{
public
void
createPresentation
(
@NotNull
IResultSetController
controller
,
@NotNull
Composite
parent
)
{
tableViewer
=
new
TableViewer
(
parent
,
SWT
.
MULTI
|
SWT
.
FULL_SELECTION
);
}
...
...
@@ -50,13 +55,28 @@ public class StatisticsPresentation implements IResultSetPresentation {
tableViewer
.
refresh
();
}
@Override
public
void
formatData
(
boolean
refreshData
)
{
}
@Override
public
void
clearData
()
{
}
@Override
public
void
updateValueView
()
{
}
@Override
public
void
fillToolbar
(
IToolBarManager
toolBar
)
{
public
void
fillToolbar
(
@NotNull
IToolBarManager
toolBar
)
{
}
@Override
public
void
fillMenu
(
@NotNull
IMenuManager
menu
)
{
}
...
...
@@ -65,4 +85,32 @@ public class StatisticsPresentation implements IResultSetPresentation {
}
@Override
public
void
scrollToRow
(
@NotNull
RowPosition
position
)
{
}
@Nullable
@Override
public
DBDAttributeBinding
getCurrentAttribute
()
{
return
null
;
}
@Nullable
@Override
public
Control
openValueEditor
(
boolean
inline
)
{
return
null
;
}
@Nullable
@Override
public
String
copySelectionToString
(
boolean
copyHeader
,
boolean
copyRowNumbers
,
boolean
cut
,
String
delimiter
,
DBDDisplayFormat
format
)
{
return
null
;
}
@Override
public
void
pasteFromClipboard
()
{
}
}
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/data/DatabaseDataEditor.java
浏览文件 @
31c63e76
...
...
@@ -132,7 +132,7 @@ public class DatabaseDataEditor extends AbstractDatabaseObjectEditor<DBSDataCont
{
createResultSetView
();
if
(
resultSetView
!=
null
)
{
resultSetView
.
get
Spreadsheet
().
setFocus
();
resultSetView
.
get
ActivePresentation
().
getControl
().
setFocus
();
}
// Register find/replace action
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditor.java
浏览文件 @
31c63e76
...
...
@@ -334,7 +334,7 @@ public class SQLEditor extends SQLEditorBase
curQueryProcessor
=
resultsProvider
.
queryProcessor
;
ResultSetViewer
rsv
=
resultsProvider
.
getResultSetViewer
();
if
(
rsv
!=
null
)
{
rsv
.
get
Spreadsheet
().
setFocus
();
rsv
.
get
ActivePresentation
().
getControl
().
setFocus
();
}
}
else
if
(
data
==
outputViewer
)
{
((
CTabItem
)
e
.
item
).
setImage
(
IMG_OUTPUT
);
...
...
@@ -347,8 +347,8 @@ public class SQLEditor extends SQLEditorBase
public
void
keyTraversed
(
TraverseEvent
e
)
{
if
(
e
.
detail
==
SWT
.
TRAVERSE_PAGE_NEXT
)
{
ResultSetViewer
viewer
=
getResultSetViewer
();
if
(
viewer
!=
null
&&
viewer
.
get
Spreadsheet
().
isVisible
())
{
viewer
.
get
Spreadsheet
().
setFocus
();
if
(
viewer
!=
null
&&
viewer
.
get
ActivePresentation
().
getControl
().
isVisible
())
{
viewer
.
get
ActivePresentation
().
getControl
().
setFocus
();
e
.
doit
=
false
;
e
.
detail
=
SWT
.
TRAVERSE_NONE
;
}
...
...
@@ -1165,10 +1165,10 @@ public class SQLEditor extends SQLEditorBase
this
.
resultSetNumber
=
resultSetNumber
;
viewer
=
new
ResultSetViewer
(
resultTabs
,
getSite
(),
this
);
selectionProvider
.
trackProvider
(
viewer
.
get
Spreadsheet
(),
viewer
);
selectionProvider
.
trackProvider
(
viewer
.
get
ActivePresentation
().
getControl
(),
viewer
);
// Find/replace target activation
viewer
.
get
Spreadsheet
().
addFocusListener
(
new
FocusAdapter
()
{
viewer
.
get
ActivePresentation
().
getControl
().
addFocusListener
(
new
FocusAdapter
()
{
@Override
public
void
focusGained
(
FocusEvent
e
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录