Follow my code, is side of editBox of a screen master detail. I want use a fragment for reuse it in other screens. As you can see I had to put the fragment inside 2 containers a form and a tabshet, otherwise fragment was not enabled and disabled correctly when entering edit mode.
<vbox id="editBox" height="100%" margin="false,false,false,true" align="TOP_LEFT" spacing="true">
<form id="form" dataContainer="prodottoDc">
<tabSheet id="tabSheet">
<tab id="">
<fragment id="prodottoFragment" screen="demo_ProdottoFragment"/>
</tab>
</tabSheet>
</form>
<hbox id="actionsPane" spacing="true" visible="false">
<button id="saveBtn" action="save"/>
<button id="cancelBtn" action="cancel"/>
<button id="configWizardBtn" invoke="onConfigWizardBtnClick" caption="Config Wizard"/>
</hbox>
</vbox>
Looking code of CUBA that is function that enable and disable controls:
protected void initEditComponents(boolean enabled) {
TabSheet tabSheet = getTabSheet();
if (tabSheet != null) {
ComponentsHelper.walkComponents(tabSheet, (component, name) -> {
if (component instanceof FieldGroup) {
((FieldGroup) component).setEditable(enabled);
} else if (component instanceof Table) {
((Table) component).getActions().forEach(action -> action.setEnabled(enabled));
} else if (!(component instanceof ComponentContainer)) {
component.setEnabled(enabled);
}
});
}
getForm().setEditable(enabled);
getActionsPane().setVisible(enabled);
getLookupBox().setEnabled(!enabled);
}
is possible include a getFragment function that iterate all childs components to enable and disable ?