Improve UX data parts
[lgpl/argeo-commons.git] / swt / org.argeo.cms.swt / src / org / argeo / cms / swt / widgets / SwtTreeView.java
index a0ac24836c4cb3aa393f11e1d868e91972501be3..778ed41387459453c5625eb899e27b5f7e80f9b6 100644 (file)
@@ -2,9 +2,11 @@ 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;
+import org.argeo.cms.ux.widgets.Column;
 import org.argeo.cms.ux.widgets.HierarchicalPart;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.graphics.Image;
@@ -14,6 +16,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;
@@ -42,7 +46,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 -> {
@@ -68,27 +77,28 @@ public class SwtTreeView<T> extends AbstractSwtView<T, T> {
        protected TreeItem addTreeItem(TreeItem parent, T data) {
                TreeItem item = parent == null ? new TreeItem(tree, SWT.NONE) : new TreeItem(parent, SWT.NONE);
                item.setData(data);
-               String txt = hierarchicalPart.getText(data);
-               if (txt != null)
-                       item.setText(hierarchicalPart.getText(data));
-               CmsIcon icon = hierarchicalPart.getIcon(data);
-               if (icon != null) {
-                       Image image = theme.getSmallIcon(icon);
-                       item.setImage(image);
+               for (int i = 0; i < hierarchicalPart.getColumnCount(); i++) {
+                       Column<T> column = hierarchicalPart.getColumn(i);
+                       String txt = column.getText(data);
+                       if (txt != null)
+                               item.setText(txt);
+                       CmsIcon icon = column.getIcon(data);
+                       if (icon != null) {
+                               Image image = theme.getSmallIcon(icon);
+                               item.setImage(image);
+                       }
                }
-               // TODO optimize
+               // TODO optimise
                List<T> grandChildren = hierarchicalPart.getChildren(data);
                if (grandChildren.size() != 0)
                        new TreeItem(item, SWT.NONE);
                return item;
        }
-       
-       
 
        @Override
        public void notifyItemCountChange() {
                // TODO what to update ?
-               
+
        }
 
        protected Tree getTree() {