m.setCaption(f.getTitle());
final ListEnumeratedValueSelector<Object> v = new ListEnumeratedValueSelector<Object>();
m.add(new UniversalUIElement<ToolBar>(ToolBar.class, SWT.NONE) {
protected ToolBar createControl(Composite conComposite) {
ToolBarManager manager = new ToolBarManager();
manager.add(new Action("New value") {
{
setImageDescriptor(AbstractUIPlugin
.imageDescriptorFromPlugin(Activator.PLUGIN_ID,
"/icons/add_exc.gif"));
}
public void run() {
if (f instanceof CGAEField) {
CGAEField cgf = (CGAEField) f;
BaseDataFacade fac = new BaseDataFacade(
cgf.keyKind, facade.getProject(), facade
.isDebug());
fac.setNamespace(facade.getNamespace());
DataStoreTableUI dstui = new DataStoreTableUI();
dstui.setFacade(fac);
Entity ent = new Entity(cgf.keyKind, e.getKey());
Collection coll = ((Collection) ((HashMap) facade
.getChildren().get(cgf.getKeyKind())).get(e
.getKey()));
if (coll != null && coll.size() != 0) {
Entity old = (Entity) coll
.toArray(new Object[coll.size()])[coll
.size() - 1];
for (Iterator<String> it = old.getProperties()
.keySet().iterator(); it.hasNext();) {
ent.setProperty(it.next(), "");
}
}
ArrayList<Entity> select = new ArrayList();
select.add(ent);
fac.determineFields(select);
// v.addValue(ent);
dstui.open(ent, false, new IUpdateList() {
public void update(Entity e) {
v.addValue(e);
}
});// ((Collection)((HashMap)facade.getChildren().get(cgf.getKeyKind())).get(e.getKey()));
} else {
Object firstElement = null;
Binding bnd = new Binding(firstElement);
bnd.setName("Edit");
CompositeEditor m = new CompositeEditor(bnd);
m.setLayoutManager(new HorizontalLayouter());
TitledDialog dlg = new TitledDialog(m);
GAEField singleField = fm.getSingleField();
ApiProxy.setEnvironmentForCurrentThread(new FakeEnvironment(
e.getAppId()));
Entity c = new Entity("A");
if (fm instanceof CGAEField) {
c = new Entity(fm.getKeyKind(), e.getKey());
// Entity example =
} else {
c.setProperty(f.name, firstElement);
}
createBindings(c, m, bnd,
new Field[] { singleField }, facade);
int open = dlg.open();
if (open == Dialog.OK) {
Object value = bnd.getBinding(f.name)
.getValue();
if (value == null) {
value = new NullValue();
}
v.addValue(value);
}
bnd.dispose();
}
}
});
manager.add(new Action("Edit selected") {
{
setImageDescriptor(AbstractUIPlugin
.imageDescriptorFromPlugin(Activator.PLUGIN_ID,
"/icons/text_edit.gif"));
}
public void run() {
if (f instanceof CGAEField) {
CGAEField cgf = (CGAEField) f;
Object[] selected = v.getSelection().toArray();
if (selected.length == 1) {
BaseDataFacade fac = new BaseDataFacade(
cgf.keyKind, facade.getProject(),
facade.isDebug());
fac.setNamespace(facade.getNamespace());
DataStoreTableUI dstui = new DataStoreTableUI();
final Entity sel = (Entity) selected[0];
ArrayList<Entity> select = new ArrayList();
select.add(sel);
fac.determineFields(select);
dstui.setFacade(fac);
dstui.open(sel, false, new IUpdateList() {
public void update(Entity e) {
v.removeValue(sel);
v.addValue(e);
}
});
}
return;
} else {
Object firstElement = v.getSelection()
.getFirstElement();
Binding bnd = new Binding(firstElement);
bnd.setName("Edit");
CompositeEditor m = new CompositeEditor(bnd);
TitledDialog dlg = new TitledDialog(m);
GAEField singleField = fm.getSingleField();
ApiProxy.setEnvironmentForCurrentThread(new FakeEnvironment(
e.getAppId()));
Entity c = new Entity("A");
if (firstElement instanceof NullValue) {
c.setProperty(f.name, null);
} else {
c.setProperty(f.name, firstElement);
}
createBindings(c, m, bnd,
new Field[] { singleField }, facade);
int open = dlg.open();
if (open == Dialog.OK) {
v.removeValue(firstElement);
Object value = bnd.getBinding(f.name)
.getValue();
if (value == null) {
value = new NullValue();
}
v.addValue(value);
}
bnd.dispose();
}
}
});
manager.add(new Action("Delete selected") {
{
setImageDescriptor(AbstractUIPlugin
.imageDescriptorFromPlugin(Activator.PLUGIN_ID,
"/icons/delete.gif"));
}
@SuppressWarnings("unchecked")
public void run() {
final List selected = v.getSelection().toList();
if (f instanceof CGAEField) {
final CGAEField cgf = (CGAEField) f;
BaseDataFacade fac = new BaseDataFacade(
cgf.keyKind, facade.getProject(), facade
.isDebug());
fac.setNamespace(facade.getNamespace());
fac.delete(selected.toArray(new Entity[selected
.size()]), new OperationCallback() {
public void passed(Object object) {
Collection coll = (Collection) ((HashMap) facade
.getChildren()
.get(cgf.getKeyKind())).get(e
.getKey());
coll.removeAll(selected);
facade.updateChildren(e);
v.removeValues(selected);
}
public void failed(Exception exception) {
return;
}
});
// facade.updateChildren(e);
} else {
v.removeValues(selected);
}
}
});
return manager.createControl(conComposite);
}
});
v.setValueAsSelection(false);