/*
* 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.StyledText;
import org.eclipse.swt.events.KeyAdapter;
import org.eclipse.swt.events.KeyEvent;
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.Display;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
/**
* Database statement composite.
*
* @author Oliver Seebach
*/
public class DatabaseStatementComposite extends Composite {
private static final int KEY_CODE_A = 97;
private static final int OUTPUT_COMBO_MINIMUM_WIDTH = 150;
private static final int STATEMENT_TEXT_MINIMUM_HEIGHT = 100;
private CCombo outputCombo;
private StyledText statementText;
private Text statementNameText;
private Button writeToOutputCheckButton;
public DatabaseStatementComposite(Composite parent, int style) {
super(parent, style);
}
/**
* Creates the GUI.
*
*/
public void createControls() {
GridData layoutData = new GridData(GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL | GridData.FILL_BOTH);
setLayout(new GridLayout(1, false));
setLayoutData(layoutData);
Composite statementNameComposite = new Composite(this, SWT.NONE);
statementNameComposite.setLayout(new GridLayout(2, false));
GridData statementNameData = new GridData(GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL | GridData.FILL_BOTH);
statementNameComposite.setLayoutData(statementNameData);
Label statementNameLabel = new Label(statementNameComposite, SWT.NONE);
statementNameLabel.setText("Statement Name:");
statementNameText = new Text(statementNameComposite, SWT.BORDER);
GridData statementNameTextData = new GridData(GridData.GRAB_HORIZONTAL | GridData.FILL_HORIZONTAL);
statementNameText.setLayoutData(statementNameTextData);
// statementNameText.setData(WorkflowNodePropertySection.CONTROL_PROPERTY_KEY, DatabaseComponentConstants.DB_STATEMENTS_KEY);
Composite statementComposite = new Composite(this, SWT.NONE);
statementComposite.setLayout(new GridLayout(1, false));
GridData statementData = new GridData(GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL | GridData.FILL_BOTH);
statementComposite.setLayoutData(statementData);
Label statementTextLabel = new Label(statementComposite, SWT.NONE);
statementTextLabel.setText("Database Statement:");
statementText = new StyledText(statementComposite, SWT.V_SCROLL | SWT.H_SCROLL | SWT.BORDER);
GridData statementTextData = new GridData(GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL | GridData.FILL_BOTH);
statementTextData.minimumHeight = STATEMENT_TEXT_MINIMUM_HEIGHT;
statementText.setLayoutData(statementTextData);
// statementText.setData(WorkflowNodePropertySection.CONTROL_PROPERTY_KEY, DatabaseComponentConstants.DB_STATEMENTS_KEY);
statementText.setIndent(3);
statementText.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
if (e.stateMask == SWT.CTRL && e.keyCode == KEY_CODE_A) {
statementText.selectAll();
}
}
});
Group writeToOutputGroup = new Group(this, SWT.NONE);
writeToOutputGroup.setText("Result to Output:");
writeToOutputGroup.setLayout(new GridLayout(2, false));
GridData writeToOutputGroupData = new GridData(GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL | GridData.FILL_BOTH);
writeToOutputGroup.setLayoutData(writeToOutputGroupData);
writeToOutputCheckButton = new Button(writeToOutputGroup, SWT.CHECK);
writeToOutputCheckButton.setText("Write result to output:");
// writeToOutputCheckButton.setData(WorkflowNodePropertySection.CONTROL_PROPERTY_KEY, DatabaseComponentConstants.DB_STATEMENTS_KEY);
outputCombo = new CCombo(writeToOutputGroup, SWT.READ_ONLY | SWT.BORDER);
outputCombo.setBackground(Display.getDefault().getSystemColor(SWT.COLOR_WHITE));
GridData outputComboData = new GridData(GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL);
outputComboData.minimumWidth = OUTPUT_COMBO_MINIMUM_WIDTH;
outputCombo.setLayoutData(outputComboData);
// outputCombo.setData(WorkflowNodePropertySection.CONTROL_PROPERTY_KEY, DatabaseComponentConstants.DB_STATEMENTS_KEY);
}
public StyledText getStatementText() {
return statementText;
}
public Text getStatementNameText() {
return statementNameText;
}
public Button getWriteToOutputCheckButton() {
return writeToOutputCheckButton;
}
public CCombo getOutputCombo() {
return outputCombo;
}
/**
* Fills output combo and sets selection.
*
* @param items The items to set.
* @param selection The selection to set.
*/
public void fillOutputComboAndSetSelection(String[] items, String selection) {
fillOutputCombo(items);
outputCombo.select(outputCombo.indexOf(selection));
};
/**
* Fills output combo and sets selection.
*
* @param items The items to set.
*/
public void fillOutputCombo(String[] items) {
outputCombo.setItems(items);
};
}