1 package org
.argeo
.cms
.swt
.acr
;
3 import java
.nio
.file
.Path
;
4 import java
.nio
.file
.Paths
;
6 import javax
.xml
.namespace
.QName
;
8 import org
.argeo
.api
.acr
.Content
;
9 import org
.argeo
.cms
.acr
.fs
.FsContentProvider
;
10 import org
.argeo
.cms
.swt
.CmsSwtUtils
;
11 import org
.eclipse
.swt
.SWT
;
12 import org
.eclipse
.swt
.layout
.FillLayout
;
13 import org
.eclipse
.swt
.layout
.GridData
;
14 import org
.eclipse
.swt
.layout
.GridLayout
;
15 import org
.eclipse
.swt
.widgets
.Composite
;
16 import org
.eclipse
.swt
.widgets
.Display
;
17 import org
.eclipse
.swt
.widgets
.Shell
;
18 import org
.eclipse
.swt
.widgets
.Table
;
19 import org
.eclipse
.swt
.widgets
.TableColumn
;
20 import org
.eclipse
.swt
.widgets
.TableItem
;
21 import org
.eclipse
.swt
.widgets
.Tree
;
22 import org
.eclipse
.swt
.widgets
.TreeItem
;
24 public class AcrContentTreeView
extends Composite
{
27 private Content rootContent
;
29 private Content selected
;
31 public AcrContentTreeView(Composite parent
, int style
, Content content
) {
33 this.rootContent
= content
;
34 this.selected
= rootContent
;
35 setLayout(new GridLayout(2, false));
37 GridData treeGd
= CmsSwtUtils
.fillHeight();
38 treeGd
.widthHint
= 300;
39 tree
.setLayoutData(treeGd
);
42 table
.setLayoutData(CmsSwtUtils
.fillAll());
45 protected void initTree() {
46 tree
= new Tree(this, 0);
47 for (Content c
: rootContent
) {
48 TreeItem root
= new TreeItem(tree
, 0);
49 root
.setText(c
.getName().toString());
51 new TreeItem(root
, 0);
53 tree
.addListener(SWT
.Expand
, event
-> {
54 final TreeItem root
= (TreeItem
) event
.item
;
55 TreeItem
[] items
= root
.getItems();
56 for (TreeItem item
: items
) {
57 if (item
.getData() != null)
61 Content content
= (Content
) root
.getData();
62 for (Content c
: content
) {
63 TreeItem item
= new TreeItem(root
, 0);
64 item
.setText(c
.getName().toString());
66 boolean hasChildren
= true;
68 new TreeItem(item
, 0);
72 tree
.addListener(SWT
.Selection
, event
-> {
73 TreeItem item
= (TreeItem
) event
.item
;
74 selected
= (Content
) item
.getData();
79 protected void initTable() {
80 table
= new Table(this, 0);
81 table
.setLinesVisible(true);
82 table
.setHeaderVisible(true);
83 TableColumn keyCol
= new TableColumn(table
, SWT
.NONE
);
84 keyCol
.setText("Attribute");
86 TableColumn valueCol
= new TableColumn(table
, SWT
.NONE
);
87 valueCol
.setText("Value");
92 protected void refreshTable() {
93 for (TableItem item
: table
.getItems()) {
96 for (QName key
: selected
.keySet()) {
97 TableItem item
= new TableItem(table
, 0);
98 item
.setText(0, key
.toString());
99 Object value
= selected
.get(key
);
100 item
.setText(1, value
.toString());
102 table
.getColumn(0).pack();
103 table
.getColumn(1).pack();
106 public static void main(String
[] args
) {
108 if (args
.length
> 0) {
109 basePath
= Paths
.get(args
[0]);
111 basePath
= Paths
.get(System
.getProperty("user.home"));
114 final Display display
= new Display();
115 final Shell shell
= new Shell(display
);
116 shell
.setText(basePath
.toString());
117 shell
.setLayout(new FillLayout());
119 FsContentProvider contentSession
= new FsContentProvider(basePath
, true);
120 // GcrContentTreeView treeView = new GcrContentTreeView(shell, 0, contentSession.get("/"));
122 shell
.setSize(shell
.computeSize(800, 600));
124 while (!shell
.isDisposed()) {
125 if (!display
.readAndDispatch())