diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/criterion/CriterionAdminController_V2.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/criterion/CriterionAdminController_V2.java index 4742709e7..ad213e6c5 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/criterion/CriterionAdminController_V2.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/criterion/CriterionAdminController_V2.java @@ -91,9 +91,9 @@ public class CriterionAdminController_V2 extends GenericForwardComposer { public void goToCreateForm() { try{ + criterionsModel_V2.prepareForCreate(); setupCriterionTreeController(createComponent); onlyOneVisible.showOnly(createComponent); - criterionsModel_V2.prepareForCreate(); setResourceComboboxValue((Combobox) createComponent.getFellowIfAny("resourceCombobox")); Util.reloadBindings(createComponent); }catch(Exception e){ @@ -105,9 +105,9 @@ public class CriterionAdminController_V2 extends GenericForwardComposer { public void goToEditForm(CriterionType criterionType) { try{ + criterionsModel_V2.prepareForEdit(criterionType); setupCriterionTreeController(editComponent); onlyOneVisible.showOnly(editComponent); - criterionsModel_V2.prepareForEdit(criterionType); setResourceComboboxValue((Combobox) editComponent.getFellowIfAny("resourceCombobox")); Util.reloadBindings(editComponent); }catch(Exception e){ @@ -333,6 +333,8 @@ public class CriterionAdminController_V2 extends GenericForwardComposer { private void setupCriterionTreeController(Component comp)throws Exception { editionTree = new CriterionTreeController(criterionsModel_V2); + editionTree.setCriterionCodeEditionDisabled( + ((CriterionType)criterionsModel_V2.getCriterionType()).getGenerateCode()); editionTree.doAfterCompose(comp.getFellow( "criterionsTree")); } @@ -345,6 +347,10 @@ public class CriterionAdminController_V2 extends GenericForwardComposer { ((CriterionType)criterionsModel_V2.getCriterionType()).setCodeAutogenerated(); Util.reloadBindings(createComponent); } + editionTree.regenerateCodeForUnsavedCriteria(); } + //disable code field in criterion tree controller + editionTree.setCriterionCodeEditionDisabled(ce.isChecked()); + editionTree.reloadTree(); } } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/criterion/CriterionTreeController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/criterion/CriterionTreeController.java index 55dee42dc..8e98cf1f2 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/criterion/CriterionTreeController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/criterion/CriterionTreeController.java @@ -66,6 +66,8 @@ public class CriterionTreeController extends GenericForwardComposer { private Textbox criterionName; + private boolean codeEditionDisabled; + public CriterionTreeitemRenderer getRenderer() { return renderer; } @@ -179,6 +181,7 @@ public class CriterionTreeController extends GenericForwardComposer { Treecell cellForCode = new Treecell(); cellForCode.setStyle("center"); Textbox codeLabel = new Textbox(); + codeLabel.setDisabled(codeEditionDisabled); cellForCode.appendChild(Util.bind(codeLabel, new Util.Getter() { @@ -378,6 +381,14 @@ public class CriterionTreeController extends GenericForwardComposer { reloadTree(); } + public void setCriterionCodeEditionDisabled(boolean disabled) { + codeEditionDisabled = disabled; + } + + public void regenerateCodeForUnsavedCriteria() { + getModel().regenerateCodeForUnsavedCriteria(); + } + public void reloadTree(){ Util.reloadBindings(tree); } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/criterion/CriterionTreeModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/criterion/CriterionTreeModel.java index c674eb2ac..f4cd16814 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/criterion/CriterionTreeModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/criterion/CriterionTreeModel.java @@ -428,4 +428,17 @@ public class CriterionTreeModel implements ICriterionTreeModel{ } return false; } + + public void regenerateCodeForUnsavedCriteria() { + regenerateCodeForUnsavedCriteria(criterionRootDTO.getChildren()); + } + + private void regenerateCodeForUnsavedCriteria(List criterionDTOs){ + for(CriterionDTO criterionDTO : criterionDTOs){ + if(criterionDTO.getCriterion().isNewObject()) { + criterionDTO.getCriterion().setCodeAutogenerated(); + } + regenerateCodeForUnsavedCriteria(criterionDTO.getChildren()); + } + } } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/criterion/ICriterionTreeModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/criterion/ICriterionTreeModel.java index 8a550dbf3..946a4a4c6 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/criterion/ICriterionTreeModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/criterion/ICriterionTreeModel.java @@ -68,4 +68,6 @@ public interface ICriterionTreeModel { void indent(CriterionDTO nodeToIndent); void unindent(CriterionDTO nodeToIndent); + + void regenerateCodeForUnsavedCriteria(); }