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;
/** {@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);
@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<Term> currentValue = getValue();
if (currentValue != null && !currentValue.isEmpty())
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);
+ if (term == null) {
+ log.warn("Ignoring term " + str + " for " + getNode() + ", as it was not found.");
+ continue terms;
+ }
res.add(term);
}
return res;