package org.insightech.er.editor.view.dialog.word.column.real;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.TabFolder;
import org.eclipse.swt.widgets.TabItem;
import org.eclipse.swt.widgets.Text;
import org.insightech.er.ResourceString;
import org.insightech.er.common.widgets.CompositeFactory;
import org.insightech.er.db.sqltype.SqlType;
import org.insightech.er.editor.model.ERDiagram;
import org.insightech.er.editor.model.diagram_contents.element.node.table.column.NormalColumn;
import org.insightech.er.editor.view.dialog.word.column.AbstractColumnDialog;
public abstract class AbstractRealColumnDialog extends AbstractColumnDialog {
protected Button notNullCheck;
protected Button uniqueKeyCheck;
protected Combo defaultText;
protected Text constraintText;
private TabFolder tabFolder;
protected TabItem tabItem;
public AbstractRealColumnDialog(Shell parentShell, ERDiagram diagram) {
super(parentShell, diagram);
}
@Override
protected Composite createRootComposite(Composite parent) {
this.tabFolder = new TabFolder(parent, SWT.NONE);
this.tabItem = new TabItem(this.tabFolder, SWT.NONE);
this.tabItem.setText(ResourceString.getResourceString("label.basic"));
Composite composite = super.createRootComposite(this.tabFolder);
this.tabItem.setControl(composite);
this.tabItem = new TabItem(this.tabFolder, SWT.NONE);
this.tabItem.setText(ResourceString.getResourceString("label.detail"));
Composite detailComposite = this.createDetailTab(this.tabFolder);
this.initializeDetailTab(detailComposite);
this.tabItem.setControl(detailComposite);
return composite;
}
/**
* {@inheritDoc}
*/
@Override
protected void initializeComposite(Composite composite) {
int numColumns = this.getCompositeNumColumns();
Composite checkBoxComposite = new Composite(composite, SWT.NONE);
GridData gridData = new GridData();
gridData.horizontalSpan = numColumns;
gridData.heightHint = 40;
checkBoxComposite.setLayoutData(gridData);
GridLayout gridLayout = new GridLayout();
gridLayout.numColumns = this.getCheckBoxCompositeNumColumns();
checkBoxComposite.setLayout(gridLayout);
this.initializeCheckBoxComposite(checkBoxComposite);
super.initializeComposite(composite);
this.defaultText = CompositeFactory.createCombo(this, composite,
"label.column.default.value", numColumns - 1);
}
protected int getCheckBoxCompositeNumColumns() {
return 2;
}
private Composite createDetailTab(TabFolder tabFolder) {
GridLayout gridLayout = new GridLayout();
gridLayout.numColumns = 2;
Composite composite = new Composite(tabFolder, SWT.NONE);
composite.setLayout(gridLayout);
return composite;
}
protected void initializeDetailTab(Composite composite) {
this.constraintText = CompositeFactory.createText(this, composite,
"label.column.constraint", false);
}
protected void initializeCheckBoxComposite(Composite composite) {
this.notNullCheck = CompositeFactory.createCheckbox(this, composite,
"label.not.null");
this.uniqueKeyCheck = CompositeFactory.createCheckbox(this, composite,
"label.unique.key");
}
/**
* {@inheritDoc}
*/
@Override
protected void setWordData() {
this.notNullCheck.setSelection(this.targetColumn.isNotNull());
this.uniqueKeyCheck.setSelection(this.targetColumn.isUniqueKey());
if (this.targetColumn.getConstraint() != null) {
this.constraintText.setText(this.targetColumn.getConstraint());
}
if (this.targetColumn.getDefaultValue() != null) {
this.defaultText.setText(this.targetColumn.getDefaultValue());
}
super.setWordData();
}
/**
* {@inheritDoc}
*/
@Override
protected void perfomeOK() {
super.perfomeOK();
this.returnColumn = new NormalColumn(this.returnWord, notNullCheck
.getSelection(), false, uniqueKeyCheck.getSelection(), false,
defaultText.getText(), constraintText.getText(), null, null,
null);
}
@Override
protected void setEnabledBySqlType() {
super.setEnabledBySqlType();
SqlType selectedType = SqlType.valueOf(diagram.getDatabase(), typeCombo
.getText());
if (selectedType != null) {
String defaultValue = this.defaultText.getText();
this.defaultText.removeAll();
if (selectedType.isTimestamp()) {
this.defaultText.add(ResourceString
.getResourceString("label.current.date.time"));
this.defaultText.setText(defaultValue);
} else {
if (!ResourceString
.getResourceString("label.current.date.time").equals(
defaultValue)) {
this.defaultText.setText(defaultValue);
}
}
}
}
}