]>
git.argeo.org Git - lgpl/argeo-commons.git/blob - eclipse/org.argeo.cms.swt/src/org/argeo/cms/swt/widgets/SwtHierarchicalPart.java
07c9bac2e1cb3266028a90cbe139008c591d42b4
1 package org
.argeo
.cms
.swt
.widgets
;
5 import org
.argeo
.api
.cms
.ux
.CmsIcon
;
6 import org
.argeo
.cms
.swt
.CmsSwtUtils
;
7 import org
.argeo
.cms
.ux
.widgets
.HierarchicalPart
;
8 import org
.eclipse
.swt
.SWT
;
9 import org
.eclipse
.swt
.widgets
.Composite
;
10 import org
.eclipse
.swt
.widgets
.Tree
;
11 import org
.eclipse
.swt
.widgets
.TreeItem
;
13 /** {@link HierarchicalPart} implementation based on a {@link Tree}. */
14 public class SwtHierarchicalPart
<T
> extends AbstractSwtPart
<T
, T
> {
15 private static final long serialVersionUID
= -6247710601465713047L;
17 private final Tree tree
;
19 private HierarchicalPart
<T
> hierarchicalPart
;
21 public SwtHierarchicalPart(Composite parent
, int style
, HierarchicalPart
<T
> hierarchicalPart
) {
22 super(parent
, style
, hierarchicalPart
);
23 tree
= new Tree(this, SWT
.BORDER
);
24 tree
.setLayoutData(CmsSwtUtils
.fillAll());
25 this.hierarchicalPart
= hierarchicalPart
;
27 tree
.addSelectionListener(selectionListener
);
31 public void refresh() {
33 // tree.clearAll(true);
35 for (TreeItem rootItem
: tree
.getItems()) {
39 List
<T
> rootItems
= hierarchicalPart
.getChildren(hierarchicalPart
.getInput());
40 for (T child
: rootItems
) {
41 TreeItem childItem
= addTreeItem(null, child
);
42 // List<T> grandChildren = hierarchicalPart.getChildren(child);
43 // for (T grandChild : grandChildren) {
44 // addTreeItem(childItem, grandChild);
47 // tree.addListener(SWT.SetData, event -> {
48 // TreeItem item = (TreeItem) event.item;
49 // TreeItem parentItem = item.getParentItem();
50 // if (parentItem == null) {
51 // refreshRootItem(item);
53 // refreshItem(parentItem, item);
56 // tree.setItemCount(getRootItemCount());
58 tree
.addListener(SWT
.Expand
, event
-> {
59 final TreeItem root
= (TreeItem
) event
.item
;
60 TreeItem
[] items
= root
.getItems();
61 for (TreeItem item
: items
) {
62 if (item
.getData() != null) {
63 // List<T> grandChildren = hierarchicalPart.getChildren((T) item.getData());
64 // for (T grandChild : grandChildren) {
65 // addTreeItem(item, grandChild);
72 List
<T
> children
= hierarchicalPart
.getChildren((T
) root
.getData());
73 for (T child
: children
) {
74 TreeItem childItem
= addTreeItem(root
, child
);
75 // List<T> grandChildren = hierarchicalPart.getChildren(child);
76 // for (T grandChild : grandChildren) {
77 // addTreeItem(childItem, grandChild);
82 CmsSwtUtils
.fill(tree
);
86 protected TreeItem
addTreeItem(TreeItem parent
, T data
) {
87 TreeItem item
= parent
== null ?
new TreeItem(tree
, SWT
.NONE
) : new TreeItem(parent
, SWT
.NONE
);
89 String txt
= hierarchicalPart
.getText(data
);
91 item
.setText(hierarchicalPart
.getText(data
));
92 CmsIcon icon
= hierarchicalPart
.getIcon(data
);
94 List
<T
> grandChildren
= hierarchicalPart
.getChildren(data
);
95 if (grandChildren
.size() != 0)
96 new TreeItem(item
, SWT
.NONE
);
99 // item.setImage(null);
102 protected Tree
getTree() {