Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
suliangchun
dbeaver
提交
e88d54ea
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,发现更多精彩内容 >>
提交
e88d54ea
编写于
8月 12, 2018
作者:
S
serge-rider
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
#3933 Connection wizard redesign
上级
14535c0d
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
554 addition
and
405 deletion
+554
-405
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/core/CoreMessages.java
...dbeaver.core/src/org/jkiss/dbeaver/core/CoreMessages.java
+3
-0
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/core/CoreResources.properties
....core/src/org/jkiss/dbeaver/core/CoreResources.properties
+4
-0
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/connection/ConnectionPageAbstract.java
...dbeaver/ui/dialogs/connection/ConnectionPageAbstract.java
+1
-1
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/connection/ConnectionPageGeneral.java
.../dbeaver/ui/dialogs/connection/ConnectionPageGeneral.java
+19
-403
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/connection/ConnectionPageInitialization.java
...r/ui/dialogs/connection/ConnectionPageInitialization.java
+499
-0
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/connection/ConnectionPageSettings.java
...dbeaver/ui/dialogs/connection/ConnectionPageSettings.java
+3
-0
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/connection/ConnectionWizard.java
...jkiss/dbeaver/ui/dialogs/connection/ConnectionWizard.java
+18
-0
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/connection/EditConnectionWizard.java
...s/dbeaver/ui/dialogs/connection/EditConnectionWizard.java
+4
-0
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/connection/NewConnectionWizard.java
...ss/dbeaver/ui/dialogs/connection/NewConnectionWizard.java
+3
-1
未找到文件。
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/core/CoreMessages.java
浏览文件 @
e88d54ea
...
...
@@ -350,6 +350,9 @@ public class CoreMessages extends NLS {
public
static
String
dialog_connection_wizard_final_filter_link_not_supported_tooltip
;
public
static
String
dialog_connection_wizard_final_button_tunneling
;
public
static
String
dialog_connection_wizard_connection_init
;
public
static
String
dialog_connection_wizard_connection_init_description
;
public
static
String
dialog_connection_wizard_start_connection_monitor_close
;
public
static
String
dialog_connection_wizard_start_connection_monitor_start
;
public
static
String
dialog_connection_wizard_start_connection_monitor_subtask_test
;
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/core/CoreResources.properties
浏览文件 @
e88d54ea
...
...
@@ -346,6 +346,10 @@ dialog_connection_wizard_final_label_isolation_level_tooltip = Default transacti
dialog_connection_wizard_final_label_keepalive
=
Keep-Alive
dialog_connection_wizard_final_label_keepalive_tooltip
=
Keep-alive interval (in seconds). Zero turns keep-alive off
dialog_connection_wizard_final_label_shell_command
=
Shell Commands
dialog_connection_wizard_connection_init
=
Initialization
dialog_connection_wizard_connection_init_description
=
Database connection initialization settings
dialog_connection_wizard_socksproxy_host
=
Host
dialog_connection_wizard_socksproxy_password
=
Password
dialog_connection_wizard_socksproxy_port
=
Port
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/connection/ConnectionPageAbstract.java
浏览文件 @
e88d54ea
...
...
@@ -114,7 +114,7 @@ public abstract class ConnectionPageAbstract extends DialogPage implements IData
infoLabel
.
setToolTipText
(
"You can use OS environment variables in connection parameters.\nUse ${variable} patterns."
);
}
if
(!
site
.
isNew
()
&&
!
site
.
getDriver
().
isEmbedded
())
{
if
(!
site
.
getDriver
().
isEmbedded
())
{
Link
netConfigLink
=
new
Link
(
placeholder
,
SWT
.
NONE
);
netConfigLink
.
setText
(
"<a>"
+
CoreMessages
.
dialog_connection_edit_wizard_conn_conf_network_link
+
"</a>"
);
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/connection/ConnectionPageGeneral.java
浏览文件 @
e88d54ea
...
...
@@ -16,46 +16,24 @@
*/
package
org.jkiss.dbeaver.ui.dialogs.connection
;
import
org.eclipse.core.runtime.IStatus
;
import
org.eclipse.core.runtime.Status
;
import
org.eclipse.jface.dialogs.IDialogConstants
;
import
org.eclipse.jface.viewers.IColorProvider
;
import
org.eclipse.jface.viewers.LabelProvider
;
import
org.eclipse.osgi.util.NLS
;
import
org.eclipse.swt.SWT
;
import
org.eclipse.swt.events.ModifyEvent
;
import
org.eclipse.swt.events.ModifyListener
;
import
org.eclipse.swt.events.SelectionAdapter
;
import
org.eclipse.swt.events.SelectionEvent
;
import
org.eclipse.swt.graphics.Color
;
import
org.eclipse.swt.graphics.Font
;
import
org.eclipse.swt.graphics.Image
;
import
org.eclipse.swt.layout.GridData
;
import
org.eclipse.swt.layout.GridLayout
;
import
org.eclipse.swt.widgets.*
;
import
org.jkiss.code.NotNull
;
import
org.jkiss.dbeaver.DBException
;
import
org.jkiss.dbeaver.Log
;
import
org.jkiss.dbeaver.core.CoreMessages
;
import
org.jkiss.dbeaver.model.
*
;
import
org.jkiss.dbeaver.model.
connection.DBPConnectionBootstrap
;
import
org.jkiss.dbeaver.model.
DBPDataSourceFolder
;
import
org.jkiss.dbeaver.model.
DBUtils
;
import
org.jkiss.dbeaver.model.connection.DBPConnectionConfiguration
;
import
org.jkiss.dbeaver.model.connection.DBPConnectionEventType
;
import
org.jkiss.dbeaver.model.connection.DBPConnectionType
;
import
org.jkiss.dbeaver.model.runtime.AbstractJob
;
import
org.jkiss.dbeaver.model.runtime.DBRProgressMonitor
;
import
org.jkiss.dbeaver.model.struct.DBSEntityAttribute
;
import
org.jkiss.dbeaver.model.struct.DBSObject
;
import
org.jkiss.dbeaver.model.struct.DBSObjectContainer
;
import
org.jkiss.dbeaver.model.struct.DBSObjectFilter
;
import
org.jkiss.dbeaver.model.struct.rdb.DBSCatalog
;
import
org.jkiss.dbeaver.model.struct.rdb.DBSSchema
;
import
org.jkiss.dbeaver.model.struct.rdb.DBSTable
;
import
org.jkiss.dbeaver.registry.DataSourceDescriptor
;
import
org.jkiss.dbeaver.registry.DataSourceProviderRegistry
;
import
org.jkiss.dbeaver.ui.DBeaverIcons
;
import
org.jkiss.dbeaver.ui.IHelpContextIds
;
import
org.jkiss.dbeaver.ui.UIIcon
;
import
org.jkiss.dbeaver.ui.UIUtils
;
import
org.jkiss.dbeaver.ui.controls.CSmartCombo
;
import
org.jkiss.dbeaver.ui.dialogs.ActiveWizardPage
;
...
...
@@ -63,7 +41,6 @@ import org.jkiss.dbeaver.ui.preferences.PrefPageConnectionTypes;
import
org.jkiss.utils.CommonUtils
;
import
java.util.ArrayList
;
import
java.util.Collection
;
import
java.util.List
;
import
java.util.StringTokenizer
;
...
...
@@ -71,80 +48,36 @@ import java.util.StringTokenizer;
* General connection page (common for all connection types)
*/
class
ConnectionPageGeneral
extends
ActiveWizardPage
<
ConnectionWizard
>
{
private
static
final
Log
log
=
Log
.
getLog
(
ConnectionPageGeneral
.
class
);
private
ConnectionWizard
wizard
;
private
DataSourceDescriptor
dataSourceDescriptor
;
private
Text
connectionNameText
;
private
CSmartCombo
<
DBPConnectionType
>
connectionTypeCombo
;
private
Combo
connectionFolderCombo
;
private
Button
savePasswordCheck
;
private
Button
autocommit
;
private
Combo
isolationLevel
;
private
Combo
defaultSchema
;
private
Spinner
keepAliveInterval
;
private
Button
showSystemObjects
;
private
Button
showUtilityObjects
;
private
Button
readOnlyConnection
;
private
Button
eventsButton
;
private
Font
boldFont
;
private
Text
descriptionText
;
private
boolean
connectionNameChanged
=
false
;
private
List
<
FilterInfo
>
filters
=
new
ArrayList
<>();
private
Group
filtersGroup
;
private
boolean
activated
=
false
;
private
List
<
DBPTransactionIsolation
>
supportedLevels
=
new
ArrayList
<>();
private
List
<
String
>
bootstrapQueries
;
private
boolean
ignoreBootstrapErrors
;
private
Text
descriptionText
;
private
DBPDataSourceFolder
dataSourceFolder
;
private
List
<
DBPDataSourceFolder
>
connectionFolders
=
new
ArrayList
<>();
private
static
class
FilterInfo
{
final
Class
<?>
type
;
final
String
title
;
Link
link
;
DBSObjectFilter
filter
;
private
FilterInfo
(
Class
<?>
type
,
String
title
)
{
this
.
type
=
type
;
this
.
title
=
title
;
}
}
ConnectionPageGeneral
(
ConnectionWizard
wizard
)
{
super
(
"newConnectionFinal"
);
//$NON-NLS-1$
super
(
ConnectionPageGeneral
.
class
.
getSimpleName
());
this
.
wizard
=
wizard
;
setTitle
(
wizard
.
isNew
()
?
CoreMessages
.
dialog_connection_wizard_final_header
:
CoreMessages
.
dialog_connection_edit_wizard_general
);
setDescription
(
CoreMessages
.
dialog_connection_wizard_final_description
);
filters
.
add
(
new
FilterInfo
(
DBSCatalog
.
class
,
CoreMessages
.
dialog_connection_wizard_final_filter_catalogs
));
filters
.
add
(
new
FilterInfo
(
DBSSchema
.
class
,
CoreMessages
.
dialog_connection_wizard_final_filter_schemas_users
));
filters
.
add
(
new
FilterInfo
(
DBSTable
.
class
,
CoreMessages
.
dialog_connection_wizard_final_filter_tables
));
filters
.
add
(
new
FilterInfo
(
DBSEntityAttribute
.
class
,
CoreMessages
.
dialog_connection_wizard_final_filter_attributes
));
bootstrapQueries
=
new
ArrayList
<>();
}
ConnectionPageGeneral
(
ConnectionWizard
wizard
,
DataSourceDescriptor
dataSourceDescriptor
)
{
this
(
wizard
);
this
.
dataSourceDescriptor
=
dataSourceDescriptor
;
for
(
FilterInfo
filterInfo
:
filters
)
{
filterInfo
.
filter
=
dataSourceDescriptor
.
getObjectFilter
(
filterInfo
.
type
,
null
,
false
);
}
bootstrapQueries
=
dataSourceDescriptor
.
getConnectionConfiguration
().
getBootstrap
().
getInitQueries
();
ignoreBootstrapErrors
=
dataSourceDescriptor
.
getConnectionConfiguration
().
getBootstrap
().
isIgnoreErrors
();
}
@Override
public
void
dispose
()
{
UIUtils
.
dispose
(
boldFont
);
super
.
dispose
();
}
...
...
@@ -200,82 +133,20 @@ class ConnectionPageGeneral extends ActiveWizardPage<ConnectionWizard> {
}
else
{
connectionFolderCombo
.
select
(
connectionFolders
.
indexOf
(
dataSourceFolder
));
}
savePasswordCheck
.
setSelection
(
dataSourceDescriptor
.
isSavePassword
());
autocommit
.
setSelection
(
dataSourceDescriptor
.
isDefaultAutoCommit
());
showSystemObjects
.
setSelection
(
dataSourceDescriptor
.
isShowSystemObjects
());
showUtilityObjects
.
setSelection
(
dataSourceDescriptor
.
isShowUtilityObjects
());
readOnlyConnection
.
setSelection
(
dataSourceDescriptor
.
isConnectionReadOnly
());
isolationLevel
.
add
(
""
);
DataSourceDescriptor
originalDataSource
=
getWizard
().
getOriginalDataSource
();
if
(
originalDataSource
!=
null
&&
originalDataSource
.
isConnected
())
{
DBPDataSource
dataSource
=
originalDataSource
.
getDataSource
();
isolationLevel
.
setEnabled
(!
autocommit
.
getSelection
());
supportedLevels
.
clear
();
DBPTransactionIsolation
defaultLevel
=
dataSourceDescriptor
.
getActiveTransactionsIsolation
();
for
(
DBPTransactionIsolation
level
:
CommonUtils
.
safeCollection
(
dataSource
.
getInfo
().
getSupportedTransactionsIsolation
()))
{
if
(!
level
.
isEnabled
())
continue
;
isolationLevel
.
add
(
level
.
getTitle
());
supportedLevels
.
add
(
level
);
if
(
level
.
equals
(
defaultLevel
))
{
isolationLevel
.
select
(
isolationLevel
.
getItemCount
()
-
1
);
}
}
if
(
dataSource
instanceof
DBSObjectContainer
)
{
new
SchemaReadJob
((
DBSObjectContainer
)
dataSource
).
schedule
();
}
}
else
{
isolationLevel
.
setEnabled
(
false
);
}
defaultSchema
.
setText
(
CommonUtils
.
notEmpty
(
conConfig
.
getBootstrap
().
getDefaultObjectName
()));
keepAliveInterval
.
setSelection
(
conConfig
.
getKeepAliveInterval
());
if
(
dataSourceDescriptor
.
getDescription
()
!=
null
)
{
descriptionText
.
setText
(
dataSourceDescriptor
.
getDescription
());
}
activated
=
true
;
}
}
else
{
if
(
eventsButton
!=
null
)
{
eventsButton
.
setFont
(
getFont
());
DataSourceDescriptor
dataSource
=
getActiveDataSource
();
for
(
DBPConnectionEventType
eventType
:
dataSource
.
getConnectionConfiguration
().
getDeclaredEvents
())
{
if
(
dataSource
.
getConnectionConfiguration
().
getEvent
(
eventType
).
isEnabled
())
{
eventsButton
.
setFont
(
boldFont
);
break
;
}
}
}
// Default settings
savePasswordCheck
.
setSelection
(
true
);
connectionTypeCombo
.
select
(
0
);
autocommit
.
setSelection
((
connectionTypeCombo
.
getItem
(
0
)).
isAutocommit
());
if
(
dataSourceFolder
!=
null
)
{
connectionFolderCombo
.
select
(
connectionFolders
.
indexOf
(
dataSourceFolder
));
}
else
{
connectionFolderCombo
.
select
(
0
);
}
showSystemObjects
.
setSelection
(
true
);
showUtilityObjects
.
setSelection
(
false
);
readOnlyConnection
.
setSelection
(
false
);
isolationLevel
.
setEnabled
(
false
);
defaultSchema
.
setText
(
""
);
}
if
(
savePasswordCheck
!=
null
)
{
//savePasswordCheck.setEnabled();
}
long
features
=
wizard
.
getSelectedDriver
().
getDataSourceProvider
().
getFeatures
();
for
(
FilterInfo
filterInfo
:
filters
)
{
if
(
DBSCatalog
.
class
.
isAssignableFrom
(
filterInfo
.
type
))
{
enableFilter
(
filterInfo
,
(
features
&
DBPDataSourceProvider
.
FEATURE_CATALOGS
)
!=
0
);
}
else
if
(
DBSSchema
.
class
.
isAssignableFrom
(
filterInfo
.
type
))
{
enableFilter
(
filterInfo
,
(
features
&
DBPDataSourceProvider
.
FEATURE_SCHEMAS
)
!=
0
);
}
else
{
enableFilter
(
filterInfo
,
true
);
}
}
filtersGroup
.
layout
();
}
@NotNull
...
...
@@ -284,23 +155,6 @@ class ConnectionPageGeneral extends ActiveWizardPage<ConnectionWizard> {
return
pageSettings
==
null
?
wizard
.
getActiveDataSource
()
:
pageSettings
.
getActiveDataSource
();
}
private
void
enableFilter
(
FilterInfo
filterInfo
,
boolean
enable
)
{
filterInfo
.
link
.
setEnabled
(
enable
);
if
(
enable
)
{
filterInfo
.
link
.
setText
(
"<a>"
+
filterInfo
.
title
+
"</a>"
);
filterInfo
.
link
.
setToolTipText
(
NLS
.
bind
(
CoreMessages
.
dialog_connection_wizard_final_filter_link_tooltip
,
filterInfo
.
title
));
if
(
filterInfo
.
filter
!=
null
&&
!
filterInfo
.
filter
.
isNotApplicable
())
{
filterInfo
.
link
.
setFont
(
boldFont
);
}
else
{
filterInfo
.
link
.
setFont
(
getFont
());
}
}
else
{
filterInfo
.
link
.
setText
(
NLS
.
bind
(
CoreMessages
.
dialog_connection_wizard_final_filter_link_not_supported_text
,
filterInfo
.
title
));
filterInfo
.
link
.
setToolTipText
(
NLS
.
bind
(
CoreMessages
.
dialog_connection_wizard_final_filter_link_not_supported_tooltip
,
filterInfo
.
title
,
wizard
.
getSelectedDriver
().
getName
()));
}
}
@Override
public
void
deactivatePage
()
{
...
...
@@ -309,20 +163,15 @@ class ConnectionPageGeneral extends ActiveWizardPage<ConnectionWizard> {
@Override
public
void
createControl
(
Composite
parent
)
{
boldFont
=
UIUtils
.
makeBoldFont
(
parent
.
getFont
());
Composite
group
=
new
Composite
(
parent
,
SWT
.
NONE
);
GridLayout
gl
=
new
GridLayout
(
2
,
false
);
group
.
setLayout
(
gl
);
String
connectionName
=
dataSourceDescriptor
==
null
?
""
:
dataSourceDescriptor
.
getName
();
//$NON-NLS-1$
connectionNameText
=
UIUtils
.
createLabelText
(
group
,
CoreMessages
.
dialog_connection_wizard_final_label_connection_name
,
CommonUtils
.
toString
(
connectionName
));
connectionNameText
.
addModifyListener
(
new
ModifyListener
()
{
@Override
public
void
modifyText
(
ModifyEvent
e
)
{
connectionNameChanged
=
true
;
ConnectionPageGeneral
.
this
.
getContainer
().
updateButtons
();
}
connectionNameText
.
addModifyListener
(
e
->
{
connectionNameChanged
=
true
;
ConnectionPageGeneral
.
this
.
getContainer
().
updateButtons
();
});
{
...
...
@@ -337,7 +186,7 @@ class ConnectionPageGeneral extends ActiveWizardPage<ConnectionWizard> {
public
void
widgetSelected
(
SelectionEvent
e
)
{
DBPConnectionType
type
=
connectionTypeCombo
.
getItem
(
connectionTypeCombo
.
getSelectionIndex
());
autocommit
.
setSelection
(
type
.
isAutocommit
()
);
getWizard
().
firePropertyChangeEvent
(
ConnectionWizard
.
PROP_CONNECTION_TYPE
,
getActiveDataSource
().
getConnectionConfiguration
().
getConnectionType
(),
type
);
}
});
...
...
@@ -354,7 +203,7 @@ class ConnectionPageGeneral extends ActiveWizardPage<ConnectionWizard> {
loadConnectionTypes
();
DBPConnectionType
connectionType
=
dataSource
.
getConnectionConfiguration
().
getConnectionType
();
connectionTypeCombo
.
select
(
connectionType
);
autocommit
.
setSelection
(
connectionType
.
isAutocommit
()
);
getWizard
().
firePropertyChangeEvent
(
ConnectionWizard
.
PROP_CONNECTION_TYPE
,
connectionType
,
connectionType
);
}
});
}
...
...
@@ -373,6 +222,16 @@ class ConnectionPageGeneral extends ActiveWizardPage<ConnectionWizard> {
});
}
{
Label
descLabel
=
UIUtils
.
createControlLabel
(
group
,
CoreMessages
.
dialog_connection_wizard_description
);
((
GridData
)
descLabel
.
getLayoutData
()).
horizontalSpan
=
2
;
descriptionText
=
new
Text
(
group
,
SWT
.
BORDER
|
SWT
.
V_SCROLL
|
SWT
.
WRAP
|
SWT
.
MULTI
);
final
GridData
gd
=
new
GridData
(
GridData
.
FILL_HORIZONTAL
);
gd
.
horizontalSpan
=
2
;
gd
.
heightHint
=
descriptionText
.
getLineHeight
()
*
3
;
descriptionText
.
setLayoutData
(
gd
);
}
{
Composite
optionsGroup
=
new
Composite
(
group
,
SWT
.
NONE
);
gl
=
new
GridLayout
(
2
,
true
);
...
...
@@ -388,142 +247,6 @@ class ConnectionPageGeneral extends ActiveWizardPage<ConnectionWizard> {
leftSide
.
setLayoutData
(
new
GridData
(
GridData
.
FILL_HORIZONTAL
|
GridData
.
VERTICAL_ALIGN_BEGINNING
));
Composite
rightSide
=
UIUtils
.
createPlaceholder
(
optionsGroup
,
1
,
5
);
rightSide
.
setLayoutData
(
new
GridData
(
GridData
.
FILL_HORIZONTAL
|
GridData
.
VERTICAL_ALIGN_BEGINNING
));
{
Group
securityGroup
=
UIUtils
.
createControlGroup
(
leftSide
,
CoreMessages
.
dialog_connection_wizard_final_group_security
,
1
,
GridData
.
FILL_HORIZONTAL
|
GridData
.
VERTICAL_ALIGN_BEGINNING
,
0
);
savePasswordCheck
=
UIUtils
.
createCheckbox
(
securityGroup
,
CoreMessages
.
dialog_connection_wizard_final_checkbox_save_password_locally
,
dataSourceDescriptor
==
null
||
dataSourceDescriptor
.
isSavePassword
());
savePasswordCheck
.
setLayoutData
(
new
GridData
(
GridData
.
HORIZONTAL_ALIGN_BEGINNING
));
}
{
Group
txnGroup
=
UIUtils
.
createControlGroup
(
rightSide
,
CoreMessages
.
dialog_connection_wizard_final_label_connection
,
2
,
GridData
.
FILL_HORIZONTAL
|
GridData
.
VERTICAL_ALIGN_BEGINNING
,
0
);
autocommit
=
UIUtils
.
createLabelCheckbox
(
txnGroup
,
CoreMessages
.
dialog_connection_wizard_final_checkbox_auto_commit
,
"Sets auto-commit mode for all connections"
,
dataSourceDescriptor
!=
null
&&
dataSourceDescriptor
.
isDefaultAutoCommit
());
autocommit
.
setLayoutData
(
new
GridData
(
GridData
.
HORIZONTAL_ALIGN_BEGINNING
));
autocommit
.
addSelectionListener
(
new
SelectionAdapter
()
{
@Override
public
void
widgetSelected
(
SelectionEvent
e
)
{
if
(
dataSourceDescriptor
!=
null
&&
dataSourceDescriptor
.
isConnected
())
{
isolationLevel
.
setEnabled
(!
autocommit
.
getSelection
());
}
}
});
isolationLevel
=
UIUtils
.
createLabelCombo
(
txnGroup
,
CoreMessages
.
dialog_connection_wizard_final_label_isolation_level
,
CoreMessages
.
dialog_connection_wizard_final_label_isolation_level_tooltip
,
SWT
.
DROP_DOWN
|
SWT
.
READ_ONLY
);
defaultSchema
=
UIUtils
.
createLabelCombo
(
txnGroup
,
CoreMessages
.
dialog_connection_wizard_final_label_default_schema
,
CoreMessages
.
dialog_connection_wizard_final_label_default_schema_tooltip
,
SWT
.
DROP_DOWN
);
keepAliveInterval
=
UIUtils
.
createLabelSpinner
(
txnGroup
,
CoreMessages
.
dialog_connection_wizard_final_label_keepalive
,
CoreMessages
.
dialog_connection_wizard_final_label_keepalive_tooltip
,
0
,
0
,
Short
.
MAX_VALUE
);
{
String
bootstrapTooltip
=
CoreMessages
.
dialog_connection_wizard_final_label_bootstrap_tooltip
;
UIUtils
.
createControlLabel
(
txnGroup
,
CoreMessages
.
dialog_connection_wizard_final_label_bootstrap_query
).
setToolTipText
(
bootstrapTooltip
);
final
Button
queriesConfigButton
=
UIUtils
.
createPushButton
(
txnGroup
,
CoreMessages
.
dialog_connection_wizard_configure
,
DBeaverIcons
.
getImage
(
UIIcon
.
SQL_SCRIPT
));
queriesConfigButton
.
setToolTipText
(
bootstrapTooltip
);
if
(
dataSourceDescriptor
!=
null
&&
!
CommonUtils
.
isEmpty
(
dataSourceDescriptor
.
getConnectionConfiguration
().
getBootstrap
().
getInitQueries
()))
{
queriesConfigButton
.
setFont
(
boldFont
);
}
queriesConfigButton
.
addSelectionListener
(
new
SelectionAdapter
()
{
@Override
public
void
widgetSelected
(
SelectionEvent
e
)
{
EditBootstrapQueriesDialog
dialog
=
new
EditBootstrapQueriesDialog
(
getShell
(),
bootstrapQueries
,
ignoreBootstrapErrors
);
if
(
dialog
.
open
()
==
IDialogConstants
.
OK_ID
)
{
bootstrapQueries
=
dialog
.
getQueries
();
ignoreBootstrapErrors
=
dialog
.
isIgnoreErrors
();
}
}
});
}
if
(
getWizard
().
isNew
())
{
UIUtils
.
createControlLabel
(
txnGroup
,
CoreMessages
.
dialog_connection_wizard_final_label_shell_command
);
eventsButton
=
new
Button
(
txnGroup
,
SWT
.
PUSH
);
eventsButton
.
setText
(
CoreMessages
.
dialog_connection_wizard_configure
);
eventsButton
.
setImage
(
DBeaverIcons
.
getImage
(
UIIcon
.
EVENT
));
eventsButton
.
setLayoutData
(
new
GridData
(
GridData
.
HORIZONTAL_ALIGN_BEGINNING
));
eventsButton
.
addSelectionListener
(
new
SelectionAdapter
()
{
@Override
public
void
widgetSelected
(
SelectionEvent
e
)
{
configureEvents
();
}
});
}
}
{
Group
miscGroup
=
UIUtils
.
createControlGroup
(
leftSide
,
CoreMessages
.
dialog_connection_wizard_final_group_misc
,
1
,
GridData
.
VERTICAL_ALIGN_BEGINNING
|
GridData
.
FILL_HORIZONTAL
,
0
);
showSystemObjects
=
UIUtils
.
createCheckbox
(
miscGroup
,
CoreMessages
.
dialog_connection_wizard_final_checkbox_show_system_objects
,
dataSourceDescriptor
==
null
||
dataSourceDescriptor
.
isShowSystemObjects
());
showSystemObjects
.
setLayoutData
(
new
GridData
(
GridData
.
HORIZONTAL_ALIGN_BEGINNING
));
showUtilityObjects
=
UIUtils
.
createCheckbox
(
miscGroup
,
CoreMessages
.
dialog_connection_wizard_final_checkbox_show_util_objects
,
dataSourceDescriptor
==
null
||
dataSourceDescriptor
.
isShowUtilityObjects
());
showUtilityObjects
.
setLayoutData
(
new
GridData
(
GridData
.
HORIZONTAL_ALIGN_BEGINNING
));
readOnlyConnection
=
UIUtils
.
createCheckbox
(
miscGroup
,
CoreMessages
.
dialog_connection_wizard_final_checkbox_connection_readonly
,
dataSourceDescriptor
!=
null
&&
dataSourceDescriptor
.
isConnectionReadOnly
());
gd
=
new
GridData
(
GridData
.
HORIZONTAL_ALIGN_BEGINNING
);
//gd.horizontalSpan = 2;
readOnlyConnection
.
setLayoutData
(
gd
);
}
{
// Filters
filtersGroup
=
UIUtils
.
createControlGroup
(
group
,
CoreMessages
.
dialog_connection_wizard_final_group_filters
,
2
,
GridData
.
VERTICAL_ALIGN_BEGINNING
,
0
);
((
GridData
)
filtersGroup
.
getLayoutData
()).
horizontalSpan
=
2
;
for
(
int
i
=
0
;
i
<
filters
.
size
();
i
++)
{
final
FilterInfo
filterInfo
=
filters
.
get
(
i
);
filterInfo
.
link
=
UIUtils
.
createLink
(
filtersGroup
,
"<a>"
+
filterInfo
.
title
+
"</a>"
,
new
SelectionAdapter
()
{
@Override
public
void
widgetSelected
(
SelectionEvent
e
)
{
EditObjectFilterDialog
dialog
=
new
EditObjectFilterDialog
(
getShell
(),
getWizard
().
getDataSourceRegistry
(),
filterInfo
.
title
,
filterInfo
.
filter
!=
null
?
filterInfo
.
filter
:
new
DBSObjectFilter
(),
true
);
if
(
dialog
.
open
()
==
IDialogConstants
.
OK_ID
)
{
filterInfo
.
filter
=
dialog
.
getFilter
();
if
(
filterInfo
.
filter
!=
null
&&
!
filterInfo
.
filter
.
isNotApplicable
())
{
filterInfo
.
link
.
setFont
(
boldFont
);
}
else
{
filterInfo
.
link
.
setFont
(
getFont
());
}
}
}
});
}
}
}
{
final
Group
descGroup
=
UIUtils
.
createControlGroup
(
group
,
CoreMessages
.
dialog_connection_wizard_description
,
1
,
GridData
.
FILL_HORIZONTAL
,
0
);
((
GridData
)
descGroup
.
getLayoutData
()).
horizontalSpan
=
2
;
descriptionText
=
new
Text
(
descGroup
,
SWT
.
BORDER
|
SWT
.
V_SCROLL
|
SWT
.
WRAP
|
SWT
.
MULTI
);
final
GridData
gd
=
new
GridData
(
GridData
.
FILL_BOTH
);
gd
.
heightHint
=
descriptionText
.
getLineHeight
()
*
3
;
descriptionText
.
setLayoutData
(
gd
);
}
setControl
(
group
);
...
...
@@ -577,27 +300,6 @@ class ConnectionPageGeneral extends ActiveWizardPage<ConnectionWizard> {
return
;
}
dataSource
.
setName
(
connectionNameText
.
getText
());
dataSource
.
setSavePassword
(
savePasswordCheck
.
getSelection
());
try
{
dataSource
.
setDefaultAutoCommit
(
autocommit
.
getSelection
(),
null
,
true
,
null
);
if
(
dataSource
.
isConnected
())
{
int
levelIndex
=
isolationLevel
.
getSelectionIndex
();
if
(
levelIndex
<=
0
)
{
dataSource
.
setDefaultTransactionsIsolation
(
null
);
}
else
{
dataSource
.
setDefaultTransactionsIsolation
(
supportedLevels
.
get
(
levelIndex
-
1
));
}
}
}
catch
(
DBException
e
)
{
log
.
error
(
e
);
}
dataSource
.
setDefaultActiveObject
(
defaultSchema
.
getText
());
dataSource
.
setShowSystemObjects
(
showSystemObjects
.
getSelection
());
dataSource
.
setShowUtilityObjects
(
showUtilityObjects
.
getSelection
());
dataSource
.
setConnectionReadOnly
(
readOnlyConnection
.
getSelection
());
if
(!
dataSource
.
isSavePassword
())
{
dataSource
.
resetPassword
();
}
dataSource
.
setFolder
(
dataSourceFolder
);
final
DBPConnectionConfiguration
confConfig
=
dataSource
.
getConnectionConfiguration
();
...
...
@@ -605,16 +307,6 @@ class ConnectionPageGeneral extends ActiveWizardPage<ConnectionWizard> {
if
(
connectionTypeCombo
.
getSelectionIndex
()
>=
0
)
{
confConfig
.
setConnectionType
(
connectionTypeCombo
.
getItem
(
connectionTypeCombo
.
getSelectionIndex
()));
}
for
(
FilterInfo
filterInfo
:
filters
)
{
if
(
filterInfo
.
filter
!=
null
)
{
dataSource
.
setObjectFilter
(
filterInfo
.
type
,
null
,
filterInfo
.
filter
);
}
}
DBPConnectionBootstrap
bootstrap
=
confConfig
.
getBootstrap
();
bootstrap
.
setIgnoreErrors
(
ignoreBootstrapErrors
);
bootstrap
.
setInitQueries
(
bootstrapQueries
);
confConfig
.
setKeepAliveInterval
(
keepAliveInterval
.
getSelection
());
final
String
description
=
descriptionText
.
getText
();
if
(
description
.
isEmpty
())
{
...
...
@@ -624,23 +316,6 @@ class ConnectionPageGeneral extends ActiveWizardPage<ConnectionWizard> {
}
}
private
void
configureEvents
()
{
DataSourceDescriptor
dataSource
=
getActiveDataSource
();
EditShellCommandsDialog
dialog
=
new
EditShellCommandsDialog
(
getShell
(),
dataSource
);
if
(
dialog
.
open
()
==
IDialogConstants
.
OK_ID
)
{
eventsButton
.
setFont
(
getFont
());
for
(
DBPConnectionEventType
eventType
:
dataSource
.
getConnectionConfiguration
().
getDeclaredEvents
())
{
if
(
dataSource
.
getConnectionConfiguration
().
getEvent
(
eventType
).
isEnabled
())
{
eventsButton
.
setFont
(
boldFont
);
break
;
}
}
}
}
public
void
setDataSourceFolder
(
DBPDataSourceFolder
dataSourceFolder
)
{
this
.
dataSourceFolder
=
dataSourceFolder
;
}
...
...
@@ -662,63 +337,4 @@ class ConnectionPageGeneral extends ActiveWizardPage<ConnectionWizard> {
}
}
private
static
class
ConnectionFolderLabelProvider
extends
LabelProvider
{
@Override
public
Image
getImage
(
Object
element
)
{
return
DBeaverIcons
.
getImage
(
DBIcon
.
TREE_FOLDER_DATABASE
);
}
@Override
public
String
getText
(
Object
element
)
{
if
(
element
==
null
)
{
return
CoreMessages
.
toolbar_datasource_selector_empty
;
}
String
prefix
=
""
;
for
(
DBPDataSourceFolder
folder
=
((
DBPDataSourceFolder
)
element
).
getParent
();
folder
!=
null
;
folder
=
folder
.
getParent
())
{
prefix
+=
" "
;
}
return
prefix
+
((
DBPDataSourceFolder
)
element
).
getName
();
}
}
private
class
SchemaReadJob
extends
AbstractJob
{
private
DBSObjectContainer
objectContainer
;
public
SchemaReadJob
(
DBSObjectContainer
objectContainer
)
{
super
(
"Schema reader"
);
this
.
objectContainer
=
objectContainer
;
}
@Override
protected
IStatus
run
(
DBRProgressMonitor
monitor
)
{
try
{
final
List
<
String
>
schemaNames
=
new
ArrayList
<>();
Collection
<?
extends
DBSObject
>
children
=
objectContainer
.
getChildren
(
monitor
);
if
(
children
!=
null
)
{
for
(
DBSObject
child
:
children
)
{
schemaNames
.
add
(
child
.
getName
());
}
}
if
(!
schemaNames
.
isEmpty
())
{
UIUtils
.
syncExec
(
new
Runnable
()
{
@Override
public
void
run
()
{
if
(!
defaultSchema
.
isDisposed
())
{
String
oldText
=
defaultSchema
.
getText
();
defaultSchema
.
removeAll
();
for
(
String
name
:
schemaNames
)
{
defaultSchema
.
add
(
name
);
}
if
(!
CommonUtils
.
isEmpty
(
oldText
))
{
defaultSchema
.
setText
(
oldText
);
}
}
}
});
}
}
catch
(
DBException
e
)
{
log
.
warn
(
"Can't read schema list"
,
e
);
}
return
Status
.
OK_STATUS
;
}
}
}
\ No newline at end of file
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/connection/ConnectionPageInitialization.java
0 → 100644
浏览文件 @
e88d54ea
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org.jkiss.dbeaver.ui.dialogs.connection
;
import
org.eclipse.core.runtime.IStatus
;
import
org.eclipse.core.runtime.Status
;
import
org.eclipse.jface.dialogs.IDialogConstants
;
import
org.eclipse.jface.wizard.IWizard
;
import
org.eclipse.osgi.util.NLS
;
import
org.eclipse.swt.SWT
;
import
org.eclipse.swt.events.SelectionAdapter
;
import
org.eclipse.swt.events.SelectionEvent
;
import
org.eclipse.swt.graphics.Font
;
import
org.eclipse.swt.layout.GridData
;
import
org.eclipse.swt.layout.GridLayout
;
import
org.eclipse.swt.widgets.*
;
import
org.jkiss.code.NotNull
;
import
org.jkiss.dbeaver.DBException
;
import
org.jkiss.dbeaver.Log
;
import
org.jkiss.dbeaver.core.CoreMessages
;
import
org.jkiss.dbeaver.model.DBPDataSource
;
import
org.jkiss.dbeaver.model.DBPDataSourceProvider
;
import
org.jkiss.dbeaver.model.DBPTransactionIsolation
;
import
org.jkiss.dbeaver.model.connection.DBPConnectionBootstrap
;
import
org.jkiss.dbeaver.model.connection.DBPConnectionConfiguration
;
import
org.jkiss.dbeaver.model.connection.DBPConnectionEventType
;
import
org.jkiss.dbeaver.model.connection.DBPConnectionType
;
import
org.jkiss.dbeaver.model.runtime.AbstractJob
;
import
org.jkiss.dbeaver.model.runtime.DBRProgressMonitor
;
import
org.jkiss.dbeaver.model.struct.DBSEntityAttribute
;
import
org.jkiss.dbeaver.model.struct.DBSObject
;
import
org.jkiss.dbeaver.model.struct.DBSObjectContainer
;
import
org.jkiss.dbeaver.model.struct.DBSObjectFilter
;
import
org.jkiss.dbeaver.model.struct.rdb.DBSCatalog
;
import
org.jkiss.dbeaver.model.struct.rdb.DBSSchema
;
import
org.jkiss.dbeaver.model.struct.rdb.DBSTable
;
import
org.jkiss.dbeaver.registry.DataSourceDescriptor
;
import
org.jkiss.dbeaver.ui.DBeaverIcons
;
import
org.jkiss.dbeaver.ui.IHelpContextIds
;
import
org.jkiss.dbeaver.ui.UIIcon
;
import
org.jkiss.dbeaver.ui.UIUtils
;
import
org.jkiss.dbeaver.ui.dialogs.ActiveWizardPage
;
import
org.jkiss.utils.CommonUtils
;
import
java.util.ArrayList
;
import
java.util.Collection
;
import
java.util.List
;
/**
* Initialization connection page (common for all connection types)
*/
class
ConnectionPageInitialization
extends
ActiveWizardPage
<
ConnectionWizard
>
{
private
static
final
Log
log
=
Log
.
getLog
(
ConnectionPageInitialization
.
class
);
private
DataSourceDescriptor
dataSourceDescriptor
;
private
Button
savePasswordCheck
;
private
Button
autocommit
;
private
Combo
isolationLevel
;
private
Combo
defaultSchema
;
private
Spinner
keepAliveInterval
;
private
Button
showSystemObjects
;
private
Button
showUtilityObjects
;
private
Button
readOnlyConnection
;
private
Button
eventsButton
;
private
Font
boldFont
;
private
List
<
FilterInfo
>
filters
=
new
ArrayList
<>();
private
Group
filtersGroup
;
private
boolean
activated
=
false
;
private
List
<
DBPTransactionIsolation
>
supportedLevels
=
new
ArrayList
<>();
private
List
<
String
>
bootstrapQueries
;
private
boolean
ignoreBootstrapErrors
;
private
static
class
FilterInfo
{
final
Class
<?>
type
;
final
String
title
;
Link
link
;
DBSObjectFilter
filter
;
private
FilterInfo
(
Class
<?>
type
,
String
title
)
{
this
.
type
=
type
;
this
.
title
=
title
;
}
}
ConnectionPageInitialization
()
{
super
(
ConnectionPageInitialization
.
class
.
getSimpleName
());
//$NON-NLS-1$
setTitle
(
CoreMessages
.
dialog_connection_wizard_connection_init
);
setDescription
(
CoreMessages
.
dialog_connection_wizard_connection_init_description
);
filters
.
add
(
new
FilterInfo
(
DBSCatalog
.
class
,
CoreMessages
.
dialog_connection_wizard_final_filter_catalogs
));
filters
.
add
(
new
FilterInfo
(
DBSSchema
.
class
,
CoreMessages
.
dialog_connection_wizard_final_filter_schemas_users
));
filters
.
add
(
new
FilterInfo
(
DBSTable
.
class
,
CoreMessages
.
dialog_connection_wizard_final_filter_tables
));
filters
.
add
(
new
FilterInfo
(
DBSEntityAttribute
.
class
,
CoreMessages
.
dialog_connection_wizard_final_filter_attributes
));
bootstrapQueries
=
new
ArrayList
<>();
}
ConnectionPageInitialization
(
DataSourceDescriptor
dataSourceDescriptor
)
{
this
();
this
.
dataSourceDescriptor
=
dataSourceDescriptor
;
for
(
FilterInfo
filterInfo
:
filters
)
{
filterInfo
.
filter
=
dataSourceDescriptor
.
getObjectFilter
(
filterInfo
.
type
,
null
,
false
);
}
bootstrapQueries
=
dataSourceDescriptor
.
getConnectionConfiguration
().
getBootstrap
().
getInitQueries
();
ignoreBootstrapErrors
=
dataSourceDescriptor
.
getConnectionConfiguration
().
getBootstrap
().
isIgnoreErrors
();
}
@Override
public
void
dispose
()
{
UIUtils
.
dispose
(
boldFont
);
super
.
dispose
();
}
@Override
public
void
activatePage
()
{
if
(
dataSourceDescriptor
!=
null
)
{
if
(!
activated
)
{
// Get settings from data source descriptor
final
DBPConnectionConfiguration
conConfig
=
dataSourceDescriptor
.
getConnectionConfiguration
();
savePasswordCheck
.
setSelection
(
dataSourceDescriptor
.
isSavePassword
());
autocommit
.
setSelection
(
dataSourceDescriptor
.
isDefaultAutoCommit
());
showSystemObjects
.
setSelection
(
dataSourceDescriptor
.
isShowSystemObjects
());
showUtilityObjects
.
setSelection
(
dataSourceDescriptor
.
isShowUtilityObjects
());
readOnlyConnection
.
setSelection
(
dataSourceDescriptor
.
isConnectionReadOnly
());
isolationLevel
.
add
(
""
);
DataSourceDescriptor
originalDataSource
=
getWizard
().
getOriginalDataSource
();
if
(
originalDataSource
!=
null
&&
originalDataSource
.
isConnected
())
{
DBPDataSource
dataSource
=
originalDataSource
.
getDataSource
();
isolationLevel
.
setEnabled
(!
autocommit
.
getSelection
());
supportedLevels
.
clear
();
DBPTransactionIsolation
defaultLevel
=
dataSourceDescriptor
.
getActiveTransactionsIsolation
();
for
(
DBPTransactionIsolation
level
:
CommonUtils
.
safeCollection
(
dataSource
.
getInfo
().
getSupportedTransactionsIsolation
()))
{
if
(!
level
.
isEnabled
())
continue
;
isolationLevel
.
add
(
level
.
getTitle
());
supportedLevels
.
add
(
level
);
if
(
level
.
equals
(
defaultLevel
))
{
isolationLevel
.
select
(
isolationLevel
.
getItemCount
()
-
1
);
}
}
if
(
dataSource
instanceof
DBSObjectContainer
)
{
new
SchemaReadJob
((
DBSObjectContainer
)
dataSource
).
schedule
();
}
}
else
{
isolationLevel
.
setEnabled
(
false
);
}
defaultSchema
.
setText
(
CommonUtils
.
notEmpty
(
conConfig
.
getBootstrap
().
getDefaultObjectName
()));
keepAliveInterval
.
setSelection
(
conConfig
.
getKeepAliveInterval
());
activated
=
true
;
}
}
else
{
if
(
eventsButton
!=
null
)
{
eventsButton
.
setFont
(
getFont
());
DataSourceDescriptor
dataSource
=
getActiveDataSource
();
for
(
DBPConnectionEventType
eventType
:
dataSource
.
getConnectionConfiguration
().
getDeclaredEvents
())
{
if
(
dataSource
.
getConnectionConfiguration
().
getEvent
(
eventType
).
isEnabled
())
{
eventsButton
.
setFont
(
boldFont
);
break
;
}
}
}
// Default settings
savePasswordCheck
.
setSelection
(
true
);
showSystemObjects
.
setSelection
(
true
);
showUtilityObjects
.
setSelection
(
false
);
readOnlyConnection
.
setSelection
(
false
);
isolationLevel
.
setEnabled
(
false
);
defaultSchema
.
setText
(
""
);
}
if
(
savePasswordCheck
!=
null
)
{
//savePasswordCheck.setEnabled();
}
long
features
=
getWizard
().
getSelectedDriver
().
getDataSourceProvider
().
getFeatures
();
for
(
FilterInfo
filterInfo
:
filters
)
{
if
(
DBSCatalog
.
class
.
isAssignableFrom
(
filterInfo
.
type
))
{
enableFilter
(
filterInfo
,
(
features
&
DBPDataSourceProvider
.
FEATURE_CATALOGS
)
!=
0
);
}
else
if
(
DBSSchema
.
class
.
isAssignableFrom
(
filterInfo
.
type
))
{
enableFilter
(
filterInfo
,
(
features
&
DBPDataSourceProvider
.
FEATURE_SCHEMAS
)
!=
0
);
}
else
{
enableFilter
(
filterInfo
,
true
);
}
}
filtersGroup
.
layout
();
}
@NotNull
private
DataSourceDescriptor
getActiveDataSource
()
{
ConnectionPageSettings
pageSettings
=
getWizard
().
getPageSettings
();
return
pageSettings
==
null
?
getWizard
().
getActiveDataSource
()
:
pageSettings
.
getActiveDataSource
();
}
private
void
enableFilter
(
FilterInfo
filterInfo
,
boolean
enable
)
{
filterInfo
.
link
.
setEnabled
(
enable
);
if
(
enable
)
{
filterInfo
.
link
.
setText
(
"<a>"
+
filterInfo
.
title
+
"</a>"
);
filterInfo
.
link
.
setToolTipText
(
NLS
.
bind
(
CoreMessages
.
dialog_connection_wizard_final_filter_link_tooltip
,
filterInfo
.
title
));
if
(
filterInfo
.
filter
!=
null
&&
!
filterInfo
.
filter
.
isNotApplicable
())
{
filterInfo
.
link
.
setFont
(
boldFont
);
}
else
{
filterInfo
.
link
.
setFont
(
getFont
());
}
}
else
{
filterInfo
.
link
.
setText
(
NLS
.
bind
(
CoreMessages
.
dialog_connection_wizard_final_filter_link_not_supported_text
,
filterInfo
.
title
));
filterInfo
.
link
.
setToolTipText
(
NLS
.
bind
(
CoreMessages
.
dialog_connection_wizard_final_filter_link_not_supported_tooltip
,
filterInfo
.
title
,
getWizard
().
getSelectedDriver
().
getName
()));
}
}
@Override
public
void
deactivatePage
()
{
}
@Override
public
void
createControl
(
Composite
parent
)
{
boldFont
=
UIUtils
.
makeBoldFont
(
parent
.
getFont
());
Composite
group
=
new
Composite
(
parent
,
SWT
.
NONE
);
GridLayout
gl
=
new
GridLayout
(
2
,
false
);
group
.
setLayout
(
gl
);
{
Composite
optionsGroup
=
new
Composite
(
group
,
SWT
.
NONE
);
gl
=
new
GridLayout
(
1
,
true
);
gl
.
verticalSpacing
=
0
;
gl
.
horizontalSpacing
=
5
;
gl
.
marginHeight
=
0
;
gl
.
marginWidth
=
0
;
optionsGroup
.
setLayout
(
gl
);
GridData
gd
=
new
GridData
(
GridData
.
FILL_HORIZONTAL
);
gd
.
horizontalSpan
=
2
;
optionsGroup
.
setLayoutData
(
gd
);
{
Group
securityGroup
=
UIUtils
.
createControlGroup
(
optionsGroup
,
CoreMessages
.
dialog_connection_wizard_final_group_security
,
1
,
GridData
.
VERTICAL_ALIGN_BEGINNING
,
0
);
savePasswordCheck
=
UIUtils
.
createCheckbox
(
securityGroup
,
CoreMessages
.
dialog_connection_wizard_final_checkbox_save_password_locally
,
dataSourceDescriptor
==
null
||
dataSourceDescriptor
.
isSavePassword
());
savePasswordCheck
.
setLayoutData
(
new
GridData
(
GridData
.
HORIZONTAL_ALIGN_BEGINNING
));
}
{
Group
txnGroup
=
UIUtils
.
createControlGroup
(
optionsGroup
,
CoreMessages
.
dialog_connection_wizard_final_label_connection
,
2
,
GridData
.
VERTICAL_ALIGN_BEGINNING
,
0
);
autocommit
=
UIUtils
.
createLabelCheckbox
(
txnGroup
,
CoreMessages
.
dialog_connection_wizard_final_checkbox_auto_commit
,
"Sets auto-commit mode for all connections"
,
dataSourceDescriptor
!=
null
&&
dataSourceDescriptor
.
isDefaultAutoCommit
());
autocommit
.
setLayoutData
(
new
GridData
(
GridData
.
HORIZONTAL_ALIGN_BEGINNING
));
autocommit
.
addSelectionListener
(
new
SelectionAdapter
()
{
@Override
public
void
widgetSelected
(
SelectionEvent
e
)
{
if
(
dataSourceDescriptor
!=
null
&&
dataSourceDescriptor
.
isConnected
())
{
isolationLevel
.
setEnabled
(!
autocommit
.
getSelection
());
}
}
});
isolationLevel
=
UIUtils
.
createLabelCombo
(
txnGroup
,
CoreMessages
.
dialog_connection_wizard_final_label_isolation_level
,
CoreMessages
.
dialog_connection_wizard_final_label_isolation_level_tooltip
,
SWT
.
DROP_DOWN
|
SWT
.
READ_ONLY
);
defaultSchema
=
UIUtils
.
createLabelCombo
(
txnGroup
,
CoreMessages
.
dialog_connection_wizard_final_label_default_schema
,
CoreMessages
.
dialog_connection_wizard_final_label_default_schema_tooltip
,
SWT
.
DROP_DOWN
);
keepAliveInterval
=
UIUtils
.
createLabelSpinner
(
txnGroup
,
CoreMessages
.
dialog_connection_wizard_final_label_keepalive
,
CoreMessages
.
dialog_connection_wizard_final_label_keepalive_tooltip
,
0
,
0
,
Short
.
MAX_VALUE
);
{
String
bootstrapTooltip
=
CoreMessages
.
dialog_connection_wizard_final_label_bootstrap_tooltip
;
UIUtils
.
createControlLabel
(
txnGroup
,
CoreMessages
.
dialog_connection_wizard_final_label_bootstrap_query
).
setToolTipText
(
bootstrapTooltip
);
final
Button
queriesConfigButton
=
UIUtils
.
createPushButton
(
txnGroup
,
CoreMessages
.
dialog_connection_wizard_configure
,
DBeaverIcons
.
getImage
(
UIIcon
.
SQL_SCRIPT
));
queriesConfigButton
.
setToolTipText
(
bootstrapTooltip
);
if
(
dataSourceDescriptor
!=
null
&&
!
CommonUtils
.
isEmpty
(
dataSourceDescriptor
.
getConnectionConfiguration
().
getBootstrap
().
getInitQueries
()))
{
queriesConfigButton
.
setFont
(
boldFont
);
}
queriesConfigButton
.
addSelectionListener
(
new
SelectionAdapter
()
{
@Override
public
void
widgetSelected
(
SelectionEvent
e
)
{
EditBootstrapQueriesDialog
dialog
=
new
EditBootstrapQueriesDialog
(
getShell
(),
bootstrapQueries
,
ignoreBootstrapErrors
);
if
(
dialog
.
open
()
==
IDialogConstants
.
OK_ID
)
{
bootstrapQueries
=
dialog
.
getQueries
();
ignoreBootstrapErrors
=
dialog
.
isIgnoreErrors
();
}
}
});
}
if
(
getWizard
().
isNew
())
{
UIUtils
.
createControlLabel
(
txnGroup
,
CoreMessages
.
dialog_connection_wizard_final_label_shell_command
);
eventsButton
=
new
Button
(
txnGroup
,
SWT
.
PUSH
);
eventsButton
.
setText
(
CoreMessages
.
dialog_connection_wizard_configure
);
eventsButton
.
setImage
(
DBeaverIcons
.
getImage
(
UIIcon
.
EVENT
));
eventsButton
.
setLayoutData
(
new
GridData
(
GridData
.
HORIZONTAL_ALIGN_BEGINNING
));
eventsButton
.
addSelectionListener
(
new
SelectionAdapter
()
{
@Override
public
void
widgetSelected
(
SelectionEvent
e
)
{
configureEvents
();
}
});
}
}
{
Group
miscGroup
=
UIUtils
.
createControlGroup
(
optionsGroup
,
CoreMessages
.
dialog_connection_wizard_final_group_misc
,
1
,
GridData
.
VERTICAL_ALIGN_BEGINNING
,
0
);
showSystemObjects
=
UIUtils
.
createCheckbox
(
miscGroup
,
CoreMessages
.
dialog_connection_wizard_final_checkbox_show_system_objects
,
dataSourceDescriptor
==
null
||
dataSourceDescriptor
.
isShowSystemObjects
());
showSystemObjects
.
setLayoutData
(
new
GridData
(
GridData
.
HORIZONTAL_ALIGN_BEGINNING
));
showUtilityObjects
=
UIUtils
.
createCheckbox
(
miscGroup
,
CoreMessages
.
dialog_connection_wizard_final_checkbox_show_util_objects
,
dataSourceDescriptor
==
null
||
dataSourceDescriptor
.
isShowUtilityObjects
());
showUtilityObjects
.
setLayoutData
(
new
GridData
(
GridData
.
HORIZONTAL_ALIGN_BEGINNING
));
readOnlyConnection
=
UIUtils
.
createCheckbox
(
miscGroup
,
CoreMessages
.
dialog_connection_wizard_final_checkbox_connection_readonly
,
dataSourceDescriptor
!=
null
&&
dataSourceDescriptor
.
isConnectionReadOnly
());
gd
=
new
GridData
(
GridData
.
HORIZONTAL_ALIGN_BEGINNING
);
//gd.horizontalSpan = 2;
readOnlyConnection
.
setLayoutData
(
gd
);
}
{
// Filters
filtersGroup
=
UIUtils
.
createControlGroup
(
group
,
CoreMessages
.
dialog_connection_wizard_final_group_filters
,
2
,
GridData
.
VERTICAL_ALIGN_BEGINNING
,
0
);
for
(
int
i
=
0
;
i
<
filters
.
size
();
i
++)
{
final
FilterInfo
filterInfo
=
filters
.
get
(
i
);
filterInfo
.
link
=
UIUtils
.
createLink
(
filtersGroup
,
"<a>"
+
filterInfo
.
title
+
"</a>"
,
new
SelectionAdapter
()
{
@Override
public
void
widgetSelected
(
SelectionEvent
e
)
{
EditObjectFilterDialog
dialog
=
new
EditObjectFilterDialog
(
getShell
(),
getWizard
().
getDataSourceRegistry
(),
filterInfo
.
title
,
filterInfo
.
filter
!=
null
?
filterInfo
.
filter
:
new
DBSObjectFilter
(),
true
);
if
(
dialog
.
open
()
==
IDialogConstants
.
OK_ID
)
{
filterInfo
.
filter
=
dialog
.
getFilter
();
if
(
filterInfo
.
filter
!=
null
&&
!
filterInfo
.
filter
.
isNotApplicable
())
{
filterInfo
.
link
.
setFont
(
boldFont
);
}
else
{
filterInfo
.
link
.
setFont
(
getFont
());
}
}
}
});
}
}
}
setControl
(
group
);
UIUtils
.
setHelp
(
group
,
IHelpContextIds
.
CTX_CON_WIZARD_FINAL
);
}
@Override
public
boolean
isPageComplete
()
{
return
true
;
}
void
saveSettings
(
DataSourceDescriptor
dataSource
)
{
if
(
dataSourceDescriptor
!=
null
&&
!
activated
)
{
// No changes anyway
return
;
}
dataSource
.
setSavePassword
(
savePasswordCheck
.
getSelection
());
try
{
dataSource
.
setDefaultAutoCommit
(
autocommit
.
getSelection
(),
null
,
true
,
null
);
if
(
dataSource
.
isConnected
())
{
int
levelIndex
=
isolationLevel
.
getSelectionIndex
();
if
(
levelIndex
<=
0
)
{
dataSource
.
setDefaultTransactionsIsolation
(
null
);
}
else
{
dataSource
.
setDefaultTransactionsIsolation
(
supportedLevels
.
get
(
levelIndex
-
1
));
}
}
}
catch
(
DBException
e
)
{
log
.
error
(
e
);
}
dataSource
.
setDefaultActiveObject
(
defaultSchema
.
getText
());
dataSource
.
setShowSystemObjects
(
showSystemObjects
.
getSelection
());
dataSource
.
setShowUtilityObjects
(
showUtilityObjects
.
getSelection
());
dataSource
.
setConnectionReadOnly
(
readOnlyConnection
.
getSelection
());
if
(!
dataSource
.
isSavePassword
())
{
dataSource
.
resetPassword
();
}
final
DBPConnectionConfiguration
confConfig
=
dataSource
.
getConnectionConfiguration
();
for
(
FilterInfo
filterInfo
:
filters
)
{
if
(
filterInfo
.
filter
!=
null
)
{
dataSource
.
setObjectFilter
(
filterInfo
.
type
,
null
,
filterInfo
.
filter
);
}
}
DBPConnectionBootstrap
bootstrap
=
confConfig
.
getBootstrap
();
bootstrap
.
setIgnoreErrors
(
ignoreBootstrapErrors
);
bootstrap
.
setInitQueries
(
bootstrapQueries
);
confConfig
.
setKeepAliveInterval
(
keepAliveInterval
.
getSelection
());
}
private
void
configureEvents
()
{
DataSourceDescriptor
dataSource
=
getActiveDataSource
();
EditShellCommandsDialog
dialog
=
new
EditShellCommandsDialog
(
getShell
(),
dataSource
);
if
(
dialog
.
open
()
==
IDialogConstants
.
OK_ID
)
{
eventsButton
.
setFont
(
getFont
());
for
(
DBPConnectionEventType
eventType
:
dataSource
.
getConnectionConfiguration
().
getDeclaredEvents
())
{
if
(
dataSource
.
getConnectionConfiguration
().
getEvent
(
eventType
).
isEnabled
())
{
eventsButton
.
setFont
(
boldFont
);
break
;
}
}
}
}
@Override
public
void
setWizard
(
IWizard
newWizard
)
{
super
.
setWizard
(
newWizard
);
if
(
newWizard
instanceof
ConnectionWizard
)
{
// Listen for connection type change
((
ConnectionWizard
)
newWizard
).
addPropertyChangeListener
(
event
->
{
if
(
ConnectionWizard
.
PROP_CONNECTION_TYPE
.
equals
(
event
.
getProperty
()))
{
DBPConnectionType
type
=
(
DBPConnectionType
)
event
.
getNewValue
();
autocommit
.
setSelection
(
type
.
isAutocommit
());
}
});
}
}
private
class
SchemaReadJob
extends
AbstractJob
{
private
DBSObjectContainer
objectContainer
;
public
SchemaReadJob
(
DBSObjectContainer
objectContainer
)
{
super
(
"Schema reader"
);
this
.
objectContainer
=
objectContainer
;
}
@Override
protected
IStatus
run
(
DBRProgressMonitor
monitor
)
{
try
{
final
List
<
String
>
schemaNames
=
new
ArrayList
<>();
Collection
<?
extends
DBSObject
>
children
=
objectContainer
.
getChildren
(
monitor
);
if
(
children
!=
null
)
{
for
(
DBSObject
child
:
children
)
{
if
(
child
instanceof
DBSObjectContainer
)
{
schemaNames
.
add
(
child
.
getName
());
}
}
}
if
(!
schemaNames
.
isEmpty
())
{
UIUtils
.
syncExec
(()
->
{
if
(!
defaultSchema
.
isDisposed
())
{
String
oldText
=
defaultSchema
.
getText
();
defaultSchema
.
removeAll
();
for
(
String
name
:
schemaNames
)
{
defaultSchema
.
add
(
name
);
}
if
(!
CommonUtils
.
isEmpty
(
oldText
))
{
defaultSchema
.
setText
(
oldText
);
}
}
});
}
}
catch
(
DBException
e
)
{
log
.
warn
(
"Can't read schema list"
,
e
);
}
return
Status
.
OK_STATUS
;
}
}
}
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/connection/ConnectionPageSettings.java
浏览文件 @
e88d54ea
...
...
@@ -356,6 +356,9 @@ class ConnectionPageSettings extends ActiveWizardPage<ConnectionWizard> implemen
}
else
{
extraPages
=
ArrayUtils
.
concatArrays
(
extraPages
,
new
IDialogPage
[]
{
page
});
}
if
(
page
instanceof
IWizardPage
)
{
((
IWizardPage
)
page
).
setWizard
(
getWizard
());
}
}
@Override
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/connection/ConnectionWizard.java
浏览文件 @
e88d54ea
...
...
@@ -22,6 +22,8 @@ import org.eclipse.core.runtime.Status;
import
org.eclipse.core.runtime.jobs.Job
;
import
org.eclipse.jface.dialogs.MessageDialog
;
import
org.eclipse.jface.operation.IRunnableWithProgress
;
import
org.eclipse.jface.util.IPropertyChangeListener
;
import
org.eclipse.jface.util.PropertyChangeEvent
;
import
org.eclipse.jface.wizard.IWizardPage
;
import
org.eclipse.jface.wizard.Wizard
;
import
org.eclipse.osgi.util.NLS
;
...
...
@@ -52,7 +54,9 @@ import org.jkiss.utils.CommonUtils;
import
java.lang.reflect.InvocationTargetException
;
import
java.sql.Connection
;
import
java.sql.DatabaseMetaData
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
/**
...
...
@@ -60,10 +64,14 @@ import java.util.Map;
*/
public
abstract
class
ConnectionWizard
extends
Wizard
implements
INewWizard
{
public
static
final
String
PROP_CONNECTION_TYPE
=
"connection-type"
;
private
static
final
Log
log
=
Log
.
getLog
(
ConnectionWizard
.
class
);
// protected final IProject project;
private
final
Map
<
DriverDescriptor
,
DataSourceDescriptor
>
infoMap
=
new
HashMap
<>();
private
final
List
<
IPropertyChangeListener
>
propertyListeners
=
new
ArrayList
<>();
private
boolean
resized
=
false
;
protected
ConnectionWizard
()
...
...
@@ -278,4 +286,14 @@ public abstract class ConnectionWizard extends Wizard implements INewWizard {
return
Status
.
OK_STATUS
;
}
}
public
void
addPropertyChangeListener
(
IPropertyChangeListener
listener
)
{
propertyListeners
.
add
(
listener
);
}
public
void
firePropertyChangeEvent
(
String
property
,
Object
oldValue
,
Object
newValue
)
{
for
(
IPropertyChangeListener
listener
:
propertyListeners
)
{
listener
.
propertyChange
(
new
PropertyChangeEvent
(
this
,
property
,
oldValue
,
newValue
));
}
}
}
\ No newline at end of file
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/connection/EditConnectionWizard.java
浏览文件 @
e88d54ea
...
...
@@ -61,6 +61,7 @@ public class EditConnectionWizard extends ConnectionWizard
private
ConnectionPageSettings
pageSettings
;
private
ConnectionPageGeneral
pageGeneral
;
private
ConnectionPageNetwork
pageNetwork
;
private
ConnectionPageInitialization
pageInit
;
private
EditShellCommandsDialogPage
pageEvents
;
private
List
<
WizardPrefPage
>
prefPages
=
new
ArrayList
<>();
private
PrefPageConnections
pageClientSettings
;
...
...
@@ -127,6 +128,7 @@ public class EditConnectionWizard extends ConnectionWizard
if
(!
embedded
)
{
pageNetwork
=
new
ConnectionPageNetwork
(
this
);
}
pageInit
=
new
ConnectionPageInitialization
(
dataSource
);
pageEvents
=
new
EditShellCommandsDialogPage
(
dataSource
);
addPage
(
pageGeneral
);
...
...
@@ -134,6 +136,7 @@ public class EditConnectionWizard extends ConnectionWizard
if
(!
embedded
)
{
pageSettings
.
addSubPage
(
pageNetwork
);
}
pageSettings
.
addSubPage
(
pageInit
);
pageSettings
.
addSubPage
(
pageEvents
);
}
...
...
@@ -289,6 +292,7 @@ public class EditConnectionWizard extends ConnectionWizard
if
(
isPageActive
(
pageNetwork
))
{
pageNetwork
.
saveConfigurations
(
dataSource
);
}
pageInit
.
saveSettings
(
dataSource
);
pageEvents
.
saveConfigurations
(
dataSource
);
for
(
WizardPrefPage
prefPage
:
prefPages
)
{
savePageSettings
(
prefPage
);
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/connection/NewConnectionWizard.java
浏览文件 @
e88d54ea
...
...
@@ -48,7 +48,7 @@ public class NewConnectionWizard extends ConnectionWizard
private
Map
<
DataSourceProviderDescriptor
,
ConnectionPageSettings
>
settingsPages
=
new
HashMap
<>();
private
ConnectionPageGeneral
pageGeneral
;
private
ConnectionPageNetwork
pageNetwork
;
private
ConnectionPageInitialization
pageInit
;
public
NewConnectionWizard
()
{
...
...
@@ -114,8 +114,10 @@ public class NewConnectionWizard extends ConnectionWizard
pageGeneral
=
new
ConnectionPageGeneral
(
this
);
pageNetwork
=
new
ConnectionPageNetwork
(
this
);
pageInit
=
new
ConnectionPageInitialization
();
addPage
(
pageGeneral
);
addPage
(
pageNetwork
);
addPage
(
pageInit
);
// Initial settings
if
(
selection
!=
null
&&
!
selection
.
isEmpty
())
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录