diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/materials/MaterialsController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/materials/MaterialsController.java index 110e68bb6..102b20388 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/materials/MaterialsController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/materials/MaterialsController.java @@ -202,7 +202,7 @@ public class MaterialsController extends private void removeMaterialCategory(MaterialCategory materialCategory) { materialsModel.confirmRemoveMaterialCategory(materialCategory); - Util.reloadBindings(categoriesTree); + reloadCategoriesTree(categoriesTree.getSelectedItem()); } public void addMaterialCategory() { @@ -220,7 +220,7 @@ public class MaterialsController extends try { materialsModel.addMaterialCategory(parent, category); txtCategory.setValue(""); - Util.reloadBindings(categoriesTree); + reloadCategoriesTree(treeitem); } catch (ValidationException e) { for (InvalidValue invalidValue : e.getInvalidValues()) { Object value = invalidValue.getBean(); @@ -278,7 +278,17 @@ public class MaterialsController extends final Treeitem treeitem = categoriesTree.getSelectedItem(); materialsModel.reloadMaterialCategories(); categoriesTree.setSelectedItem(treeitem); + reloadCategoriesTree(categoriesTree.getSelectedItem()); Util.reloadBindings(gridMaterials); + } + } + + private void reloadCategoriesTree(Treeitem treeitem) { + if (treeitem != null) { + final MaterialCategory materialCategory = (MaterialCategory) treeitem.getValue(); + Util.reloadBindings(categoriesTree); + locateAndSelectMaterialCategory(materialCategory); + } else { Util.reloadBindings(categoriesTree); } } @@ -321,24 +331,11 @@ public class MaterialsController extends return false; } - private void showConstraintErrorsFor(MaterialCategory materialCategory) { - if (locateAndSelectMaterialCategory(materialCategory)) { - - // Load materials for category - final List materials = getMaterials(materialCategory); - gridMaterials.setModel(new SimpleListModel(materials)); - gridMaterials.renderAll(); - - // Show errors - ConstraintChecker.isValid(gridMaterials); - } - } - private Treeitem findTreeItemByMaterialCategory(Component node, MaterialCategory materialCategory) { if (node instanceof Treeitem) { final Treeitem treeitem = (Treeitem) node; final MaterialCategory _materialCategory = (MaterialCategory) treeitem.getValue(); - if (_materialCategory.equals(materialCategory)) { + if (_materialCategory.getId().equals(materialCategory.getId())) { return treeitem; } } @@ -354,6 +351,19 @@ public class MaterialsController extends return null; } + private void showConstraintErrorsFor(MaterialCategory materialCategory) { + if (locateAndSelectMaterialCategory(materialCategory)) { + + // Load materials for category + final List materials = getMaterials(materialCategory); + gridMaterials.setModel(new SimpleListModel(materials)); + gridMaterials.renderAll(); + + // Show errors + ConstraintChecker.isValid(gridMaterials); + } + } + public void refreshMaterials() { final List materials = getMaterials(); gridMaterials.setModel(new SimpleListModel(materials));