提交 bc7119a1 编写于 作者: J jurgen

Move tunnel settings to separate wizard page (for edit dialog)

Former-commit-id: 4decd8ae
上级 93b92990
......@@ -154,18 +154,20 @@ class ConnectionPageFinal extends ActiveWizardPage {
connectionNameText.setText(newName);
connectionNameChanged = false;
tunnelButton.setFont(getFont());
for (DBWHandlerConfiguration config : connectionInfo.getDeclaredHandlers()) {
if (config.isEnabled()) {
tunnelButton.setFont(boldFont);
break;
if (dataSourceDescriptor == null) {
tunnelButton.setFont(getFont());
for (DBWHandlerConfiguration config : connectionInfo.getDeclaredHandlers()) {
if (config.isEnabled()) {
tunnelButton.setFont(boldFont);
break;
}
}
}
eventsButton.setFont(getFont());
for (DBPConnectionEventType eventType : connectionInfo.getDeclaredEvents()) {
if (connectionInfo.getEvent(eventType).isEnabled()) {
eventsButton.setFont(boldFont);
break;
eventsButton.setFont(getFont());
for (DBPConnectionEventType eventType : connectionInfo.getDeclaredEvents()) {
if (connectionInfo.getEvent(eventType).isEnabled()) {
eventsButton.setFont(boldFont);
break;
}
}
}
}
......@@ -407,7 +409,7 @@ class ConnectionPageFinal extends ActiveWizardPage {
gd.horizontalSpan = 2;
buttonsGroup.setLayoutData(gd);
{
if (dataSourceDescriptor == null) {
tunnelButton = new Button(buttonsGroup, SWT.PUSH);
tunnelButton.setText(CoreMessages.dialog_connection_wizard_final_button_tunneling);
gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
......@@ -420,9 +422,7 @@ class ConnectionPageFinal extends ActiveWizardPage {
configureTunnels();
}
});
}
{
eventsButton = new Button(buttonsGroup, SWT.PUSH);
eventsButton.setText(CoreMessages.dialog_connection_wizard_final_button_events);
gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
......
......@@ -195,7 +195,7 @@ class ConnectionPageSettings extends ActiveWizardPage implements IDataSourceConn
{
if (this.connectionEditor != null) {
this.connectionEditor.saveSettings();
this.wizard.testConnection(getConnectionInfo());
this.wizard.testConnection();
}
}
......
......@@ -73,8 +73,11 @@ public abstract class ConnectionWizard extends Wizard implements INewWizard
public abstract ConnectionPageSettings getPageSettings();
public void testConnection(final DBPConnectionInfo connectionInfo)
public void testConnection()
{
saveSettings();
final DBPConnectionInfo connectionInfo = getPageSettings().getConnectionInfo();
DBRRunnableWithProgress op = new DBRRunnableWithProgress()
{
@Override
......@@ -154,6 +157,11 @@ public abstract class ConnectionWizard extends Wizard implements INewWizard
}
}
protected void saveSettings()
{
getPageSettings().saveSettings();
}
public boolean isNew()
{
return getDataSourceDescriptor() == null;
......
......@@ -71,8 +71,7 @@ public class CreateConnectionDialog extends ActiveWizardDialog
private void testConnection()
{
ConnectionWizard wizard = (ConnectionWizard) getWizard();
wizard.getPageSettings().saveSettings();
wizard.testConnection(wizard.getPageSettings().getConnectionInfo());
wizard.testConnection();
}
}
......@@ -89,8 +89,7 @@ public class EditConnectionDialog extends MultiPageWizardDialog
private void testConnection()
{
getWizard().getPageSettings().saveSettings();
getWizard().testConnection(getWizard().getPageSettings().getConnectionInfo());
getWizard().testConnection();
}
}
......@@ -39,6 +39,7 @@ public class EditConnectionWizard extends ConnectionWizard
private DBPConnectionInfo oldData;
private ConnectionPageSettings pageSettings;
private ConnectionPageFinal pageFinal;
private EditTunnelDialogPage pageTunels;
/**
* Constructor for SampleNewWizard.
......@@ -83,6 +84,8 @@ public class EditConnectionWizard extends ConnectionWizard
pageFinal = new ConnectionPageFinal(this, dataSource);
addPage(pageFinal);
pageTunels = new EditTunnelDialogPage(dataSource.getDriver(), dataSource.getConnectionInfo());
addPage(pageTunels);
}
/**
......@@ -96,6 +99,7 @@ public class EditConnectionWizard extends ConnectionWizard
super.performFinish();
dataSource.setUpdateDate(new Date());
pageFinal.saveSettings(dataSource);
pageTunels.saveConfigurations();
dataSource.getRegistry().updateDataSource(dataSource);
return true;
}
......@@ -116,4 +120,11 @@ public class EditConnectionWizard extends ConnectionWizard
{
}
@Override
protected void saveSettings()
{
super.saveSettings();
pageTunels.saveConfigurations();
}
}
\ No newline at end of file
......@@ -18,157 +18,43 @@
*/
package org.jkiss.dbeaver.ui.dialogs.connection;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.eclipse.jface.dialogs.ControlEnableState;
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.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.*;
import org.jkiss.dbeaver.DBException;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Shell;
import org.jkiss.dbeaver.core.CoreMessages;
import org.jkiss.dbeaver.core.DBeaverCore;
import org.jkiss.dbeaver.ext.ui.IObjectPropertyConfigurator;
import org.jkiss.dbeaver.model.DBPConnectionInfo;
import org.jkiss.dbeaver.model.DBPDriver;
import org.jkiss.dbeaver.model.net.DBWHandlerConfiguration;
import org.jkiss.dbeaver.registry.NetworkHandlerDescriptor;
import org.jkiss.dbeaver.registry.NetworkHandlerRegistry;
import org.jkiss.dbeaver.ui.IHelpContextIds;
import org.jkiss.dbeaver.ui.UIUtils;
import org.jkiss.dbeaver.ui.dialogs.HelpEnabledDialog;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
/**
* Network handlers edit dialog
*/
public class EditTunnelDialog extends HelpEnabledDialog {
static final Log log = LogFactory.getLog(EditTunnelDialog.class);
private static class HandlerBlock {
IObjectPropertyConfigurator<DBWHandlerConfiguration> configurator;
DBWHandlerConfiguration configuration;
Composite blockControl;
ControlEnableState blockEnableState;
private HandlerBlock(IObjectPropertyConfigurator<DBWHandlerConfiguration> configurator, DBWHandlerConfiguration configuration, Composite blockControl)
{
this.configurator = configurator;
this.configuration = configuration;
this.blockControl = blockControl;
}
}
private DBPDriver driver;
private DBPConnectionInfo connectionInfo;
private Map<NetworkHandlerDescriptor, HandlerBlock> configurations = new HashMap<NetworkHandlerDescriptor, HandlerBlock>();
private EditTunnelDialogPage page;
protected EditTunnelDialog(Shell shell, DBPDriver driver, DBPConnectionInfo connectionInfo)
{
super(shell, IHelpContextIds.CTX_EDIT_CONNECTION_TUNNELS);
this.driver = driver;
this.connectionInfo = connectionInfo;
page = new EditTunnelDialogPage(driver, connectionInfo);
}
@Override
protected Control createDialogArea(Composite parent)
{
getShell().setText(CoreMessages.dialog_tunnel_title);
//getShell().setImage(DBIcon.EVENT.getImage());
Composite composite = (Composite) super.createDialogArea(parent);
TabFolder tunnelTypeFolder = new TabFolder(composite, SWT.TOP);
tunnelTypeFolder.setLayoutData(new GridData(GridData.FILL_BOTH));
NetworkHandlerRegistry registry = DBeaverCore.getInstance().getNetworkHandlerRegistry();
for (NetworkHandlerDescriptor descriptor : registry.getDescriptors()) {
try {
createHandlerTab(tunnelTypeFolder, descriptor);
} catch (DBException e) {
log.warn(e);
}
}
return composite;
}
private void createHandlerTab(TabFolder tabFolder, final NetworkHandlerDescriptor descriptor) throws DBException
{
IObjectPropertyConfigurator<DBWHandlerConfiguration> configurator = descriptor.createConfigurator();
DBWHandlerConfiguration configuration = connectionInfo.getHandler(descriptor.getType());
if (configuration == null) {
configuration = new DBWHandlerConfiguration(descriptor, driver);
}
final DBWHandlerConfiguration config = configuration;
TabItem tabItem = new TabItem(tabFolder, SWT.NONE);
tabItem.setText(descriptor.getLabel());
tabItem.setToolTipText(descriptor.getDescription());
Control area = super.createDialogArea(parent);
page.createControl((Composite) area);
Composite composite = new Composite(tabFolder, SWT.NONE);
tabItem.setControl(composite);
composite.setLayout(new GridLayout(1, false));
composite.setLayoutData(new GridData(GridData.FILL_BOTH));
final Button useHandlerCheck = UIUtils.createCheckbox(composite, NLS.bind(CoreMessages.dialog_tunnel_checkbox_use_handler, descriptor.getLabel()), false);
useHandlerCheck.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e)
{
config.setEnabled(useHandlerCheck.getSelection());
enableHandlerContent(descriptor);
}
});
Composite handlerComposite = UIUtils.createPlaceholder(composite, 1);
configurations.put(descriptor, new HandlerBlock(configurator, configuration, handlerComposite));
handlerComposite.setLayoutData(new GridData(GridData.FILL_BOTH));
configurator.createControl(handlerComposite);
useHandlerCheck.setSelection(configuration.isEnabled());
enableHandlerContent(descriptor);
configurator.loadSettings(configuration);
}
protected void enableHandlerContent(NetworkHandlerDescriptor descriptor)
{
HandlerBlock handlerBlock = configurations.get(descriptor);
if (handlerBlock.configuration.isEnabled()) {
if (handlerBlock.blockEnableState != null) {
handlerBlock.blockEnableState.restore();
handlerBlock.blockEnableState = null;
}
} else if (handlerBlock.blockEnableState == null) {
handlerBlock.blockEnableState = ControlEnableState.disable(handlerBlock.blockControl);
}
}
private void saveConfigurations()
{
java.util.List<DBWHandlerConfiguration> handlers = new ArrayList<DBWHandlerConfiguration>();
for (HandlerBlock handlerBlock : configurations.values()) {
handlerBlock.configurator.saveSettings(handlerBlock.configuration);
handlers.add(handlerBlock.configuration);
}
connectionInfo.setHandlers(handlers);
return area;
}
@Override
protected void okPressed()
{
saveConfigurations();
page.saveConfigurations();
super.okPressed();
}
......
/*
* 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.dialogs.connection;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.eclipse.jface.dialogs.ControlEnableState;
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.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.TabFolder;
import org.eclipse.swt.widgets.TabItem;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.core.CoreMessages;
import org.jkiss.dbeaver.core.DBeaverCore;
import org.jkiss.dbeaver.ext.ui.IObjectPropertyConfigurator;
import org.jkiss.dbeaver.model.DBPConnectionInfo;
import org.jkiss.dbeaver.model.DBPDriver;
import org.jkiss.dbeaver.model.net.DBWHandlerConfiguration;
import org.jkiss.dbeaver.registry.NetworkHandlerDescriptor;
import org.jkiss.dbeaver.registry.NetworkHandlerRegistry;
import org.jkiss.dbeaver.ui.UIUtils;
import org.jkiss.dbeaver.ui.dialogs.ActiveWizardPage;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
/**
* Network handlers edit dialog page
*/
public class EditTunnelDialogPage extends ActiveWizardPage {
static final Log log = LogFactory.getLog(EditTunnelDialogPage.class);
private static class HandlerBlock {
IObjectPropertyConfigurator<DBWHandlerConfiguration> configurator;
DBWHandlerConfiguration configuration;
Composite blockControl;
ControlEnableState blockEnableState;
private HandlerBlock(IObjectPropertyConfigurator<DBWHandlerConfiguration> configurator, DBWHandlerConfiguration configuration, Composite blockControl)
{
this.configurator = configurator;
this.configuration = configuration;
this.blockControl = blockControl;
}
}
private DBPDriver driver;
private DBPConnectionInfo connectionInfo;
private Map<NetworkHandlerDescriptor, HandlerBlock> configurations = new HashMap<NetworkHandlerDescriptor, HandlerBlock>();
EditTunnelDialogPage(DBPDriver driver, DBPConnectionInfo connectionInfo)
{
super(CoreMessages.dialog_tunnel_title);
this.driver = driver;
this.connectionInfo = connectionInfo;
setTitle(CoreMessages.dialog_tunnel_title);
}
@Override
public void createControl(Composite parent)
{
TabFolder tunnelTypeFolder = new TabFolder(parent, SWT.TOP);
tunnelTypeFolder.setLayoutData(new GridData(GridData.FILL_BOTH));
NetworkHandlerRegistry registry = DBeaverCore.getInstance().getNetworkHandlerRegistry();
for (NetworkHandlerDescriptor descriptor : registry.getDescriptors()) {
try {
createHandlerTab(tunnelTypeFolder, descriptor);
} catch (DBException e) {
log.warn(e);
}
}
setControl(tunnelTypeFolder);
}
private void createHandlerTab(TabFolder tabFolder, final NetworkHandlerDescriptor descriptor) throws DBException
{
IObjectPropertyConfigurator<DBWHandlerConfiguration> configurator = descriptor.createConfigurator();
DBWHandlerConfiguration configuration = connectionInfo.getHandler(descriptor.getType());
if (configuration == null) {
configuration = new DBWHandlerConfiguration(descriptor, driver);
}
final DBWHandlerConfiguration config = configuration;
TabItem tabItem = new TabItem(tabFolder, SWT.NONE);
tabItem.setText(descriptor.getLabel());
tabItem.setToolTipText(descriptor.getDescription());
Composite composite = new Composite(tabFolder, SWT.NONE);
tabItem.setControl(composite);
composite.setLayout(new GridLayout(1, false));
composite.setLayoutData(new GridData(GridData.FILL_BOTH));
final Button useHandlerCheck = UIUtils.createCheckbox(composite, NLS.bind(CoreMessages.dialog_tunnel_checkbox_use_handler, descriptor.getLabel()), false);
useHandlerCheck.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e)
{
config.setEnabled(useHandlerCheck.getSelection());
enableHandlerContent(descriptor);
}
});
Composite handlerComposite = UIUtils.createPlaceholder(composite, 1);
configurations.put(descriptor, new HandlerBlock(configurator, configuration, handlerComposite));
handlerComposite.setLayoutData(new GridData(GridData.FILL_BOTH));
configurator.createControl(handlerComposite);
useHandlerCheck.setSelection(configuration.isEnabled());
enableHandlerContent(descriptor);
configurator.loadSettings(configuration);
}
protected void enableHandlerContent(NetworkHandlerDescriptor descriptor)
{
HandlerBlock handlerBlock = configurations.get(descriptor);
if (handlerBlock.configuration.isEnabled()) {
if (handlerBlock.blockEnableState != null) {
handlerBlock.blockEnableState.restore();
handlerBlock.blockEnableState = null;
}
} else if (handlerBlock.blockEnableState == null) {
handlerBlock.blockEnableState = ControlEnableState.disable(handlerBlock.blockControl);
}
}
void saveConfigurations()
{
java.util.List<DBWHandlerConfiguration> handlers = new ArrayList<DBWHandlerConfiguration>();
for (HandlerBlock handlerBlock : configurations.values()) {
handlerBlock.configurator.saveSettings(handlerBlock.configuration);
handlers.add(handlerBlock.configuration);
}
connectionInfo.setHandlers(handlers);
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册