/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.components.database.gui;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CCombo;
import org.eclipse.swt.custom.CLabel;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.forms.widgets.Section;
import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
import de.rcenvironment.components.database.common.DatabaseComponentConstants;
import de.rcenvironment.components.database.common.jdbc.JDBCDriverInformation;
import de.rcenvironment.components.database.common.jdbc.JDBCDriverService;
import de.rcenvironment.core.gui.resources.api.ImageManager;
import de.rcenvironment.core.gui.resources.api.StandardImages;
import de.rcenvironment.core.gui.workflow.editor.properties.ValidatingWorkflowNodePropertySection;
import de.rcenvironment.core.utils.incubator.ServiceRegistry;
import de.rcenvironment.core.utils.incubator.ServiceRegistryAccess;
/**
* Database connection sections.
*
* @author Oliver Seebach
*/
public class DatabaseConnectionSection extends ValidatingWorkflowNodePropertySection {
private static JDBCDriverService jdbcDriverService;
private static final Integer MINIMUM_TEXTFIELD_WIDTH = 150;
// private final static String DATABASE_FOUND = "Database found.";
//
// private final static String DATABASE_NOT_FOUND = "Cannot find database.";
//
// private final static String DATABASE_PENDING = "Pending ... ";
//
// private CLabel testDatabaseStatusLabel;
private CCombo databaseConnectorCombo;
private ServiceRegistryAccess serviceRegistryAccess;
public DatabaseConnectionSection() {
serviceRegistryAccess = ServiceRegistry.createAccessFor(this);
jdbcDriverService = serviceRegistryAccess.getService(JDBCDriverService.class);
}
@Override
protected void createCompositeContent(final Composite parent, TabbedPropertySheetPage aTabbedPropertySheetPage) {
super.createCompositeContent(parent, aTabbedPropertySheetPage);
TabbedPropertySheetWidgetFactory factory = aTabbedPropertySheetPage.getWidgetFactory();
final Section sectionDatabase = factory.createSection(parent, Section.TITLE_BAR | Section.EXPANDED);
sectionDatabase.setText("Database Connection");
sectionDatabase.marginWidth = 5;
sectionDatabase.marginHeight = 5;
Composite mainComposite = new Composite(sectionDatabase, SWT.NONE);
mainComposite.setLayout(new GridLayout(1, false));
mainComposite.setBackground(Display.getCurrent().getSystemColor(1));
GridData mainData = new GridData(GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL | GridData.FILL_BOTH);
mainComposite.setLayoutData(mainData);
// 1
Composite informationLabelComposite = new Composite(mainComposite, SWT.NONE);
informationLabelComposite.setLayout(new GridLayout(2, false));
GridData informationLabelData = new GridData(GridData.GRAB_HORIZONTAL | GridData.FILL_BOTH);
informationLabelData.horizontalSpan = 2;
informationLabelComposite.setLayoutData(informationLabelData);
CLabel informationLabel = new CLabel(informationLabelComposite, SWT.LEFT | SWT.SHADOW_NONE);
informationLabel.setText("Please define the database for this component to use:");
// 2
Composite databaseSelectionComposite = new Composite(mainComposite, SWT.NONE);
databaseSelectionComposite.setLayout(new GridLayout(1, false));
GridData databaseSelectionData = new GridData(GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL | GridData.FILL_VERTICAL);
databaseSelectionComposite.setLayoutData(databaseSelectionData);
Group databaseSelectionGroup = new Group(databaseSelectionComposite, SWT.NONE);
databaseSelectionGroup.setText("Database");
databaseSelectionGroup.setLayout(new GridLayout(2, false));
GridData databaseSelectionGroupData = new GridData(GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL | GridData.FILL_VERTICAL);
databaseSelectionGroup.setLayoutData(databaseSelectionGroupData);
// DB NAME
Label databaseNameLabel = new Label(databaseSelectionGroup, SWT.NONE);
databaseNameLabel.setText("Database Name: ");
GridData databaseNameLabelData = new GridData(GridData.VERTICAL_ALIGN_BEGINNING);
databaseNameLabel.setLayoutData(databaseNameLabelData);
Text databaseNameText = new Text(databaseSelectionGroup, SWT.BORDER);
GridData databaseNameTextData = new GridData(GridData.VERTICAL_ALIGN_BEGINNING);
databaseNameTextData.minimumWidth = MINIMUM_TEXTFIELD_WIDTH;
databaseNameTextData.widthHint = MINIMUM_TEXTFIELD_WIDTH;
databaseNameText.setLayoutData(databaseNameTextData);
databaseNameText.setData(CONTROL_PROPERTY_KEY, DatabaseComponentConstants.DATABASE_NAME);
// DB CONNECTOR
Label databaseConnectorLabel = new Label(databaseSelectionGroup, SWT.NONE);
databaseConnectorLabel.setText("Database Type: ");
GridData databaseConnectorLabelData = new GridData(GridData.VERTICAL_ALIGN_BEGINNING);
databaseConnectorLabel.setLayoutData(databaseConnectorLabelData);
databaseConnectorCombo = new CCombo(databaseSelectionGroup, SWT.READ_ONLY | SWT.BORDER);
GridData databaseConnectorData = new GridData(GridData.VERTICAL_ALIGN_BEGINNING);
databaseConnectorData.minimumWidth = MINIMUM_TEXTFIELD_WIDTH;
databaseConnectorData.widthHint = MINIMUM_TEXTFIELD_WIDTH;
databaseConnectorCombo.setLayoutData(databaseConnectorData);
databaseConnectorCombo.setData(CONTROL_PROPERTY_KEY, DatabaseComponentConstants.DATABASE_CONNECTOR);
for (JDBCDriverInformation jdbcDriver : jdbcDriverService.getRegisteredJDBCDrivers()) {
databaseConnectorCombo.add(jdbcDriver.getDisplayName());
}
if (databaseConnectorCombo.getItemCount() > 0) {
databaseConnectorCombo.select(0);
}
// DB HOST
Label databaseHostLabel = new Label(databaseSelectionGroup, SWT.NONE);
databaseHostLabel.setText("Database Host: ");
GridData databaseHostLabelData = new GridData(GridData.VERTICAL_ALIGN_BEGINNING);
databaseHostLabel.setLayoutData(databaseHostLabelData);
Text databaseHostText = new Text(databaseSelectionGroup, SWT.BORDER);
GridData databaseHostTextData = new GridData(GridData.VERTICAL_ALIGN_BEGINNING);
databaseHostTextData.minimumWidth = MINIMUM_TEXTFIELD_WIDTH;
databaseHostTextData.widthHint = MINIMUM_TEXTFIELD_WIDTH;
databaseHostText.setLayoutData(databaseHostTextData);
databaseHostText.setData(CONTROL_PROPERTY_KEY, DatabaseComponentConstants.DATABASE_HOST);
// DB PORT
Label databasePortLabel = new Label(databaseSelectionGroup, SWT.NONE);
databasePortLabel.setText("Database Port: ");
GridData databasePortLabelData = new GridData(GridData.VERTICAL_ALIGN_BEGINNING);
databasePortLabel.setLayoutData(databasePortLabelData);
Text databasePortText = new Text(databaseSelectionGroup, SWT.BORDER);
GridData databasePortTextData = new GridData(GridData.VERTICAL_ALIGN_BEGINNING);
databasePortTextData.minimumWidth = MINIMUM_TEXTFIELD_WIDTH;
databasePortTextData.widthHint = MINIMUM_TEXTFIELD_WIDTH;
databasePortText.setLayoutData(databasePortTextData);
databasePortText.setData(CONTROL_PROPERTY_KEY, DatabaseComponentConstants.DATABASE_PORT);
// DB SCHEME
Label databaseSchemeLabel = new Label(databaseSelectionGroup, SWT.NONE);
databaseSchemeLabel.setText("Default Scheme: ");
GridData databaseSchemeLabelData = new GridData(GridData.VERTICAL_ALIGN_BEGINNING);
databaseSchemeLabel.setLayoutData(databaseSchemeLabelData);
Text databaseSchemeText = new Text(databaseSelectionGroup, SWT.BORDER);
GridData databaseSchemeTextData = new GridData(GridData.VERTICAL_ALIGN_BEGINNING);
databaseSchemeTextData.minimumWidth = MINIMUM_TEXTFIELD_WIDTH;
databaseSchemeTextData.widthHint = MINIMUM_TEXTFIELD_WIDTH;
databaseSchemeText.setLayoutData(databaseSchemeTextData);
databaseSchemeText.setData(CONTROL_PROPERTY_KEY, DatabaseComponentConstants.DATABASE_SCHEME);
// TEST DB
// Label testDBPlaceholderLabel = new Label(databaseSelectionGroup, SWT.NONE);
// testDBPlaceholderLabel.setText("");
// GridData testDBPlaceholderLabelData = new GridData(GridData.VERTICAL_ALIGN_BEGINNING);
// testDBPlaceholderLabel.setLayoutData(testDBPlaceholderLabelData);
//
// Button testDatabaseButton = new Button(databaseSelectionGroup, SWT.PUSH);
// testDatabaseButton.setText("Test Connection");
// testDatabaseButton.addSelectionListener(new TestDatabaseButtonListener());
// GridData testDatabaseButtonData = new GridData(GridData.HORIZONTAL_ALIGN_END);
// testDatabaseButton.setLayoutData(testDatabaseButtonData);
// INFORMATION LABEL
CLabel databaseSchemeInformationLabel = new CLabel(mainComposite, SWT.NONE);
databaseSchemeInformationLabel
.setText("Please note: 'Default Scheme' is the scheme you would define using the 'USE <scheme_name>' command.");
databaseSchemeInformationLabel.setImage(ImageManager.getInstance().getSharedImage(StandardImages.INFORMATION_16));
GridData databaseSchemeInformationLabelData = new GridData(GridData.VERTICAL_ALIGN_BEGINNING);
// databaseSchemeInformationLabelData.horizontalSpan = 2;
databaseSchemeInformationLabel.setLayoutData(databaseSchemeInformationLabelData);
sectionDatabase.setClient(mainComposite);
}
// Currently not required -- seeb_ol, November 2015
// private final class TestDatabaseButtonListener implements SelectionListener {
//
// @Override
// public void widgetSelected(SelectionEvent event) {
//
// testDatabaseStatusLabel.setText(DATABASE_PENDING);
//
// DatabaseConnection databaseConnectionToBeTested = new DatabaseConnection();
//
// // do test procedure here!
// boolean connectionEstablished = false;
//
// if (connectionEstablished) {
// testDatabaseStatusLabel.setText(DATABASE_FOUND);
// } else {
// testDatabaseStatusLabel.setText(DATABASE_NOT_FOUND);
// }
//
// }
//
// @Override
// public void widgetDefaultSelected(SelectionEvent event) {
// widgetSelected(event);
// }
// }
//
// private final class AddDatabaseButtonListener implements SelectionListener {
//
// @Override
// public void widgetSelected(SelectionEvent event) {
//
// DatabaseConnectionAddEditDialog databaseEditDialog =
// new DatabaseConnectionAddEditDialog(Display.getCurrent().getActiveShell(), DatabaseManagementActionType.ADD);
// databaseEditDialog.open();
//
// }
//
// @Override
// public void widgetDefaultSelected(SelectionEvent event) {
// widgetSelected(event);
// }
// }
//
// private final class EditDatabaseButtonListener implements SelectionListener {
//
// @Override
// public void widgetSelected(SelectionEvent event) {
//
// DatabaseConnection dbConnection = new DatabaseConnection();
// DatabaseConnectionAddEditDialog databaseEditDialog =
// new DatabaseConnectionAddEditDialog(Display.getCurrent().getActiveShell(),
// dbConnection, DatabaseManagementActionType.EDIT);
// databaseEditDialog.open();
// }
//
// @Override
// public void widgetDefaultSelected(SelectionEvent event) {
// widgetSelected(event);
// }
// }
//
// private final class ManageDatabaseButtonListener implements SelectionListener {
//
// @Override
// public void widgetSelected(SelectionEvent event) {
//
// DatabaseManagementDialog managementDialog = new DatabaseManagementDialog(Display.getCurrent().getActiveShell());
// managementDialog.open();
//
// }
//
// @Override
// public void widgetDefaultSelected(SelectionEvent event) {
// widgetSelected(event);
// }
// }
}