Make tree view more robust
[lgpl/argeo-commons.git] / swt / org.argeo.cms.swt / src / org / argeo / cms / swt / widgets / SwtTreeView.java
index 79543e9f89d938f583a9c05d3c1a5aba4bfe5b37..8fd1368b0853150e874fa4e47813ce30837f4b63 100644 (file)
@@ -2,6 +2,7 @@ package org.argeo.cms.swt.widgets;
 
 import java.util.List;
 
+import org.argeo.api.cms.CmsLog;
 import org.argeo.api.cms.ux.CmsIcon;
 import org.argeo.cms.swt.CmsSwtTheme;
 import org.argeo.cms.swt.CmsSwtUtils;
@@ -14,6 +15,8 @@ import org.eclipse.swt.widgets.TreeItem;
 
 /** View of a {@link HierarchicalPart} based on a {@link Tree}. */
 public class SwtTreeView<T> extends AbstractSwtView<T, T> {
+       private final static CmsLog log = CmsLog.getLog(SwtTreeView.class);
+
        private static final long serialVersionUID = -6247710601465713047L;
 
        private final Tree tree;
@@ -22,10 +25,10 @@ public class SwtTreeView<T> extends AbstractSwtView<T, T> {
        private CmsSwtTheme theme;
 
        public SwtTreeView(Composite parent, int style, HierarchicalPart<T> hierarchicalPart) {
-               super(parent, style, hierarchicalPart);
+               super(parent, hierarchicalPart);
                theme = CmsSwtUtils.getCmsTheme(parent);
 
-               tree = new Tree(this, SWT.BORDER);
+               tree = new Tree(this, style);
                tree.setLayoutData(CmsSwtUtils.fillAll());
                this.hierarchicalPart = hierarchicalPart;
 
@@ -42,7 +45,12 @@ public class SwtTreeView<T> extends AbstractSwtView<T, T> {
 
                List<T> rootItems = hierarchicalPart.getChildren(hierarchicalPart.getInput());
                for (T child : rootItems) {
-                       addTreeItem(null, child);
+                       try {
+                               addTreeItem(null, child);
+                       } catch (Exception e) {
+                               if (log.isTraceEnabled())
+                                       log.error("Cannot retrieve child", e);
+                       }
                }
 
                tree.addListener(SWT.Expand, event -> {
@@ -83,6 +91,12 @@ public class SwtTreeView<T> extends AbstractSwtView<T, T> {
                return item;
        }
 
+       @Override
+       public void notifyItemCountChange() {
+               // TODO what to update ?
+
+       }
+
        protected Tree getTree() {
                return tree;
        }