package com.tibco.as.spacebar.ui.wizards.transfer;
import org.eclipse.core.databinding.DataBindingContext;
import org.eclipse.core.databinding.beans.PojoObservables;
import org.eclipse.core.databinding.observable.value.IObservableValue;
import org.eclipse.jface.databinding.swt.SWTObservables;
import org.eclipse.jface.databinding.viewers.ViewersObservables;
import org.eclipse.jface.viewers.ArrayContentProvider;
import org.eclipse.jface.viewers.ComboViewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
import com.tibco.as.spacebar.ui.Messages;
import com.tibco.as.io.AbstractImport;
import com.tibco.as.io.Operation;
import com.tibco.as.space.Member.DistributionRole;
public class ImportEditor extends Composite {
private DataBindingContext m_bindingContext;
private AbstractImport config;
protected ComboViewer distributionRoleCombo;
protected ComboViewer operationCombo;
protected Text batchSizeText;
protected Text workerCountText;
public ImportEditor(Composite parent, int style, AbstractImport config) {
super(parent, style);
this.config = config;
setLayout(new GridLayout(2, false));
Label batchSizeLabel = new Label(this, SWT.NONE);
batchSizeLabel.setText(Messages.Transfer_Import_Batch_Size);
batchSizeLabel
.setToolTipText(Messages.Transfer_Import_Batch_Size_ToolTip);
batchSizeText = new Text(this, SWT.BORDER | SWT.SINGLE);
batchSizeText
.setToolTipText(Messages.Transfer_Import_Batch_Size_ToolTip);
batchSizeText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true,
false));
Label workerCountLabel = new Label(this, SWT.NONE);
workerCountLabel.setText(Messages.Transfer_Import_Worker_Count);
workerCountLabel.setToolTipText(Messages.Transfer_Import_Worker_Count_ToolTip);
workerCountText = new Text(this, SWT.BORDER | SWT.SINGLE);
workerCountText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true,
false));
workerCountText.setToolTipText(Messages.Transfer_Import_Worker_Count_ToolTip);
Label distributionRoleLabel = new Label(this, SWT.NONE);
distributionRoleLabel.setText(Messages.Transfer_Import_Distribution_Role);
distributionRoleLabel.setToolTipText(Messages.Transfer_Import_Distribution_Role_ToolTip);
distributionRoleCombo = new ComboViewer(this, SWT.READ_ONLY);
distributionRoleCombo.getCombo().setLayoutData(
new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
distributionRoleCombo.setContentProvider(ArrayContentProvider
.getInstance());
distributionRoleCombo.setInput(DistributionRole.values());
new Label(this, SWT.NONE).setText("Space operation:");
operationCombo = new ComboViewer(this, SWT.READ_ONLY);
operationCombo.getCombo().setLayoutData(
new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
operationCombo.setContentProvider(ArrayContentProvider.getInstance());
operationCombo.setInput(Operation.values());
if (this.config != null) {
m_bindingContext = initDataBindings();
}
}
@Override
protected void checkSubclass() {
// Disable the check that prevents subclassing of SWT components
}
private DataBindingContext initDataBindings() {
IObservableValue distributionRoleObserveWidget = ViewersObservables
.observeSingleSelection(distributionRoleCombo);
IObservableValue distributionRoleObserveValue = PojoObservables
.observeValue(config, "distributionRole");
IObservableValue operationObserveWidget = ViewersObservables
.observeSingleSelection(operationCombo);
IObservableValue operationObserveValue = PojoObservables.observeValue(
config, "operation");
IObservableValue batchSizeObserveWidget = SWTObservables.observeText(
batchSizeText, SWT.Modify);
IObservableValue batchSizeObserveValue = PojoObservables.observeValue(
config, "batchSize");
IObservableValue workerCountObserveWidget = SWTObservables.observeText(
workerCountText, SWT.Modify);
IObservableValue workerCountObserveValue = PojoObservables
.observeValue(config, "workerCount");
//
DataBindingContext bindingContext = new DataBindingContext();
//
bindingContext.bindValue(distributionRoleObserveWidget,
distributionRoleObserveValue, null, null);
bindingContext.bindValue(operationObserveWidget, operationObserveValue,
null, null);
bindingContext.bindValue(batchSizeObserveWidget, batchSizeObserveValue,
null, null);
bindingContext.bindValue(workerCountObserveWidget,
workerCountObserveValue, null, null);
//
return bindingContext;
}
public AbstractImport getImport() {
return config;
}
public void setImportBean(AbstractImport newImportBean) {
setImportBean(newImportBean, true);
}
public void setImportBean(AbstractImport newImportBean, boolean update) {
config = newImportBean;
if (update) {
if (m_bindingContext != null) {
m_bindingContext.dispose();
m_bindingContext = null;
}
if (config != null) {
m_bindingContext = initDataBindings();
}
}
}
}