]> git.argeo.org Git - lgpl/argeo-commons.git/blob - eclipse/org.argeo.cms.swt/src/org/argeo/cms/swt/acr/AcrContentTreeView.java
Introduce directory content provider
[lgpl/argeo-commons.git] / eclipse / org.argeo.cms.swt / src / org / argeo / cms / swt / acr / AcrContentTreeView.java
1 package org.argeo.cms.swt.acr;
2
3 import javax.xml.namespace.QName;
4
5 import org.argeo.api.acr.Content;
6 import org.argeo.cms.swt.CmsSwtUtils;
7 import org.eclipse.swt.SWT;
8 import org.eclipse.swt.layout.GridData;
9 import org.eclipse.swt.layout.GridLayout;
10 import org.eclipse.swt.widgets.Composite;
11 import org.eclipse.swt.widgets.Table;
12 import org.eclipse.swt.widgets.TableColumn;
13 import org.eclipse.swt.widgets.TableItem;
14
15 public class AcrContentTreeView extends Composite {
16 private static final long serialVersionUID = -3707881216246077323L;
17 private SwtContentHierarchicalPart hPart;
18 // private Tree tree;
19 private Table table;
20 private Content rootContent;
21
22 private Content selected;
23
24 public AcrContentTreeView(Composite parent, int style, Content content) {
25 super(parent, style);
26 this.rootContent = content;
27 this.selected = rootContent;
28 setLayout(new GridLayout(2, false));
29 initTree();
30 GridData treeGd = CmsSwtUtils.fillHeight();
31 treeGd.widthHint = 300;
32 hPart.getArea().setLayoutData(treeGd);
33 initTable();
34
35 table.setLayoutData(CmsSwtUtils.fillAll());
36 }
37
38 protected void initTree() {
39 hPart = new SwtContentHierarchicalPart(this, getStyle());
40 hPart.setInput(rootContent);
41 hPart.onSelected((o) -> {
42 Content content = (Content) o;
43 selected = content;
44 refreshTable();
45
46 });
47 // tree = new Tree(this, 0);
48 // for (Content c : rootContent) {
49 // TreeItem root = new TreeItem(tree, 0);
50 // root.setText(c.getName().toString());
51 // root.setData(c);
52 // new TreeItem(root, 0);
53 // }
54 // tree.addListener(SWT.Expand, event -> {
55 // final TreeItem root = (TreeItem) event.item;
56 // TreeItem[] items = root.getItems();
57 // for (TreeItem item : items) {
58 // if (item.getData() != null)
59 // return;
60 // item.dispose();
61 // }
62 // Content content = (Content) root.getData();
63 // for (Content c : content) {
64 // TreeItem item = new TreeItem(root, 0);
65 // item.setText(c.getName().toString());
66 // item.setData(c);
67 // boolean hasChildren = true;
68 // if (hasChildren) {
69 // new TreeItem(item, 0);
70 // }
71 // }
72 // });
73 // tree.addListener(SWT.Selection, event -> {
74 // TreeItem item = (TreeItem) event.item;
75 // selected = (Content) item.getData();
76 // refreshTable();
77 // });
78 }
79
80 protected void initTable() {
81 table = new Table(this, 0);
82 table.setLinesVisible(true);
83 table.setHeaderVisible(true);
84 TableColumn keyCol = new TableColumn(table, SWT.NONE);
85 keyCol.setText("Attribute");
86 keyCol.setWidth(200);
87 TableColumn valueCol = new TableColumn(table, SWT.NONE);
88 valueCol.setText("Value");
89 keyCol.setWidth(300);
90 refreshTable();
91 }
92
93 protected void refreshTable() {
94 for (TableItem item : table.getItems()) {
95 item.dispose();
96 }
97 for (QName key : selected.keySet()) {
98 TableItem item = new TableItem(table, 0);
99 item.setText(0, key.toString());
100 Object value = selected.get(key);
101 item.setText(1, value.toString());
102 }
103 table.getColumn(0).pack();
104 table.getColumn(1).pack();
105 }
106
107 // public static void main(String[] args) {
108 // Path basePath;
109 // if (args.length > 0) {
110 // basePath = Paths.get(args[0]);
111 // } else {
112 // basePath = Paths.get(System.getProperty("user.home"));
113 // }
114 //
115 // final Display display = new Display();
116 // final Shell shell = new Shell(display);
117 // shell.setText(basePath.toString());
118 // shell.setLayout(new FillLayout());
119 //
120 // FsContentProvider contentSession = new FsContentProvider("/", basePath);
121 //// GcrContentTreeView treeView = new GcrContentTreeView(shell, 0, contentSession.get("/"));
122 //
123 // shell.setSize(shell.computeSize(800, 600));
124 // shell.open();
125 // while (!shell.isDisposed()) {
126 // if (!display.readAndDispatch())
127 // display.sleep();
128 // }
129 // display.dispose();
130 // }
131 }