Introduce directory content provider
[lgpl/argeo-commons.git] / eclipse / org.argeo.cms.swt / src / org / argeo / cms / swt / acr / AcrContentTreeView.java
index 4deef49c1bd0e813651bc91def456d6248d93a25..98fabf0600089ee8d369f3e90e71156b4f8e2540 100644 (file)
@@ -1,28 +1,21 @@
 package org.argeo.cms.swt.acr;
 
-import java.nio.file.Path;
-import java.nio.file.Paths;
-
 import javax.xml.namespace.QName;
 
 import org.argeo.api.acr.Content;
-import org.argeo.cms.acr.fs.FsContentProvider;
 import org.argeo.cms.swt.CmsSwtUtils;
 import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.FillLayout;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
 import org.eclipse.swt.widgets.Table;
 import org.eclipse.swt.widgets.TableColumn;
 import org.eclipse.swt.widgets.TableItem;
-import org.eclipse.swt.widgets.Tree;
-import org.eclipse.swt.widgets.TreeItem;
 
 public class AcrContentTreeView extends Composite {
-       private Tree tree;
+       private static final long serialVersionUID = -3707881216246077323L;
+       private SwtContentHierarchicalPart hPart;
+//     private Tree tree;
        private Table table;
        private Content rootContent;
 
@@ -36,44 +29,52 @@ public class AcrContentTreeView extends Composite {
                initTree();
                GridData treeGd = CmsSwtUtils.fillHeight();
                treeGd.widthHint = 300;
-               tree.setLayoutData(treeGd);
+               hPart.getArea().setLayoutData(treeGd);
                initTable();
 
                table.setLayoutData(CmsSwtUtils.fillAll());
        }
 
        protected void initTree() {
-               tree = new Tree(this, 0);
-               for (Content c : rootContent) {
-                       TreeItem root = new TreeItem(tree, 0);
-                       root.setText(c.getName().toString());
-                       root.setData(c);
-                       new TreeItem(root, 0);
-               }
-               tree.addListener(SWT.Expand, event -> {
-                       final TreeItem root = (TreeItem) event.item;
-                       TreeItem[] items = root.getItems();
-                       for (TreeItem item : items) {
-                               if (item.getData() != null)
-                                       return;
-                               item.dispose();
-                       }
-                       Content content = (Content) root.getData();
-                       for (Content c : content) {
-                               TreeItem item = new TreeItem(root, 0);
-                               item.setText(c.getName().toString());
-                               item.setData(c);
-                               boolean hasChildren = true;
-                               if (hasChildren) {
-                                       new TreeItem(item, 0);
-                               }
-                       }
-               });
-               tree.addListener(SWT.Selection, event -> {
-                       TreeItem item = (TreeItem) event.item;
-                       selected = (Content) item.getData();
+               hPart = new SwtContentHierarchicalPart(this, getStyle());
+               hPart.setInput(rootContent);
+               hPart.onSelected((o) -> {
+                       Content content = (Content) o;
+                       selected = content;
                        refreshTable();
+
                });
+//             tree = new Tree(this, 0);
+//             for (Content c : rootContent) {
+//                     TreeItem root = new TreeItem(tree, 0);
+//                     root.setText(c.getName().toString());
+//                     root.setData(c);
+//                     new TreeItem(root, 0);
+//             }
+//             tree.addListener(SWT.Expand, event -> {
+//                     final TreeItem root = (TreeItem) event.item;
+//                     TreeItem[] items = root.getItems();
+//                     for (TreeItem item : items) {
+//                             if (item.getData() != null)
+//                                     return;
+//                             item.dispose();
+//                     }
+//                     Content content = (Content) root.getData();
+//                     for (Content c : content) {
+//                             TreeItem item = new TreeItem(root, 0);
+//                             item.setText(c.getName().toString());
+//                             item.setData(c);
+//                             boolean hasChildren = true;
+//                             if (hasChildren) {
+//                                     new TreeItem(item, 0);
+//                             }
+//                     }
+//             });
+//             tree.addListener(SWT.Selection, event -> {
+//                     TreeItem item = (TreeItem) event.item;
+//                     selected = (Content) item.getData();
+//                     refreshTable();
+//             });
        }
 
        protected void initTable() {
@@ -103,28 +104,28 @@ public class AcrContentTreeView extends Composite {
                table.getColumn(1).pack();
        }
 
-       public static void main(String[] args) {
-               Path basePath;
-               if (args.length > 0) {
-                       basePath = Paths.get(args[0]);
-               } else {
-                       basePath = Paths.get(System.getProperty("user.home"));
-               }
-
-               final Display display = new Display();
-               final Shell shell = new Shell(display);
-               shell.setText(basePath.toString());
-               shell.setLayout(new FillLayout());
-
-               FsContentProvider contentSession = new FsContentProvider("/", basePath);
-//             GcrContentTreeView treeView = new GcrContentTreeView(shell, 0, contentSession.get("/"));
-
-               shell.setSize(shell.computeSize(800, 600));
-               shell.open();
-               while (!shell.isDisposed()) {
-                       if (!display.readAndDispatch())
-                               display.sleep();
-               }
-               display.dispose();
-       }
+//     public static void main(String[] args) {
+//             Path basePath;
+//             if (args.length > 0) {
+//                     basePath = Paths.get(args[0]);
+//             } else {
+//                     basePath = Paths.get(System.getProperty("user.home"));
+//             }
+//
+//             final Display display = new Display();
+//             final Shell shell = new Shell(display);
+//             shell.setText(basePath.toString());
+//             shell.setLayout(new FillLayout());
+//
+//             FsContentProvider contentSession = new FsContentProvider("/", basePath);
+////           GcrContentTreeView treeView = new GcrContentTreeView(shell, 0, contentSession.get("/"));
+//
+//             shell.setSize(shell.computeSize(800, 600));
+//             shell.open();
+//             while (!shell.isDisposed()) {
+//                     if (!display.readAndDispatch())
+//                             display.sleep();
+//             }
+//             display.dispose();
+//     }
 }