final Binding multi = tmpBinding.getBinding("multi");
multi.setReadOnly(false);
multi.setName("Multivalue");
multi.setValue(false, null);
ButtonSelector multiB = new ButtonSelector(multi,
SWT.CHECK);
c1.add(multiB);
final Binding kk = tmpBinding.getBinding("KeyKind");
kk.setName("Kind");
kk.setValue(e.getKind(), null);
kk.setReadOnly(false);
kk.setRequired(false);
final OneLineTextElement<String> keyKind = new OneLineTextElement<String>(
kk);
type.addValueListener(new IValueListener<Class<?>>() {
public void valueChanged(Class<?> oldValue,
Class<?> newValue) {
if (newValue == Key.class) {
c1.add(1, keyKind);
c1.getControl().getShell().pack(true);
} else if (oldValue == Key.class) {
c1.remove(keyKind);
c1.getControl().getShell().pack(true);
}
}
});
CompositeEditor c2 = new CompositeEditor();
c2.setLayoutManager(new HorizontalLayouter());
ButtonSelector ok = new ButtonSelector();
ok.setText("submit");
ButtonSelector canc = new ButtonSelector();
canc.setText("cancel");
c2.add(ok);
c2.add(canc);
CompositeEditor finall = new CompositeEditor(tmpBinding);
finall.setLayoutManager(new OneElementOnLineLayouter());
finall.add(c1);
finall.add(c2);
final InputElementDialog ied = new InputElementDialog(
finall);
ok.setValue(new Runnable() {
public void run() {
IStructuredSelection iss = ce.getSelection();
if (!iss.isEmpty()) {
Object fe = iss.getFirstElement();
Class choosen = (Class) fe;
ied.close();
ed.getParent().remove(ed);// remove(bs);
// ed.setLayoutManager(new
// HorizontalLayouter());
// ed.setBordered(true);
f.setType(choosen);
Object val = multi.getValue();
Object kind = kk.getValue();
if (val != null && f instanceof GAEField) {
((GAEField) f).multiplicity = (Boolean) val;
}
if (kind != null) {
((GAEField) f)
.setKeyKind((String) kind);
}
createAppropriateControl(e, editor,
binding, facade, txt, f,
needIndexable);
// ed.recreate();
editor.getControl().getShell()
.layout(true, true);
editor.getControl().getShell().pack(true);
// tmpBinding.dispose();
return;
}
}
});
canc.setValue(new Runnable() {
public void run() {
tmpBinding.dispose();
ied.close();
}