Merge remote-tracking branch 'origin/master' into v2.x
[gpl/argeo-suite.git] / core / org.argeo.entity.ui / src / org / argeo / entity / ui / forms / MultiTermsPart.java
index 947fbf84fb7ea92ed9578b24e5b3cd28680cc53a..9c3618d8d262c981449480d82af77be14209513f 100644 (file)
@@ -5,6 +5,8 @@ import java.util.List;
 
 import javax.jcr.Item;
 
 
 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;
 import org.argeo.cms.ui.forms.FormStyle;
 import org.argeo.cms.ui.util.CmsUiUtils;
 import org.argeo.cms.ui.viewers.EditablePart;
@@ -18,7 +20,6 @@ import org.argeo.jcr.Jcr;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.FocusEvent;
 import org.eclipse.swt.events.FocusListener;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.FocusEvent;
 import org.eclipse.swt.events.FocusListener;
-import org.eclipse.swt.layout.FillLayout;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.layout.RowLayout;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.layout.RowLayout;
 import org.eclipse.swt.widgets.Composite;
@@ -31,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;
 /** {@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);
 
        public MultiTermsPart(Composite parent, int style, Item item, TermsManager termsManager, String typology) {
                super(parent, style, item, termsManager, typology);
@@ -39,7 +41,9 @@ public class MultiTermsPart extends AbstractTermsPart {
        @Override
        protected Control createControl(Composite box, String style) {
                Composite placeholder = new Composite(box, SWT.NONE);
        @Override
        protected Control createControl(Composite box, String style) {
                Composite placeholder = new Composite(box, SWT.NONE);
-               RowLayout rl = new RowLayout(SWT.HORIZONTAL);
+
+               boolean vertical = SWT.VERTICAL == (getStyle() & SWT.VERTICAL);
+               RowLayout rl = new RowLayout(vertical ? SWT.VERTICAL : SWT.HORIZONTAL);
                rl.wrap = true;
                placeholder.setLayout(rl);
                List<Term> currentValue = getValue();
                rl.wrap = true;
                placeholder.setLayout(rl);
                List<Term> currentValue = getValue();
@@ -176,8 +180,12 @@ public class MultiTermsPart extends AbstractTermsPart {
                List<String> curr = Jcr.getMultiple(getNode(), property);
                List<Term> res = new ArrayList<>();
                if (curr != null)
                List<String> curr = Jcr.getMultiple(getNode(), property);
                List<Term> res = new ArrayList<>();
                if (curr != null)
-                       for (String str : curr) {
+                       terms: for (String str : curr) {
                                Term term = termsManager.getTerm(str);
                                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;
                                res.add(term);
                        }
                return res;