package com.tibco.as.spacebar.ui.wizards.space.index;
import java.util.List;
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.IndexDef.IndexType;
import com.tibco.as.spacebar.ui.model.Field;
import com.tibco.as.spacebar.ui.model.IElement;
import com.tibco.as.spacebar.ui.model.Index;
import com.tibco.as.spacebar.ui.model.Indexes;
import com.tibco.as.spacebar.ui.wizards.space.ColumnConfig;
import com.tibco.as.spacebar.ui.wizards.space.ElementListEditor;
public class IndexListEditor extends ElementListEditor {
private static final String COLUMN_NAME = "Name";
private static final String COLUMN_TYPE = "Type";
private static final String COLUMN_FIELDS = "Fields";
public IndexListEditor(Composite parent, int style, Indexes indexes) {
super(parent, style, indexes, new ColumnConfig(COLUMN_NAME, SWT.LEFT,
40, 100, true, new ColumnLabelProvider() {
@Override
public String getText(Object element) {
return ((Index) element).getName();
}
}), new ColumnConfig(COLUMN_TYPE, SWT.LEFT, 20, 50, true,
new ColumnLabelProvider() {
@Override
public String getText(Object element) {
IndexType type = ((Index) element).getType();
if (type == null) {
return null;
}
return type.name();
}
}), new ColumnConfig(COLUMN_FIELDS, SWT.LEFT, 40, 150, true,
new ColumnLabelProvider() {
@Override
public String getText(Object element) {
String label = "";
List<Field> fields = ((Index) element).getFields();
for (int i = 0; i < fields.size(); i++) {
if (i > 0) {
label += ", ";
}
label += fields.get(i).getName();
}
return label;
}
}));
}
@Override
protected IElement newElement(IElement parentElement) {
Index index = new Index();
index.setIndexes((Indexes) parentElement);
index.setName("");
index.setType(IndexType.HASH);
return index;
}
@Override
protected boolean editElement(IElement original, IElement field) {
EditIndexWizard wizard = new EditIndexWizard((Index) original,
(Index) field);
WizardDialog dialog = new WizardDialog(getShell(), wizard);
dialog.setMinimumPageSize(300, 400);
return dialog.open() == Window.OK;
}
}