X-Git-Url: https://git.argeo.org/?p=gpl%2Fargeo-suite.git;a=blobdiff_plain;f=core%2Forg.argeo.entity.ui%2Fsrc%2Forg%2Fargeo%2Fentity%2Fui%2Fforms%2FMultiTermsPart.java;h=457da70312233cb8039f74657d4df028f0906e81;hp=1a12e90f2a5d458aaf6eb88ce5c65d603d417b96;hb=d583547f3046d1e0d9a1dc689abe71dcd1decfb7;hpb=475324c72691c723253f2f0edd7a411a101c04ae diff --git a/core/org.argeo.entity.ui/src/org/argeo/entity/ui/forms/MultiTermsPart.java b/core/org.argeo.entity.ui/src/org/argeo/entity/ui/forms/MultiTermsPart.java index 1a12e90..457da70 100644 --- a/core/org.argeo.entity.ui/src/org/argeo/entity/ui/forms/MultiTermsPart.java +++ b/core/org.argeo.entity.ui/src/org/argeo/entity/ui/forms/MultiTermsPart.java @@ -12,6 +12,7 @@ import org.argeo.cms.ui.widgets.ContextOverlay; import org.argeo.eclipse.ui.MouseDoubleClick; import org.argeo.eclipse.ui.MouseDown; import org.argeo.eclipse.ui.Selected; +import org.argeo.entity.Term; import org.argeo.entity.TermsManager; import org.argeo.jcr.Jcr; import org.eclipse.swt.SWT; @@ -39,9 +40,9 @@ public class MultiTermsPart extends AbstractTermsPart { Composite placeholder = new Composite(box, SWT.NONE); RowLayout rl = new RowLayout(SWT.HORIZONTAL | SWT.WRAP); placeholder.setLayout(rl); - List currentValue = Jcr.getMultiple(getNode(), typology); + List currentValue = getValue(); if (currentValue != null && !currentValue.isEmpty()) - for (String value : currentValue) { + for (Term value : currentValue) { Composite block = new Composite(placeholder, SWT.NONE); block.setLayout(CmsUiUtils.noSpaceGridLayout(3)); Label lbl = new Label(block, SWT.SINGLE); @@ -58,14 +59,13 @@ public class MultiTermsPart extends AbstractTermsPart { styleDelete(deleteItem); deleteItem.addSelectionListener((Selected) (e) -> { // we retrieve them again here because they may have changed - List curr = Jcr.getMultiple(getNode(), typology); - List newValue = new ArrayList<>(); - for (String v : curr) { + List curr = getValue(); + List newValue = new ArrayList<>(); + for (Term v : curr) { if (!v.equals(value)) newValue.add(v); } - Jcr.set(getNode(), typology, newValue); - Jcr.save(getNode()); + setValue(newValue); block.dispose(); layout(true, true); }); @@ -143,9 +143,9 @@ public class MultiTermsPart extends AbstractTermsPart { @Override protected void refresh(ContextOverlay contextArea, String filter, Text txt) { CmsUiUtils.clear(contextArea); - List terms = termsManager.listAllTerms(typology); - List currentValue = Jcr.getMultiple(getNode(), typology); - terms: for (String term : terms) { + List terms = termsManager.listAllTerms(typology.getId()); + List currentValue = getValue(); + terms: for (Term term : terms) { if (currentValue != null && currentValue.contains(term)) continue terms; String display = getTermLabel(term); @@ -156,13 +156,12 @@ public class MultiTermsPart extends AbstractTermsPart { processTermListLabel(term, termL); if (isTermSelectable(term)) termL.addMouseListener((MouseDown) (e) -> { - List newValue = new ArrayList<>(); - List curr = Jcr.getMultiple(getNode(), typology); + List newValue = new ArrayList<>(); + List curr = getValue(); if (currentValue != null) newValue.addAll(curr); newValue.add(term); - Jcr.set(getNode(), typology, newValue); - Jcr.save(getNode()); + setValue(newValue); contextArea.hide(); stopEditing(); }); @@ -170,4 +169,26 @@ public class MultiTermsPart extends AbstractTermsPart { contextArea.show(); } + protected List getValue() { + String property = typology.getId(); + List curr = Jcr.getMultiple(getNode(), property); + List res = new ArrayList<>(); + if (curr != null) + for (String str : curr) { + Term term = termsManager.getTerm(str); + res.add(term); + } + return res; + } + + protected void setValue(List value) { + String property = typology.getId(); + List ids = new ArrayList<>(); + for (Term term : value) { + ids.add(term.getId()); + } + Jcr.set(getNode(), property, ids); + Jcr.save(getNode()); + } + }