Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
suliangchun
dbeaver
提交
7bcfebce
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,发现更多精彩内容 >>
提交
7bcfebce
编写于
5月 05, 2013
作者:
J
jurgen
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Multiple result sets support
NSIS installer fix
上级
ee7fac59
变更
13
隐藏空白更改
内联
并排
Showing
13 changed file
with
217 addition
and
81 deletion
+217
-81
plugins/org.jkiss.dbeaver.core/icons/sql/sql_exec_new.png
plugins/org.jkiss.dbeaver.core/icons/sql/sql_exec_new.png
+0
-0
plugins/org.jkiss.dbeaver.core/plugin.properties
plugins/org.jkiss.dbeaver.core/plugin.properties
+2
-0
plugins/org.jkiss.dbeaver.core/plugin.xml
plugins/org.jkiss.dbeaver.core/plugin.xml
+19
-4
plugins/org.jkiss.dbeaver.core/plugin_ru.properties
plugins/org.jkiss.dbeaver.core/plugin_ru.properties
+2
-0
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetViewer.java
.../jkiss/dbeaver/ui/controls/resultset/ResultSetViewer.java
+1
-1
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/data/CursorViewDialog.java
...c/org/jkiss/dbeaver/ui/dialogs/data/CursorViewDialog.java
+3
-2
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/data/DatabaseDataEditor.java
...org/jkiss/dbeaver/ui/editors/data/DatabaseDataEditor.java
+15
-9
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditor.java
....core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditor.java
+115
-51
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/handlers/ExecuteResultSetHandler.java
...aver/ui/editors/sql/handlers/ExecuteResultSetHandler.java
+41
-0
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/handlers/ExecuteScriptHandler.java
...dbeaver/ui/editors/sql/handlers/ExecuteScriptHandler.java
+1
-1
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/handlers/ExecuteStatementHandler.java
...aver/ui/editors/sql/handlers/ExecuteStatementHandler.java
+1
-1
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/log/SQLLogFilter.java
...rc/org/jkiss/dbeaver/ui/editors/sql/log/SQLLogFilter.java
+14
-10
product/installer/nsis/install.cmd
product/installer/nsis/install.cmd
+3
-2
未找到文件。
plugins/org.jkiss.dbeaver.core/icons/sql/sql_exec_new.png
0 → 100644
浏览文件 @
7bcfebce
746 字节
plugins/org.jkiss.dbeaver.core/plugin.properties
浏览文件 @
7bcfebce
...
...
@@ -89,6 +89,8 @@ command.org.jkiss.dbeaver.core.object.filter.description=Filter objects
command.org.jkiss.dbeaver.ui.editors.sql.run.statement.name
=
Execute SQL Statement
command.org.jkiss.dbeaver.ui.editors.sql.run.statement.description
=
Execute Statement
command.org.jkiss.dbeaver.ui.editors.sql.run.resultSet.name
=
Execute New SQL Statement
command.org.jkiss.dbeaver.ui.editors.sql.run.resultSet.description
=
Execute Statement in new result set viewer
command.org.jkiss.dbeaver.ui.editors.sql.run.script.name
=
Execute SQL Script
command.org.jkiss.dbeaver.ui.editors.sql.run.script.description
=
Execute script
command.org.jkiss.dbeaver.ui.editors.sql.run.explain.name
=
Explain Execution Plan
...
...
plugins/org.jkiss.dbeaver.core/plugin.xml
浏览文件 @
7bcfebce
...
...
@@ -195,6 +195,7 @@
<command
id=
"org.jkiss.dbeaver.core.object.filter"
name=
"%command.org.jkiss.dbeaver.core.object.filter.name"
description=
"%command.org.jkiss.dbeaver.core.object.filter.description"
categoryId=
"org.jkiss.dbeaver.core.database"
/>
<command
id=
"org.jkiss.dbeaver.ui.editors.sql.run.statement"
name=
"%command.org.jkiss.dbeaver.ui.editors.sql.run.statement.name"
description=
"%command.org.jkiss.dbeaver.ui.editors.sql.run.statement.description"
categoryId=
"org.jkiss.dbeaver.core.sql"
/>
<command
id=
"org.jkiss.dbeaver.ui.editors.sql.run.resultSet"
name=
"%command.org.jkiss.dbeaver.ui.editors.sql.run.resultSet.name"
description=
"%command.org.jkiss.dbeaver.ui.editors.sql.run.resultSet.description"
categoryId=
"org.jkiss.dbeaver.core.sql"
/>
<command
id=
"org.jkiss.dbeaver.ui.editors.sql.run.script"
name=
"%command.org.jkiss.dbeaver.ui.editors.sql.run.script.name"
description=
"%command.org.jkiss.dbeaver.ui.editors.sql.run.script.description"
categoryId=
"org.jkiss.dbeaver.core.sql"
/>
<command
id=
"org.jkiss.dbeaver.ui.editors.sql.run.explain"
name=
"%command.org.jkiss.dbeaver.ui.editors.sql.run.explain.name"
description=
"%command.org.jkiss.dbeaver.ui.editors.sql.run.explain.description"
categoryId=
"org.jkiss.dbeaver.core.sql"
/>
<command
id=
"org.jkiss.dbeaver.ui.editors.sql.run.validate"
name=
"%command.org.jkiss.dbeaver.ui.editors.sql.run.validate.name"
description=
"%command.org.jkiss.dbeaver.ui.editors.sql.run.validate.description"
categoryId=
"org.jkiss.dbeaver.core.sql"
/>
...
...
@@ -265,6 +266,7 @@
<image
commandId=
"org.jkiss.dbeaver.core.object.filter"
icon=
"icons/misc/filter.png"
/>
<image
commandId=
"org.jkiss.dbeaver.ui.editors.sql.run.statement"
icon=
"icons/sql/sql_exec.png"
/>
<image
commandId=
"org.jkiss.dbeaver.ui.editors.sql.run.resultSet"
icon=
"icons/sql/sql_exec_new.png"
/>
<image
commandId=
"org.jkiss.dbeaver.ui.editors.sql.run.script"
icon=
"icons/sql/sql_script_exec.png"
/>
<image
commandId=
"org.jkiss.dbeaver.ui.editors.sql.run.explain"
icon=
"icons/sql/sql_plan.png"
/>
<image
commandId=
"org.jkiss.dbeaver.ui.editors.sql.run.validate"
icon=
"icons/sql/sql_validate.png"
/>
...
...
@@ -727,15 +729,15 @@
</with>
</enabledWhen>
</handler>
<
!--handler commandId="org.eclipse.ui.file.refresh" class="org.jkiss.dbeaver.ui.editors.sql.handlerss.handlers.ExecuteStatemen
tHandler">
<
handler
commandId=
"org.jkiss.dbeaver.ui.editors.sql.run.resultSet"
class=
"org.jkiss.dbeaver.ui.editors.sql.handlers.ExecuteResultSe
tHandler"
>
<enabledWhen>
<with
variable=
"activeEditor"
>
<adapt
type=
"org.jkiss.dbeaver.ui.editors.sql.SQLEditor"
>
<test property="org.jkiss.dbeaver.ui.editors.sql.canExecute"/>
<test
property=
"org.jkiss.dbeaver.ui.editors.sql.canExecute"
value=
"statement"
/>
</adapt>
</with>
</enabledWhen>
</handler
--
>
</handler>
<handler
commandId=
"org.jkiss.dbeaver.ui.editors.sql.run.script"
class=
"org.jkiss.dbeaver.ui.editors.sql.handlers.ExecuteScriptHandler"
>
<enabledWhen>
<with
variable=
"activeEditor"
>
...
...
@@ -1444,6 +1446,13 @@
</with>
</visibleWhen>
</command>
<command
commandId=
"org.jkiss.dbeaver.ui.editors.sql.run.resultSet"
>
<visibleWhen>
<with
variable=
"activeEditor"
>
<instanceof
value=
"org.jkiss.dbeaver.ui.editors.sql.SQLEditor"
/>
</with>
</visibleWhen>
</command>
<command
commandId=
"org.jkiss.dbeaver.ui.editors.sql.run.script"
>
<visibleWhen>
<with
variable=
"activeEditor"
>
...
...
@@ -1497,6 +1506,7 @@
<command
commandId=
"org.jkiss.dbeaver.ui.editors.sql.save.file"
/>
<separator
name=
"execute"
visible=
"true"
/>
<command
commandId=
"org.jkiss.dbeaver.ui.editors.sql.run.statement"
/>
<command
commandId=
"org.jkiss.dbeaver.ui.editors.sql.run.resultSet"
/>
<command
commandId=
"org.jkiss.dbeaver.ui.editors.sql.run.script"
/>
<command
commandId=
"org.jkiss.dbeaver.ui.editors.sql.export.data"
/>
<separator
name=
"other"
visible=
"true"
/>
...
...
@@ -1556,6 +1566,11 @@
contextId=
"org.jkiss.dbeaver.ui.editors.sql"
schemeId=
"org.eclipse.ui.defaultAcceleratorConfiguration"
sequence=
"CTRL+Enter"
/>
<key
commandId=
"org.jkiss.dbeaver.ui.editors.sql.run.resultSet"
contextId=
"org.jkiss.dbeaver.ui.editors.sql"
schemeId=
"org.eclipse.ui.defaultAcceleratorConfiguration"
sequence=
"CTRL+SHIFT+Enter"
/>
<key
commandId=
"org.jkiss.dbeaver.ui.editors.sql.run.script"
contextId=
"org.jkiss.dbeaver.ui.editors.sql"
...
...
@@ -1565,7 +1580,7 @@
commandId=
"org.jkiss.dbeaver.ui.editors.sql.run.explain"
contextId=
"org.jkiss.dbeaver.ui.editors.sql"
schemeId=
"org.eclipse.ui.defaultAcceleratorConfiguration"
sequence=
"CTRL+SHIFT+E
nter
"
/>
sequence=
"CTRL+SHIFT+E"
/>
<key
commandId=
"org.jkiss.dbeaver.ui.editors.sql.navigate.object"
contextId=
"org.jkiss.dbeaver.ui.editors.sql"
...
...
plugins/org.jkiss.dbeaver.core/plugin_ru.properties
浏览文件 @
7bcfebce
...
...
@@ -94,6 +94,8 @@ command.org.jkiss.dbeaver.core.object.filter.description=\u0424\u0438\u043B\u044
command.org.jkiss.dbeaver.ui.editors.sql.run.statement.name=
\u0412\u
044B
\u
043F
\u
043E
\u
043B
\u
043D
\u0438\u0442\u
044C SQL
\u0432\u
044B
\u0440\u0430\u0436\u0435\u
043D
\u0438\u0435
command.org.jkiss.dbeaver.ui.editors.sql.run.statement.description=
\u0412\u
044B
\u
043F
\u
043E
\u
043B
\u
043D
\u0438\u0442\u
044C SQL
\u0432\u
044B
\u0440\u0430\u0436\u0435\u
043D
\u0438\u0435
command.org.jkiss.dbeaver.ui.editors.sql.run.resultSet.name=
\u0412\u
044B
\u
043F
\u
043E
\u
043B
\u
043D
\u0438\u0442\u
044C
\u
043D
\u
043E
\u0432\u
043E
\u0435
SQL
\u0432\u
044B
\u0440\u0430\u0436\u0435\u
043D
\u0438\u0435
command.org.jkiss.dbeaver.ui.editors.sql.run.resultSet.description=
\u0412\u
044B
\u
043F
\u
043E
\u
043B
\u
043D
\u0438\u0442\u
044C SQL
\u0432\u
044B
\u0440\u0430\u0436\u0435\u
043D
\u0438\u0435
\u0432
\u
043D
\u
043E
\u0432\u
043E
\u0439
\u0437\u0430\u
043A
\u
043B
\u0430\u0434\u
043A
\u0435
command.org.jkiss.dbeaver.ui.editors.sql.run.script.name=
\u0412\u
044B
\u
043F
\u
043E
\u
043B
\u
043D
\u0438\u0442\u
044C SQL
\u0441\u
043A
\u0440\u0438\u
043F
\u0442
command.org.jkiss.dbeaver.ui.editors.sql.run.script.description=
\u0412\u
044B
\u
043F
\u
043E
\u
043B
\u
043D
\u0438\u0442\u
044C
\u0441\u
043A
\u0440\u0438\u
043F
\u0442
command.org.jkiss.dbeaver.ui.editors.sql.run.explain.name=
\u
041F
\u
043E
\u
043B
\u0443\u0447\u0438\u0442\u
044C
\u
043F
\u
043B
\u0430\u
043D
\u0432\u
044B
\u
043F
\u
043E
\u
043B
\u
043D
\u0435\u
043D
\u0438\u
044F
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetViewer.java
浏览文件 @
7bcfebce
...
...
@@ -321,7 +321,7 @@ public class ResultSetViewer extends Viewer implements IDataSourceProvider, ISpr
//UIUtils.createControlLabel(filtersPanel, " Filter");
this
.
filtersText
=
new
Combo
(
filtersPanel
,
SWT
.
BORDER
|
SWT
.
DROP_DOWN
);
this
.
filtersText
=
new
Combo
(
filtersPanel
,
SWT
.
BORDER
|
SWT
.
DROP_DOWN
|
SWT
.
NO_FOCUS
);
this
.
filtersText
.
setLayoutData
(
new
GridData
(
GridData
.
FILL_HORIZONTAL
));
this
.
filtersText
.
addSelectionListener
(
new
SelectionAdapter
()
{
@Override
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/data/CursorViewDialog.java
浏览文件 @
7bcfebce
...
...
@@ -40,7 +40,6 @@ import org.jkiss.dbeaver.model.struct.DBSObject;
import
org.jkiss.dbeaver.ui.controls.resultset.ResultSetProvider
;
import
org.jkiss.dbeaver.ui.controls.resultset.ResultSetViewer
;
import
org.jkiss.dbeaver.ui.dialogs.ConfirmationDialog
;
import
org.jkiss.dbeaver.ui.editors.sql.SQLEditor
;
import
org.jkiss.dbeaver.ui.preferences.PrefConstants
;
/**
...
...
@@ -74,7 +73,9 @@ public class CursorViewDialog extends ValueViewDialog implements ResultSetProvid
PrefConstants
.
CONFIRM_KEEP_STATEMENT_OPEN
,
ConfirmationDialog
.
QUESTION
)
==
IDialogConstants
.
YES_ID
)
{
globalPreferenceStore
.
setValue
(
PrefConstants
.
KEEP_STATEMENT_OPEN
,
true
);
((
SQLEditor
)
valueController
.
getValueSite
().
getPart
()).
getResultsView
().
refresh
();
if
(
valueController
.
getValueSite
().
getPart
()
instanceof
ResultSetProvider
)
{
((
ResultSetProvider
)
valueController
.
getValueSite
().
getPart
()).
getResultSetViewer
().
refresh
();
}
}
dialogGroup
.
getDisplay
().
asyncExec
(
new
Runnable
()
{
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/data/DatabaseDataEditor.java
浏览文件 @
7bcfebce
...
...
@@ -53,15 +53,7 @@ public class DatabaseDataEditor extends AbstractDatabaseObjectEditor<DBSDataCont
@Override
public
void
activatePart
()
{
if
(
resultSetView
==
null
)
{
resultSetView
=
new
ResultSetViewer
(
parent
,
getSite
(),
this
);
resultSetView
.
addListener
(
this
);
parent
.
layout
();
resultSetView
.
getControl
().
setFocus
();
// Set selection provider from resultset
getSite
().
setSelectionProvider
(
resultSetView
);
}
createResultSetView
();
// FindReplaceAction action = (FindReplaceAction)getEditorSite().getActionBars().getGlobalActionHandler(ActionFactory.FIND.getId());
// if (action != null) {
...
...
@@ -78,6 +70,19 @@ public class DatabaseDataEditor extends AbstractDatabaseObjectEditor<DBSDataCont
//resultSetView.setSelection(resultSetView.getSelection());
}
private
void
createResultSetView
()
{
if
(
resultSetView
==
null
)
{
resultSetView
=
new
ResultSetViewer
(
parent
,
getSite
(),
this
);
resultSetView
.
addListener
(
this
);
parent
.
layout
();
resultSetView
.
getControl
().
setFocus
();
// Set selection provider from resultset
getSite
().
setSelectionProvider
(
resultSetView
);
}
}
@Override
public
void
deactivatePart
()
{
...
...
@@ -113,6 +118,7 @@ public class DatabaseDataEditor extends AbstractDatabaseObjectEditor<DBSDataCont
@Override
public
void
setFocus
()
{
createResultSetView
();
if
(
resultSetView
!=
null
)
{
resultSetView
.
getSpreadsheet
().
setFocus
();
}
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditor.java
浏览文件 @
7bcfebce
...
...
@@ -32,10 +32,7 @@ import org.eclipse.swt.SWT;
import
org.eclipse.swt.custom.CTabFolder
;
import
org.eclipse.swt.custom.CTabItem
;
import
org.eclipse.swt.custom.SashForm
;
import
org.eclipse.swt.events.FocusAdapter
;
import
org.eclipse.swt.events.FocusEvent
;
import
org.eclipse.swt.events.SelectionAdapter
;
import
org.eclipse.swt.events.SelectionEvent
;
import
org.eclipse.swt.events.*
;
import
org.eclipse.swt.graphics.Image
;
import
org.eclipse.swt.graphics.Point
;
import
org.eclipse.swt.layout.GridData
;
...
...
@@ -94,16 +91,12 @@ public class SQLEditor extends SQLEditorBase
DBPEventListener
,
ISaveablePart2
,
ResultSetProvider
,
DBPDataSourceUser
,
DBPDataSourceHandler
{
static
final
int
PAGE_INDEX_RESULTSET
=
0
;
static
final
int
PAGE_INDEX_PLAN
=
1
;
static
final
int
PAGE_INDEX_LOG
=
2
;
private
static
final
long
SCRIPT_UI_UPDATE_PERIOD
=
100
;
private
SashForm
sashForm
;
private
Control
editorControl
;
private
CTabFolder
resultTabs
;
private
ResultSetViewer
resultsView
;
private
final
List
<
ResultSetViewer
>
resultSetViewers
=
new
ArrayList
<
ResultSetViewer
>()
;
private
ExplainPlanViewer
planView
;
...
...
@@ -111,11 +104,12 @@ public class SQLEditor extends SQLEditorBase
private
volatile
int
curJobRunning
=
0
;
private
final
DataContainer
dataContainer
;
private
DBSDataSourceContainer
dataSourceContainer
;
private
final
DynamicFindReplaceTarget
findReplaceTarget
=
new
DynamicFindReplaceTarget
();
;
private
final
DynamicFindReplaceTarget
findReplaceTarget
=
new
DynamicFindReplaceTarget
();
private
static
Image
imgDataGrid
;
private
static
Image
imgExplainPlan
;
private
static
Image
imgLog
;
private
CompositeSelectionProvider
selectionProvider
;
static
{
imgDataGrid
=
DBeaverActivator
.
getImageDescriptor
(
"/icons/sql/page_data_grid.png"
).
createImage
();
//$NON-NLS-1$
...
...
@@ -184,15 +178,18 @@ public class SQLEditor extends SQLEditorBase
return
true
;
}
public
ResultSetViewer
getResultsView
()
{
return
resultsView
;
}
@Override
public
boolean
isDirty
()
{
return
(
resultsView
!=
null
&&
resultsView
.
isDirty
())
||
super
.
isDirty
();
if
(
super
.
isDirty
())
{
return
true
;
}
for
(
ResultSetViewer
viewer
:
resultSetViewers
)
{
if
(
viewer
.
isDirty
())
{
return
true
;
}
}
return
false
;
}
@Override
...
...
@@ -210,6 +207,7 @@ public class SQLEditor extends SQLEditorBase
if
(
required
==
IFindReplaceTarget
.
class
)
{
return
findReplaceTarget
;
}
ResultSetViewer
resultsView
=
getResultSetViewer
();
if
(
resultsView
!=
null
)
{
Object
adapter
=
resultsView
.
getAdapter
(
required
);
if
(
adapter
!=
null
)
{
...
...
@@ -244,6 +242,9 @@ public class SQLEditor extends SQLEditorBase
editorControl
=
sashForm
.
getChildren
()[
0
];
selectionProvider
=
new
CompositeSelectionProvider
();
getSite
().
setSelectionProvider
(
selectionProvider
);
{
resultTabs
=
new
CTabFolder
(
sashForm
,
SWT
.
TOP
|
SWT
.
FLAT
);
resultTabs
.
setLayoutData
(
new
GridData
(
GridData
.
FILL_BOTH
));
...
...
@@ -258,8 +259,6 @@ public class SQLEditor extends SQLEditorBase
resultTabs
.
setSimple
(
true
);
//resultTabs.getItem(0).addListener();
resultsView
=
new
ResultSetViewer
(
resultTabs
,
getSite
(),
this
);
planView
=
new
ExplainPlanViewer
(
this
,
resultTabs
,
this
);
final
SQLLogPanel
logViewer
=
new
SQLLogPanel
(
resultTabs
,
this
);
...
...
@@ -279,38 +278,27 @@ public class SQLEditor extends SQLEditorBase
});
// Create tabs
CTabItem
item
=
new
CTabItem
(
resultTabs
,
SWT
.
NONE
,
PAGE_INDEX_RESULTSET
);
item
.
setControl
(
resultsView
.
getControl
());
item
.
setText
(
CoreMessages
.
editors_sql_data_grid
);
item
.
setImage
(
imgDataGrid
);
createResultSetViewer
();
item
=
new
CTabItem
(
resultTabs
,
SWT
.
NONE
,
PAGE_INDEX_PLAN
);
CTabItem
item
=
new
CTabItem
(
resultTabs
,
SWT
.
NONE
);
item
.
setControl
(
planView
.
getControl
());
item
.
setText
(
CoreMessages
.
editors_sql_explain_plan
);
item
.
setImage
(
imgExplainPlan
);
item
.
setData
(
planView
);
item
=
new
CTabItem
(
resultTabs
,
SWT
.
NONE
,
PAGE_INDEX_LOG
);
item
=
new
CTabItem
(
resultTabs
,
SWT
.
NONE
);
item
.
setControl
(
logViewer
);
item
.
setText
(
CoreMessages
.
editors_sql_execution_log
);
item
.
setImage
(
imgLog
);
item
.
setData
(
logViewer
);
resultTabs
.
setSelection
(
0
);
final
CompositeSelectionProvider
selectionProvider
=
new
CompositeSelectionProvider
();
selectionProvider
.
trackViewer
(
getTextViewer
().
getTextWidget
(),
getTextViewer
());
selectionProvider
.
trackViewer
(
resultsView
.
getSpreadsheet
(),
resultsView
);
selectionProvider
.
trackViewer
(
planView
.
getViewer
().
getControl
(),
planView
.
getViewer
());
getSite
().
setSelectionProvider
(
selectionProvider
);
}
// Find/replace target activation
resultsView
.
getSpreadsheet
().
addFocusListener
(
new
FocusAdapter
()
{
@Override
public
void
focusGained
(
FocusEvent
e
)
{
findReplaceTarget
.
setTarget
(
resultsView
.
getFindReplaceTarget
());
}
});
getViewer
().
getTextWidget
().
addFocusListener
(
new
FocusAdapter
()
{
@Override
public
void
focusGained
(
FocusEvent
e
)
...
...
@@ -328,6 +316,54 @@ public class SQLEditor extends SQLEditorBase
onDataSourceChange
();
}
private
ResultSetViewer
createResultSetViewer
()
{
boolean
firstResultSet
=
resultSetViewers
.
isEmpty
();
final
ResultSetViewer
resultsView
=
new
ResultSetViewer
(
resultTabs
,
getSite
(),
this
);
resultSetViewers
.
add
(
resultsView
);
selectionProvider
.
trackViewer
(
resultsView
.
getSpreadsheet
(),
resultsView
);
// Find/replace target activation
resultsView
.
getSpreadsheet
().
addFocusListener
(
new
FocusAdapter
()
{
@Override
public
void
focusGained
(
FocusEvent
e
)
{
findReplaceTarget
.
setTarget
(
resultsView
.
getFindReplaceTarget
());
}
});
int
tabIndex
=
resultSetViewers
.
size
()
-
1
;
final
CTabItem
item
=
new
CTabItem
(
resultTabs
,
SWT
.
NONE
,
tabIndex
);
String
tabName
=
CoreMessages
.
editors_sql_data_grid
;
if
(!
firstResultSet
)
{
tabName
+=
" ["
+
tabIndex
+
"]"
;
}
item
.
setText
(
tabName
);
item
.
setImage
(
imgDataGrid
);
item
.
setData
(
resultsView
);
if
(!
firstResultSet
)
{
item
.
setShowClose
(
true
);
}
item
.
setControl
(
resultsView
.
getControl
());
item
.
addDisposeListener
(
new
DisposeListener
()
{
@Override
public
void
widgetDisposed
(
DisposeEvent
e
)
{
ResultSetViewer
viewer
=
(
ResultSetViewer
)
item
.
getData
();
if
(
viewer
!=
null
)
{
resultSetViewers
.
remove
(
viewer
);
}
}
});
if
(!
firstResultSet
)
{
resultTabs
.
setSelection
(
item
);
}
return
resultsView
;
}
@Override
public
IPathEditorInput
getEditorInput
()
{
...
...
@@ -398,7 +434,12 @@ public class SQLEditor extends SQLEditorBase
setStatus
(
CoreMessages
.
editors_sql_status_empty_query_string
,
true
);
return
;
}
resultTabs
.
setSelection
(
PAGE_INDEX_PLAN
);
for
(
CTabItem
item
:
resultTabs
.
getItems
())
{
if
(
item
.
getData
()
==
planView
)
{
resultTabs
.
setSelection
(
item
);
break
;
}
}
try
{
planView
.
explainQueryPlan
(
sqlQuery
.
getQuery
());
}
catch
(
DBCException
e
)
{
...
...
@@ -410,14 +451,13 @@ public class SQLEditor extends SQLEditorBase
}
}
public
void
processSQL
(
boolean
script
)
public
void
processSQL
(
boolean
newTab
,
boolean
script
)
{
IDocument
document
=
getDocument
();
if
(
document
==
null
)
{
setStatus
(
CoreMessages
.
editors_sql_status_cant_obtain_document
,
true
);
return
;
}
resultTabs
.
setSelection
(
PAGE_INDEX_RESULTSET
);
if
(
script
)
{
// Execute all SQL statements consequently
List
<
SQLStatementInfo
>
statementInfos
;
...
...
@@ -427,14 +467,14 @@ public class SQLEditor extends SQLEditorBase
}
else
{
statementInfos
=
extractScriptQueries
(
0
,
document
.
getLength
());
}
processQuery
(
statementInfos
,
false
);
processQuery
(
statementInfos
,
newTab
,
false
);
}
else
{
// Execute statement under cursor or selected text (if selection present)
SQLStatementInfo
sqlQuery
=
extractActiveQuery
();
if
(
sqlQuery
==
null
)
{
setStatus
(
CoreMessages
.
editors_sql_status_empty_query_string
,
true
);
}
else
{
processQuery
(
Collections
.
singletonList
(
sqlQuery
),
false
);
processQuery
(
Collections
.
singletonList
(
sqlQuery
),
newTab
,
false
);
}
}
}
...
...
@@ -443,7 +483,7 @@ public class SQLEditor extends SQLEditorBase
{
SQLStatementInfo
sqlQuery
=
extractActiveQuery
();
if
(
sqlQuery
!=
null
)
{
processQuery
(
Collections
.
singletonList
(
sqlQuery
),
true
);
processQuery
(
Collections
.
singletonList
(
sqlQuery
),
false
,
true
);
}
}
...
...
@@ -513,10 +553,13 @@ public class SQLEditor extends SQLEditorBase
private
void
setStatus
(
String
status
,
boolean
error
)
{
resultsView
.
setStatus
(
status
,
error
);
ResultSetViewer
resultsView
=
getResultSetViewer
();
if
(
resultsView
!=
null
)
{
resultsView
.
setStatus
(
status
,
error
);
}
}
private
void
processQuery
(
final
List
<
SQLStatementInfo
>
queries
,
boolean
export
)
private
void
processQuery
(
final
List
<
SQLStatementInfo
>
queries
,
boolean
newTab
,
boolean
export
)
{
if
(
queries
.
isEmpty
())
{
// Nothing to process
...
...
@@ -540,6 +583,16 @@ public class SQLEditor extends SQLEditorBase
return
;
}
if
(
newTab
)
{
createResultSetViewer
();
}
CTabItem
curTab
=
resultTabs
.
getSelection
();
if
(!(
curTab
.
getData
()
instanceof
ResultSetViewer
))
{
// Set first results viewer by default
resultTabs
.
setSelection
(
0
);
}
final
ResultSetViewer
resultsView
=
getResultSetViewer
();
// Prepare execution job
{
final
ITextSelection
originalSelection
=
(
ITextSelection
)
getSelectionProvider
().
getSelection
();
...
...
@@ -682,6 +735,7 @@ public class SQLEditor extends SQLEditorBase
}
else
{
resultsView
.
setDataFilter
(
new
DBDDataFilter
(),
false
);
resultsView
.
refresh
();
curTab
.
setToolTipText
(
queries
.
get
(
0
).
getQuery
());
}
}
else
{
job
.
schedule
();
...
...
@@ -713,7 +767,7 @@ public class SQLEditor extends SQLEditorBase
}
DatabaseEditorUtils
.
setPartBackground
(
this
,
sashForm
);
if
(
resultsView
!=
null
)
{
for
(
ResultSetViewer
resultsView
:
resultSetViewers
)
{
if
(
getDataSource
()
==
null
)
{
resultsView
.
setStatus
(
CoreMessages
.
editors_sql_status_not_connected_to_database
);
}
else
{
...
...
@@ -776,7 +830,7 @@ public class SQLEditor extends SQLEditorBase
}
planView
=
null
;
result
sView
=
null
;
result
SetViewers
.
clear
()
;
ResourcesPlugin
.
getWorkspace
().
removeResourceChangeListener
(
this
);
super
.
dispose
();
...
...
@@ -814,8 +868,10 @@ public class SQLEditor extends SQLEditorBase
@Override
public
void
doSave
(
IProgressMonitor
progressMonitor
)
{
if
(
resultsView
.
isDirty
())
{
resultsView
.
doSave
(
progressMonitor
);
for
(
ResultSetViewer
resultsView
:
resultSetViewers
)
{
if
(
resultsView
.
isDirty
())
{
resultsView
.
doSave
(
progressMonitor
);
}
}
super
.
doSave
(
progressMonitor
);
}
...
...
@@ -843,17 +899,25 @@ public class SQLEditor extends SQLEditorBase
return
ISaveablePart2
.
CANCEL
;
}
if
(
resultsView
.
isDirty
()
)
{
return
resultsView
.
promptToSaveOnClose
();
}
else
{
return
ISaveablePart2
.
YES
;
for
(
ResultSetViewer
resultsView
:
resultSetViewers
)
{
if
(
resultsView
.
isDirty
())
{
return
resultsView
.
promptToSaveOnClose
();
}
}
return
ISaveablePart2
.
YES
;
}
@Override
public
ResultSetViewer
getResultSetViewer
()
{
return
resultsView
;
CTabItem
curTab
=
resultTabs
==
null
?
null
:
resultTabs
.
getSelection
();
if
(
curTab
!=
null
)
{
Object
tabData
=
curTab
.
getData
();
if
(
tabData
instanceof
ResultSetViewer
)
{
return
(
ResultSetViewer
)
tabData
;
}
}
return
resultSetViewers
.
isEmpty
()
?
null
:
resultSetViewers
.
get
(
0
);
}
@Override
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/handlers/ExecuteResultSetHandler.java
0 → 100644
浏览文件 @
7bcfebce
/*
* Copyright (C) 2010-2012 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.editors.sql.handlers
;
import
org.eclipse.core.commands.AbstractHandler
;
import
org.eclipse.core.commands.ExecutionEvent
;
import
org.eclipse.core.commands.ExecutionException
;
import
org.eclipse.ui.handlers.HandlerUtil
;
import
org.jkiss.dbeaver.runtime.RuntimeUtils
;
import
org.jkiss.dbeaver.ui.editors.sql.SQLEditor
;
public
class
ExecuteResultSetHandler
extends
AbstractHandler
{
@Override
public
Object
execute
(
ExecutionEvent
event
)
throws
ExecutionException
{
SQLEditor
editor
=
RuntimeUtils
.
getObjectAdapter
(
HandlerUtil
.
getActiveEditor
(
event
),
SQLEditor
.
class
);
if
(
editor
!=
null
)
{
editor
.
processSQL
(
true
,
false
);
}
return
null
;
}
}
\ No newline at end of file
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/handlers/ExecuteScriptHandler.java
浏览文件 @
7bcfebce
...
...
@@ -34,7 +34,7 @@ public class ExecuteScriptHandler extends AbstractHandler
{
SQLEditor
editor
=
RuntimeUtils
.
getObjectAdapter
(
HandlerUtil
.
getActiveEditor
(
event
),
SQLEditor
.
class
);
if
(
editor
!=
null
)
{
editor
.
processSQL
(
true
);
editor
.
processSQL
(
false
,
true
);
}
return
null
;
}
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/handlers/ExecuteStatementHandler.java
浏览文件 @
7bcfebce
...
...
@@ -34,7 +34,7 @@ public class ExecuteStatementHandler extends AbstractHandler
{
SQLEditor
editor
=
RuntimeUtils
.
getObjectAdapter
(
HandlerUtil
.
getActiveEditor
(
event
),
SQLEditor
.
class
);
if
(
editor
!=
null
)
{
editor
.
processSQL
(
false
);
editor
.
processSQL
(
false
,
false
);
}
return
null
;
}
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/log/SQLLogFilter.java
浏览文件 @
7bcfebce
...
...
@@ -22,6 +22,7 @@ import org.jkiss.dbeaver.model.exec.DBCStatement;
import
org.jkiss.dbeaver.runtime.qm.QMEventFilter
;
import
org.jkiss.dbeaver.runtime.qm.QMMetaEvent
;
import
org.jkiss.dbeaver.runtime.qm.meta.*
;
import
org.jkiss.dbeaver.ui.controls.resultset.ResultSetViewer
;
import
org.jkiss.dbeaver.ui.editors.sql.SQLEditor
;
/**
...
...
@@ -46,16 +47,19 @@ class SQLLogFilter implements QMEventFilter {
QMMObject
object
=
event
.
getObject
();
if
(
object
instanceof
QMMSessionInfo
)
{
return
((
QMMSessionInfo
)
object
).
getContainer
()
==
editor
.
getDataSourceContainer
();
}
else
if
(
object
instanceof
QMMStatementExecuteInfo
)
{
DBCStatement
statement
=
((
QMMStatementExecuteInfo
)
object
).
getStatement
().
getReference
();
return
statement
!=
null
&&
statement
.
getUserData
()
==
editor
.
getResultsView
().
getDataReceiver
();
}
else
if
(
object
instanceof
QMMStatementInfo
)
{
DBCStatement
statement
=
((
QMMStatementInfo
)
object
).
getReference
();
return
statement
!=
null
&&
statement
.
getUserData
()
==
editor
.
getResultsView
().
getDataReceiver
();
}
else
if
(
object
instanceof
QMMTransactionInfo
)
{
return
((
QMMTransactionInfo
)
object
).
getSession
().
getReference
()
==
editor
.
getDataSource
();
}
else
if
(
object
instanceof
QMMTransactionSavepointInfo
)
{
return
((
QMMTransactionSavepointInfo
)
object
).
getTransaction
().
getSession
().
getReference
()
==
editor
.
getDataSource
();
}
else
{
ResultSetViewer
resultSetViewer
=
editor
.
getResultSetViewer
();
if
(
object
instanceof
QMMStatementExecuteInfo
)
{
DBCStatement
statement
=
((
QMMStatementExecuteInfo
)
object
).
getStatement
().
getReference
();
return
statement
!=
null
&&
resultSetViewer
!=
null
&&
statement
.
getUserData
()
==
resultSetViewer
.
getDataReceiver
();
}
else
if
(
object
instanceof
QMMStatementInfo
)
{
DBCStatement
statement
=
((
QMMStatementInfo
)
object
).
getReference
();
return
statement
!=
null
&&
resultSetViewer
!=
null
&&
statement
.
getUserData
()
==
resultSetViewer
.
getDataReceiver
();
}
else
if
(
object
instanceof
QMMTransactionInfo
)
{
return
((
QMMTransactionInfo
)
object
).
getSession
().
getReference
()
==
editor
.
getDataSource
();
}
else
if
(
object
instanceof
QMMTransactionSavepointInfo
)
{
return
((
QMMTransactionSavepointInfo
)
object
).
getTransaction
().
getSession
().
getReference
()
==
editor
.
getDataSource
();
}
}
return
false
;
}
...
...
product/installer/nsis/install.cmd
浏览文件 @
7bcfebce
@echo
off
echo
Unpack
ja
r
s
echo
Unpack
ja
va
archive
s
call
:unpackJars
plugins
call
:unpackJars
jre
\lib .jar
call
:unpackJars
jre
\lib\ext .jar
echo
Unpack
completed
goto
:EOF
:unpackJars
echo
Unpack
jars
in
"
%
~1"
for
%%f
in
(
%
~
1
\
*
.pack
)
do
(
echo
Unpack
jar
"
%
~1\
%%~nf
"
jre
\bin\unpack200
%
~
1
\
%%~nf
.pack
%
~
1
\
%%~nf
%
~
2
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录