package com.tibco.as.spacebar.ui.wizards.space.field;
import org.eclipse.jface.viewers.ColumnLabelProvider;
import org.eclipse.jface.window.Window;
import org.eclipse.jface.wizard.WizardDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import com.tibco.as.space.FieldDef.FieldType;
import com.tibco.as.spacebar.ui.model.Field;
import com.tibco.as.spacebar.ui.model.Fields;
import com.tibco.as.spacebar.ui.model.IElement;
import com.tibco.as.spacebar.ui.model.SpaceFields;
import com.tibco.as.spacebar.ui.wizards.space.ColumnConfig;
import com.tibco.as.spacebar.ui.wizards.space.ElementListEditor;
public class FieldListEditor extends ElementListEditor {
private static final String COLUMN_NAME = "Name";
private static final String COLUMN_TYPE = "Type";
private static final String COLUMN_NULLABLE = "Nullable";
private static final String COLUMN_ENCRYPTED = "Encrypted";
public FieldListEditor(Composite parent, int style, SpaceFields fields) {
super(parent, style, fields, new ColumnConfig(COLUMN_NAME, SWT.LEFT,
40, null, true, new ColumnLabelProvider() {
@Override
public String getText(Object element) {
return ((Field) element).getName();
}
}), new ColumnConfig(COLUMN_TYPE, SWT.LEFT, 20, null, true,
new ColumnLabelProvider() {
@Override
public String getText(Object element) {
FieldType type = ((Field) element).getType();
if (type == null) {
return null;
}
return type.name();
}
}), new ColumnConfig(COLUMN_NULLABLE, SWT.CENTER, 20, null,
true, new CheckBoxLabelProvider() {
protected boolean isChecked(Object element) {
return ((Field) element).isNullable();
}
}), new ColumnConfig(COLUMN_ENCRYPTED, SWT.CENTER, 20, null,
false, new CheckBoxLabelProvider() {
protected boolean isChecked(Object element) {
return ((Field) element).isEncrypted();
}
}));
}
@Override
protected IElement newElement(IElement parentElement) {
Field field = new Field();
field.setFields((Fields) parentElement);
field.setName("");
field.setType(FieldType.STRING);
field.setNullable(true);
return field;
}
@Override
protected boolean editElement(IElement original, IElement edited) {
EditFieldWizard wizard = new EditFieldWizard((Field) original,
(Field) edited);
return new WizardDialog(getShell(), wizard).open() == Window.OK;
}
}