button.setLayoutData("cell 1 1 1 1,grow");
button.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
int row = table.getTable().getSelectionIndex();
Definition definition = new Definition();
definition.name = "";
definition.expression = Expression.NIL;
transform.add(row, definition);
table.refresh();
table.setSelection(new StructuredSelection(definition));
}
});
button = new Button(this, SWT.CENTER);
button.setText("Up");
button.setLayoutData("cell 1 2 1 1,grow");
button.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
int row = table.getTable().getSelectionIndex();
if (row == 0 || row == -1) {
return;
}
row--;
Definition definition = selectedDefinition();
transform.remove(definition);
transform.add(row, definition);
table.refresh();
table.setSelection(new StructuredSelection(definition));
}
});
button = new Button(this, SWT.CENTER);
button.setText("Down");
button.setLayoutData("cell 1 3 1 1,grow");
button.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
int row = table.getTable().getSelectionIndex();
if (row == transform.size() - 1 || row == -1) {
return;
}
row++;
Definition definition = selectedDefinition();
transform.remove(definition);
transform.add(row, definition);
table.refresh();
table.setSelection(new StructuredSelection(definition));
}
});
button = new Button(this, SWT.CENTER);
button.setText("Remove");
button.setLayoutData("cell 1 5 1 1,grow");
button.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
int row = table.getTable().getSelectionIndex();
if (row == -1) {
return;
}
if (row > 0) {
row = row - 1;
}
Definition definition = selectedDefinition();
transform.remove(definition);
table.refresh();
if (row < transform.size()) {
table.getTable().setSelection(row);
} else {
table.getTable().deselectAll();
}
}
});
table = new TableViewer(this, SWT.SINGLE | SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
table.setContentProvider(ArrayContentProvider.getInstance());
table.getControl().setLayoutData(
"cell 0 1 1 5, grow, height 200:50%:70%,width 300:pref:100%");
TableViewerColumn column = new TableViewerColumn(table, SWT.NONE);
column.getColumn().setWidth(100);
column.getColumn().setMoveable(false);
column.getColumn().setResizable(true);
column.getColumn().setText("Attribute");
column.setLabelProvider(new ColumnLabelProvider() {
@Override
public String getText(Object element) {
Definition definition = (Definition) element;
return definition.name;
}
});
column = new TableViewerColumn(table, SWT.NONE);
column.getColumn().setWidth(60);
column.getColumn().setMoveable(false);
column.getColumn().setResizable(true);
column.getColumn().setText("Type");
column.getColumn().setAlignment(SWT.CENTER);
column.setLabelProvider(new ColumnLabelProvider() {
@Override
public String getText(Object element) {
Definition definition = (Definition) element;
return definition.binding == null ? NO_CONTENT : definition.binding.getSimpleName();
}
});
column = new TableViewerColumn(table, SWT.NONE);
column.getColumn().setWidth(140);
column.getColumn().setMoveable(false);
column.getColumn().setResizable(true);
column.getColumn().setText("Expression");
column.setLabelProvider(new ColumnLabelProvider() {
@Override
public String getText(Object element) {
Definition definition = (Definition) element;
return definition.expression == null ? NO_CONTENT : ECQL
.toCQL(definition.expression);
}
});
table.getTable().setHeaderVisible(true);
table.getTable().setLinesVisible(true);
table.addSelectionChangedListener(tableListener);
Transfer[] types = new Transfer[] { UDigByteAndLocalTransfer.getInstance() };
table.addDragSupport(DND.DROP_MOVE | DND.DROP_DEFAULT, types, new DragSourceAdapter() {
@Override
public void dragSetData(DragSourceEvent event) {
IStructuredSelection selection = (IStructuredSelection) table.getSelection();
if (UDigByteAndLocalTransfer.getInstance().isSupportedType(event.dataType)) {
event.data = selection.getFirstElement();
}
}
});
// drag drop order support
table.addDropSupport(DND.DROP_MOVE | DND.DROP_DEFAULT, types, new ViewerDropAdapter(table) {
@Override
public boolean validateDrop(Object target, int operation, TransferData transferType) {
if (target instanceof Definition) {
return true;
} else {
return false;
}
}
@Override
public boolean performDrop(Object data) {
if (data instanceof Definition) {
listen(false);
int index = transform.indexOf(getCurrentTarget());
// if (location == LOCATION_BEFORE)
// index--;
Definition definition = (Definition) data;
transform.remove(definition);
transform.add(index, definition);
table.refresh();
table.setSelection(new StructuredSelection(definition));