Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
suliangchun
dbeaver
提交
7da826f4
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,发现更多精彩内容 >>
提交
7da826f4
编写于
11月 25, 2017
作者:
S
serge-rider
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
#2044 Referencing tables menus/shortcuts.
Results sort toggle command. Former-commit-id:
616e855e
上级
7298968d
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
93 addition
and
66 deletion
+93
-66
plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle.properties
...ns/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle.properties
+5
-0
plugins/org.jkiss.dbeaver.core/plugin.xml
plugins/org.jkiss.dbeaver.core/plugin.xml
+7
-2
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/core/CoreMessages.java
...dbeaver.core/src/org/jkiss/dbeaver/core/CoreMessages.java
+0
-1
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/core/CoreResources.properties
....core/src/org/jkiss/dbeaver/core/CoreResources.properties
+0
-1
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/IResultSetController.java
...s/dbeaver/ui/controls/resultset/IResultSetController.java
+2
-0
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetCommandHandler.java
...beaver/ui/controls/resultset/ResultSetCommandHandler.java
+12
-1
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetViewer.java
.../jkiss/dbeaver/ui/controls/resultset/ResultSetViewer.java
+59
-5
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/spreadsheet/SpreadsheetPresentation.java
...ntrols/resultset/spreadsheet/SpreadsheetPresentation.java
+8
-56
未找到文件。
plugins/org.jkiss.dbeaver.core/OSGI-INF/l10n/bundle.properties
浏览文件 @
7da826f4
...
...
@@ -268,6 +268,11 @@ command.org.jkiss.dbeaver.core.resultset.cell.save.name=Save cell value
command.org.jkiss.dbeaver.core.resultset.cell.save.description
=
Save cell value
command.org.jkiss.dbeaver.core.resultset.filterMenu.name
=
Filter menu
command.org.jkiss.dbeaver.core.resultset.filterMenu.description
=
Filer context menu
command.org.jkiss.dbeaver.core.resultset.referencesMenu.name
=
Referencing tables
command.org.jkiss.dbeaver.core.resultset.referencesMenu.description
=
Tables referencing current table (with foreign keys)
command.org.jkiss.dbeaver.core.resultset.toggleOrder.name
=
Toggle results soft order
command.org.jkiss.dbeaver.core.resultset.toggleOrder.description
=
Toggle results soft order (ascending/descending/default)
command.org.jkiss.dbeaver.core.edit.copy.adv_info
=
Copy Advanced Info
command.org.jkiss.dbeaver.core.edit.copy.special.label
=
Advanced copy
...
...
plugins/org.jkiss.dbeaver.core/plugin.xml
浏览文件 @
7da826f4
...
...
@@ -315,6 +315,7 @@
<command
id=
"org.jkiss.dbeaver.core.resultset.grid.copyRowNames"
name=
"%command.org.jkiss.dbeaver.core.resultset.grid.copyRowNames.name"
description=
"%command.org.jkiss.dbeaver.core.resultset.grid.copyRowNames.description"
categoryId=
"org.jkiss.dbeaver.core.rs"
/>
<command
id=
"org.jkiss.dbeaver.core.resultset.filterMenu"
name=
"%command.org.jkiss.dbeaver.core.resultset.filterMenu.name"
description=
"%command.org.jkiss.dbeaver.core.resultset.filterMenu.description"
categoryId=
"org.jkiss.dbeaver.core.rs"
/>
<command
id=
"org.jkiss.dbeaver.core.resultset.referencesMenu"
name=
"%command.org.jkiss.dbeaver.core.resultset.referencesMenu.name"
description=
"%command.org.jkiss.dbeaver.core.resultset.referencesMenu.description"
categoryId=
"org.jkiss.dbeaver.core.rs"
/>
<command
id=
"org.jkiss.dbeaver.core.resultset.toggleOrder"
name=
"%command.org.jkiss.dbeaver.core.resultset.toggleOrder.name"
description=
"%command.org.jkiss.dbeaver.core.resultset.toggleOrder.description"
categoryId=
"org.jkiss.dbeaver.core.rs"
/>
<command
id=
"org.jkiss.dbeaver.core.resultset.export"
name=
"%command.org.jkiss.dbeaver.core.resultset.export.name"
description=
"%command.org.jkiss.dbeaver.core.resultset.export.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"
/>
...
...
@@ -1343,6 +1344,9 @@
<handler
commandId=
"org.jkiss.dbeaver.core.resultset.referencesMenu"
class=
"org.jkiss.dbeaver.ui.controls.resultset.ResultSetCommandHandler"
>
<activeWhen><reference
definitionId=
"org.jkiss.dbeaver.core.ui.resultset.part"
/></activeWhen>
</handler>
<handler
commandId=
"org.jkiss.dbeaver.core.resultset.toggleOrder"
class=
"org.jkiss.dbeaver.ui.controls.resultset.ResultSetCommandHandler"
>
<activeWhen><reference
definitionId=
"org.jkiss.dbeaver.core.ui.resultset.part"
/></activeWhen>
</handler>
<handler
commandId=
"org.jkiss.dbeaver.core.resultset.export"
class=
"org.jkiss.dbeaver.ui.controls.resultset.ResultSetCommandHandler"
>
<activeWhen><reference
definitionId=
"org.jkiss.dbeaver.core.ui.resultset.part"
/></activeWhen>
</handler>
...
...
@@ -2425,8 +2429,9 @@
<key
commandId=
"org.jkiss.dbeaver.core.resultset.switchPresentation"
contextId=
"org.jkiss.dbeaver.ui.context.resultset"
schemeId=
"org.eclipse.ui.defaultAcceleratorConfiguration"
sequence=
"CTRL+`"
/>
<key
commandId=
"org.jkiss.dbeaver.core.resultset.navigateLink"
contextId=
"org.jkiss.dbeaver.ui.context.resultset"
schemeId=
"org.eclipse.ui.defaultAcceleratorConfiguration"
sequence=
"ALT+SPACE"
/>
<key
commandId=
"org.jkiss.dbeaver.core.resultset.filterMenu"
contextId=
"org.jkiss.dbeaver.ui.context.resultset"
schemeId=
"org.eclipse.ui.defaultAcceleratorConfiguration"
sequence=
"F11"
/>
<key
commandId=
"org.jkiss.dbeaver.core.resultset.referencesMenu"
contextId=
"org.jkiss.dbeaver.ui.context.resultset"
schemeId=
"org.eclipse.ui.defaultAcceleratorConfiguration"
sequence=
"CTRL+ARROW_DOWN"
/>
<key
commandId=
"org.jkiss.dbeaver.core.resultset.referencesMenu"
contextId=
"org.jkiss.dbeaver.ui.context.resultset"
schemeId=
"org.eclipse.ui.defaultAcceleratorConfiguration"
sequence=
"F4"
/>
<key
commandId=
"org.jkiss.dbeaver.core.resultset.referencesMenu"
contextId=
"org.jkiss.dbeaver.ui.context.resultset.focused"
schemeId=
"org.eclipse.ui.defaultAcceleratorConfiguration"
sequence=
"CTRL+ARROW_DOWN"
/>
<key
commandId=
"org.jkiss.dbeaver.core.resultset.referencesMenu"
contextId=
"org.jkiss.dbeaver.ui.context.resultset"
schemeId=
"org.eclipse.ui.defaultAcceleratorConfiguration"
sequence=
"CTRL+1"
/>
<key
commandId=
"org.jkiss.dbeaver.core.resultset.toggleOrder"
contextId=
"org.jkiss.dbeaver.ui.context.resultset"
schemeId=
"org.eclipse.ui.defaultAcceleratorConfiguration"
sequence=
"CTRL+2"
/>
<key
commandId=
"org.jkiss.dbeaver.core.resultset.row.first"
contextId=
"org.jkiss.dbeaver.ui.context.resultset.focused"
schemeId=
"org.eclipse.ui.defaultAcceleratorConfiguration"
sequence=
"CTRL+SHIFT+ARROW_LEFT"
/>
<key
commandId=
"org.jkiss.dbeaver.core.resultset.row.previous"
contextId=
"org.jkiss.dbeaver.ui.context.resultset.focused"
schemeId=
"org.eclipse.ui.defaultAcceleratorConfiguration"
sequence=
"CTRL+ARROW_LEFT"
/>
<key
commandId=
"org.jkiss.dbeaver.core.resultset.row.next"
contextId=
"org.jkiss.dbeaver.ui.context.resultset.focused"
schemeId=
"org.eclipse.ui.defaultAcceleratorConfiguration"
sequence=
"CTRL+ARROW_RIGHT"
/>
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/core/CoreMessages.java
浏览文件 @
7da826f4
...
...
@@ -237,7 +237,6 @@ public class CoreMessages extends NLS {
public
static
String
controls_resultset_viewer_action_edit
;
public
static
String
controls_resultset_viewer_action_order_filter
;
public
static
String
controls_resultset_viewer_action_custom_filter
;
public
static
String
controls_resultset_viewer_action_referencing_tables
;
public
static
String
controls_resultset_viewer_action_refresh
;
public
static
String
controls_resultset_viewer_action_panels
;
public
static
String
controls_resultset_viewer_action_options
;
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/core/CoreResources.properties
浏览文件 @
7da826f4
...
...
@@ -238,7 +238,6 @@ controls_resultset_filter_label_where = Where
controls_resultset_filter_title
=
Result Set Order/Filter Settings
controls_resultset_filter_warning_custom_order_disabled
=
Data filters and custom orderings are disabled for custom queries
controls_resultset_viewer_action_custom_filter
=
Advanced ...
controls_resultset_viewer_action_referencing_tables
=
Referencing tables
controls_resultset_viewer_action_edit
=
Edit ...
#controls_resultset_viewer_action_export = Export Resultset ...
controls_resultset_viewer_action_options
=
Configure
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/IResultSetController.java
浏览文件 @
7da826f4
...
...
@@ -85,6 +85,8 @@ public interface IResultSetController extends DBPContextProvider {
List
<
DBEPersistAction
>
generateChangesScript
(
@NotNull
DBRProgressMonitor
monitor
);
void
toggleSortOrder
(
DBDAttributeBinding
columnElement
,
boolean
forceAscending
,
boolean
forceDescending
);
boolean
checkForChanges
();
/**
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetCommandHandler.java
浏览文件 @
7da826f4
...
...
@@ -108,6 +108,8 @@ public class ResultSetCommandHandler extends AbstractHandler {
public
static
final
String
CMD_ZOOM_IN
=
"org.eclipse.ui.edit.text.zoomIn"
;
public
static
final
String
CMD_ZOOM_OUT
=
"org.eclipse.ui.edit.text.zoomOut"
;
public
static
final
String
CMD_TOGGLE_ORDER
=
"org.jkiss.dbeaver.core.resultset.toggleOrder"
;
public
static
IResultSetController
getActiveResultSet
(
IWorkbenchPart
activePart
)
{
if
(
activePart
instanceof
IResultSetContainer
)
{
return
((
IResultSetContainer
)
activePart
).
getResultSetController
();
...
...
@@ -335,7 +337,7 @@ public class ResultSetCommandHandler extends AbstractHandler {
rsv
.
getAdapter
(
IFindReplaceTarget
.
class
));
action
.
run
();
break
;
case
CMD_NAVIGATE_LINK:
case
CMD_NAVIGATE_LINK:
{
final
ResultSetRow
row
=
rsv
.
getCurrentRow
();
final
DBDAttributeBinding
attr
=
rsv
.
getActivePresentation
().
getCurrentAttribute
();
if
(
row
!=
null
&&
attr
!=
null
)
{
...
...
@@ -352,6 +354,7 @@ public class ResultSetCommandHandler extends AbstractHandler {
}.
schedule
();
}
break
;
}
case
CMD_COUNT:
rsv
.
updateRowCount
();
break
;
...
...
@@ -438,6 +441,14 @@ public class ResultSetCommandHandler extends AbstractHandler {
break
;
}
case
CMD_TOGGLE_ORDER:
{
final
DBDAttributeBinding
attr
=
rsv
.
getActivePresentation
().
getCurrentAttribute
();
if
(
attr
!=
null
)
{
rsv
.
toggleSortOrder
(
attr
,
false
,
false
);
}
break
;
}
}
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetViewer.java
浏览文件 @
7da826f4
...
...
@@ -1363,6 +1363,63 @@ public class ResultSetViewer extends Viewer
}
}
///////////////////////////////////////
// Ordering
@Override
public
void
toggleSortOrder
(
DBDAttributeBinding
columnElement
,
boolean
forceAscending
,
boolean
forceDescending
)
{
DBDDataFilter
dataFilter
=
getModel
().
getDataFilter
();
if
(
forceAscending
)
{
dataFilter
.
resetOrderBy
();
}
DBDAttributeBinding
metaColumn
=
columnElement
;
DBDAttributeConstraint
constraint
=
dataFilter
.
getConstraint
(
metaColumn
);
assert
constraint
!=
null
;
//int newSort;
if
(
constraint
.
getOrderPosition
()
==
0
)
{
if
(
ResultSetUtils
.
isServerSideFiltering
(
this
)
&&
supportsDataFilter
())
{
if
(
ConfirmationDialog
.
showConfirmDialogEx
(
viewerPanel
.
getShell
(),
DBeaverPreferences
.
CONFIRM_ORDER_RESULTSET
,
ConfirmationDialog
.
QUESTION
,
ConfirmationDialog
.
WARNING
,
metaColumn
.
getName
())
!=
IDialogConstants
.
YES_ID
)
{
return
;
}
}
constraint
.
setOrderPosition
(
dataFilter
.
getMaxOrderingPosition
()
+
1
);
constraint
.
setOrderDescending
(
forceDescending
);
}
else
if
(!
constraint
.
isOrderDescending
())
{
constraint
.
setOrderDescending
(
true
);
}
else
{
for
(
DBDAttributeConstraint
con2
:
dataFilter
.
getConstraints
())
{
if
(
con2
.
getOrderPosition
()
>
constraint
.
getOrderPosition
())
{
con2
.
setOrderPosition
(
con2
.
getOrderPosition
()
-
1
);
}
}
constraint
.
setOrderPosition
(
0
);
constraint
.
setOrderDescending
(
false
);
}
if
(!
ResultSetUtils
.
isServerSideFiltering
(
this
)
||
!
this
.
isHasMoreData
())
{
if
(!
this
.
checkForChanges
())
{
return
;
}
reorderLocally
();
}
else
{
this
.
refreshData
(
null
);
}
}
private
void
reorderLocally
()
{
this
.
rejectChanges
();
this
.
getModel
().
resetOrdering
();
this
.
getActivePresentation
().
refreshData
(
false
,
false
,
true
);
}
///////////////////////////////////////
// Data & metadata
...
...
@@ -1762,11 +1819,7 @@ public class ResultSetViewer extends Viewer
if
(
singleSource
==
null
)
{
return
null
;
}
String
refsShortcut
=
ActionUtils
.
findCommandDescription
(
ResultSetCommandHandler
.
CMD_REFERENCES_MENU
,
getSite
(),
true
);
String
menuName
=
CoreMessages
.
controls_resultset_viewer_action_referencing_tables
;
if
(!
CommonUtils
.
isEmpty
(
refsShortcut
))
{
menuName
+=
" ("
+
refsShortcut
+
")"
;
}
String
menuName
=
ActionUtils
.
findCommandDescription
(
ResultSetCommandHandler
.
CMD_REFERENCES_MENU
,
getSite
(),
false
);
MenuManager
refTablesMenu
=
new
MenuManager
(
menuName
,
null
,
"ref-tables"
);
refTablesMenu
.
add
(
NOREFS_ACTION
);
...
...
@@ -2007,6 +2060,7 @@ public class ResultSetViewer extends Viewer
}
}
filtersMenu
.
add
(
new
Separator
());
filtersMenu
.
add
(
ActionUtils
.
makeCommandContribution
(
site
,
ResultSetCommandHandler
.
CMD_TOGGLE_ORDER
));
filtersMenu
.
add
(
new
ToggleServerSideOrderingAction
());
filtersMenu
.
add
(
new
ShowFiltersAction
(
true
));
}
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/spreadsheet/SpreadsheetPresentation.java
浏览文件 @
7da826f4
...
...
@@ -298,11 +298,13 @@ public class SpreadsheetPresentation extends AbstractPresentation implements IRe
@Override
public
Point
getCursorLocation
()
{
GridPos
focusPos
=
spreadsheet
.
getFocusPos
();
Rectangle
columnBounds
=
spreadsheet
.
getColumnBounds
(
focusPos
.
col
);
if
(
columnBounds
!=
null
)
{
columnBounds
.
y
+=
spreadsheet
.
getHeaderHeight
()
+
(
focusPos
.
row
-
spreadsheet
.
getTopIndex
())
*
(
spreadsheet
.
getItemHeight
()
+
1
)
+
spreadsheet
.
getItemHeight
()
/
2
;
return
new
Point
(
columnBounds
.
x
+
20
,
columnBounds
.
y
);
if
(
focusPos
.
col
>=
0
)
{
Rectangle
columnBounds
=
spreadsheet
.
getColumnBounds
(
focusPos
.
col
);
if
(
columnBounds
!=
null
)
{
columnBounds
.
y
+=
spreadsheet
.
getHeaderHeight
()
+
(
focusPos
.
row
-
spreadsheet
.
getTopIndex
())
*
(
spreadsheet
.
getItemHeight
()
+
1
)
+
spreadsheet
.
getItemHeight
()
/
2
;
return
new
Point
(
columnBounds
.
x
+
20
,
columnBounds
.
y
);
}
}
return
super
.
getCursorLocation
();
}
...
...
@@ -659,7 +661,6 @@ public class SpreadsheetPresentation extends AbstractPresentation implements IRe
@Override
public
void
formatData
(
boolean
refreshData
)
{
reorderLocally
();
spreadsheet
.
refreshData
(
false
,
true
);
}
...
...
@@ -1009,13 +1010,6 @@ public class SpreadsheetPresentation extends AbstractPresentation implements IRe
(
dataContainer
.
getSupportedFeatures
()
&
DBSDataContainer
.
DATA_FILTER
)
==
DBSDataContainer
.
DATA_FILTER
;
}
private
void
reorderLocally
()
{
controller
.
rejectChanges
();
controller
.
getModel
().
resetOrdering
();
refreshData
(
false
,
false
,
true
);
}
public
void
changeSorting
(
Object
columnElement
,
final
int
state
)
{
if
(
columnElement
==
null
)
{
...
...
@@ -1024,53 +1018,11 @@ public class SpreadsheetPresentation extends AbstractPresentation implements IRe
spreadsheet
.
redrawGrid
();
return
;
}
DBDDataFilter
dataFilter
=
controller
.
getModel
().
getDataFilter
();
boolean
ctrlPressed
=
(
state
&
SWT
.
CTRL
)
==
SWT
.
CTRL
;
boolean
altPressed
=
(
state
&
SWT
.
ALT
)
==
SWT
.
ALT
;
if
(
ctrlPressed
)
{
dataFilter
.
resetOrderBy
();
}
DBDAttributeBinding
metaColumn
=
(
DBDAttributeBinding
)
columnElement
;
DBDAttributeConstraint
constraint
=
dataFilter
.
getConstraint
(
metaColumn
);
assert
constraint
!=
null
;
//int newSort;
if
(
constraint
.
getOrderPosition
()
==
0
)
{
if
(
ResultSetUtils
.
isServerSideFiltering
(
controller
)
&&
supportsDataFilter
())
{
if
(
ConfirmationDialog
.
showConfirmDialogEx
(
spreadsheet
.
getShell
(),
DBeaverPreferences
.
CONFIRM_ORDER_RESULTSET
,
ConfirmationDialog
.
QUESTION
,
ConfirmationDialog
.
WARNING
,
metaColumn
.
getName
())
!=
IDialogConstants
.
YES_ID
)
{
return
;
}
}
constraint
.
setOrderPosition
(
dataFilter
.
getMaxOrderingPosition
()
+
1
);
constraint
.
setOrderDescending
(
altPressed
);
}
else
if
(!
constraint
.
isOrderDescending
())
{
constraint
.
setOrderDescending
(
true
);
}
else
{
for
(
DBDAttributeConstraint
con2
:
dataFilter
.
getConstraints
())
{
if
(
con2
.
getOrderPosition
()
>
constraint
.
getOrderPosition
())
{
con2
.
setOrderPosition
(
con2
.
getOrderPosition
()
-
1
);
}
}
constraint
.
setOrderPosition
(
0
);
constraint
.
setOrderDescending
(
false
);
}
if
(!
ResultSetUtils
.
isServerSideFiltering
(
controller
)
||
!
controller
.
isHasMoreData
())
{
if
(!
controller
.
checkForChanges
())
{
return
;
}
reorderLocally
();
}
else
{
controller
.
refreshData
(
null
);
}
controller
.
toggleSortOrder
((
DBDAttributeBinding
)
columnElement
,
ctrlPressed
,
altPressed
);
}
///////////////////////////////////////////////
// Misc
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录