package org.kie.eclipse.navigator.view.actions.dialogs;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import com.eclipsesource.json.JsonObject;
public class KieRequestDialogSelectionField extends KieRequestDialogField<Object> {
Combo combo = null;
Button[] buttons = null;
public KieRequestDialogSelectionField(Composite parent, String labelValue, String[] textValues, Object[] dataValues, int style, final JsonObject object, final String name) {
super(parent, object, name);
createLabel(parent, labelValue);
if (style==SWT.DROP_DOWN) {
combo = new Combo(parent, SWT.DROP_DOWN | SWT.READ_ONLY);
combo.setLayoutData(createControlGridData());
combo.setFont(parent.getFont());
for (int i=0; i<textValues.length; ++i) {
combo.add(textValues[i]);
combo.setData(Integer.toString(i), dataValues[i]);
}
combo.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
int i = combo.getSelectionIndex();
if (i>=0) {
updateObject(combo.getData(Integer.toString(i)));
}
}
});
combo.select(0);
}
else if (style==SWT.RADIO) {
Composite buttonComposite = new Composite(parent, SWT.NONE);
buttonComposite.setLayoutData(createControlGridData());
buttonComposite.setLayout(new FillLayout(SWT.VERTICAL));
buttons = new Button[textValues.length];
for (int i=0; i<textValues.length; ++i) {
Button b = new Button(buttonComposite, SWT.RADIO);
b.setText(textValues[i]);
b.setData(dataValues[i]);
b.setFont(parent.getFont());
b.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
Button b = (Button)e.getSource();
updateObject(b.getData());
}
});
buttons[i] = b;
}
buttons[0].setSelection(true);
}
}
public Control getControl() {
if (buttons!=null) {
for (Button b : buttons) {
if (b.getSelection())
return b;
}
return null;
}
return combo;
}
}