* @param reference the reference view
* @param attributeChoice the attribute choice
*/
private void addChoiceOption(AttributeValueView reference, String attributeChoice) {
I_Type optionType = getAttributeType().getAttributeType(attributeChoice);
I_Entity choiceEntity = m_vie.createEntity(null, getAttributeType().getId());
AttributeValueView valueWidget = reference;
if (reference.hasValue()) {
valueWidget = new AttributeValueView(
this,
m_widgetService.getAttributeLabel(attributeChoice),
m_widgetService.getAttributeHelp(attributeChoice));
}
for (String choiceName : getAttributeType().getAttributeNames()) {
valueWidget.addChoice(
m_widgetService.getAttributeLabel(choiceName),
m_widgetService.getAttributeHelp(choiceName),
choiceName);
}
int valueIndex = reference.getValueIndex() + 1;
if (valueIndex < m_entity.getAttribute(m_attributeName).getValueCount()) {
m_entity.insertAttributeValue(m_attributeName, choiceEntity, valueIndex);
((FlowPanel)reference.getParent()).insert(valueWidget, valueIndex);
} else {
m_entity.addAttributeValue(m_attributeName, choiceEntity);
((FlowPanel)reference.getParent()).add(valueWidget);
}
if (optionType.isSimpleType()) {
String value = m_widgetService.getDefaultAttributeValue(attributeChoice);
I_FormEditWidget widget = m_widgetService.getAttributeFormWidget(attributeChoice);
choiceEntity.addAttributeValue(attributeChoice, value);
valueWidget.setValueWidget(widget, value, true);
} else {
I_Entity value = m_vie.createEntity(null, optionType.getId());
choiceEntity.addAttributeValue(attributeChoice, value);
I_EntityRenderer renderer = m_widgetService.getRendererForAttribute(attributeChoice, optionType);
valueWidget.setValueEntity(renderer, value);
}
}