X-Git-Url: http://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=af8df82b0184f574e1f0a74dc81e88377020f65c;hp=457da70312233cb8039f74657d4df028f0906e81;hb=9df6aa1957222703ed0ce39a731b87a61c9699b9;hpb=d583547f3046d1e0d9a1dc689abe71dcd1decfb7 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 457da70..af8df82 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 @@ -5,6 +5,8 @@ import java.util.List; import javax.jcr.Item; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.argeo.cms.ui.forms.FormStyle; import org.argeo.cms.ui.util.CmsUiUtils; import org.argeo.cms.ui.viewers.EditablePart; @@ -30,6 +32,7 @@ import org.eclipse.swt.widgets.ToolItem; /** {@link EditablePart} for multiple terms. */ public class MultiTermsPart extends AbstractTermsPart { private static final long serialVersionUID = -4961135649177920808L; + private final static Log log = LogFactory.getLog(MultiTermsPart.class); public MultiTermsPart(Composite parent, int style, Item item, TermsManager termsManager, String typology) { super(parent, style, item, termsManager, typology); @@ -38,7 +41,10 @@ public class MultiTermsPart extends AbstractTermsPart { @Override protected Control createControl(Composite box, String style) { Composite placeholder = new Composite(box, SWT.NONE); - RowLayout rl = new RowLayout(SWT.HORIZONTAL | SWT.WRAP); + + boolean vertical = SWT.VERTICAL == (getStyle() & SWT.VERTICAL); + RowLayout rl = new RowLayout(vertical ? SWT.VERTICAL : SWT.HORIZONTAL); + rl.wrap = true; placeholder.setLayout(rl); List currentValue = getValue(); if (currentValue != null && !currentValue.isEmpty()) @@ -49,7 +55,8 @@ public class MultiTermsPart extends AbstractTermsPart { String display = getTermLabel(value); lbl.setText(display); CmsUiUtils.style(lbl, style == null ? FormStyle.propertyText.style() : style); - if (editable) + processTermListLabel(value, lbl); + if (isEditable()) lbl.addMouseListener((MouseDoubleClick) (e) -> { startEditing(); }); @@ -73,7 +80,7 @@ public class MultiTermsPart extends AbstractTermsPart { } } else {// empty - if (editable && !isEditing()) { + if (isEditable() && !isEditing()) { ToolBar toolBar = new ToolBar(placeholder, SWT.HORIZONTAL); ToolItem addItem = new ToolItem(toolBar, SWT.FLAT); styleAdd(addItem); @@ -174,8 +181,12 @@ public class MultiTermsPart extends AbstractTermsPart { List curr = Jcr.getMultiple(getNode(), property); List res = new ArrayList<>(); if (curr != null) - for (String str : curr) { + terms: for (String str : curr) { Term term = termsManager.getTerm(str); + if (term == null) { + log.warn("Ignoring term " + str + " for " + getNode() + ", as it was not found."); + continue terms; + } res.add(term); } return res;