Fix deletion of multiple terms.
authorMathieu Baudier <mbaudier@argeo.org>
Sat, 23 Jan 2021 07:59:04 +0000 (08:59 +0100)
committerMathieu Baudier <mbaudier@argeo.org>
Sat, 23 Jan 2021 07:59:04 +0000 (08:59 +0100)
org.argeo.entity.ui/src/org/argeo/entity/ui/forms/MultiTermsPart.java

index e26fabe98982e0d899e7189e7a070ad6da0157cd..1a12e90f2a5d458aaf6eb88ce5c65d603d417b96 100644 (file)
@@ -57,8 +57,10 @@ public class MultiTermsPart extends AbstractTermsPart {
                                        ToolItem deleteItem = new ToolItem(toolBar, SWT.FLAT);
                                        styleDelete(deleteItem);
                                        deleteItem.addSelectionListener((Selected) (e) -> {
+                                               // we retrieve them again here because they may have changed
+                                               List<String> curr = Jcr.getMultiple(getNode(), typology);
                                                List<String> newValue = new ArrayList<>();
-                                               for (String v : currentValue) {
+                                               for (String v : curr) {
                                                        if (!v.equals(value))
                                                                newValue.add(v);
                                                }
@@ -155,8 +157,9 @@ public class MultiTermsPart extends AbstractTermsPart {
                        if (isTermSelectable(term))
                                termL.addMouseListener((MouseDown) (e) -> {
                                        List<String> newValue = new ArrayList<>();
+                                       List<String> curr = Jcr.getMultiple(getNode(), typology);
                                        if (currentValue != null)
-                                               newValue.addAll(currentValue);
+                                               newValue.addAll(curr);
                                        newValue.add(term);
                                        Jcr.set(getNode(), typology, newValue);
                                        Jcr.save(getNode());