]>
git.argeo.org Git - lgpl/argeo-commons.git/blob - swt/org.argeo.cms.swt/src/org/argeo/cms/swt/widgets/SwtTreeView.java
1 package org
.argeo
.cms
.swt
.widgets
;
5 import org
.argeo
.api
.cms
.ux
.CmsIcon
;
6 import org
.argeo
.cms
.swt
.CmsSwtTheme
;
7 import org
.argeo
.cms
.swt
.CmsSwtUtils
;
8 import org
.argeo
.cms
.ux
.widgets
.HierarchicalPart
;
9 import org
.eclipse
.swt
.SWT
;
10 import org
.eclipse
.swt
.graphics
.Image
;
11 import org
.eclipse
.swt
.widgets
.Composite
;
12 import org
.eclipse
.swt
.widgets
.Tree
;
13 import org
.eclipse
.swt
.widgets
.TreeItem
;
15 /** View of a {@link HierarchicalPart} based on a {@link Tree}. */
16 public class SwtTreeView
<T
> extends AbstractSwtView
<T
, T
> {
17 private static final long serialVersionUID
= -6247710601465713047L;
19 private final Tree tree
;
21 private HierarchicalPart
<T
> hierarchicalPart
;
22 private CmsSwtTheme theme
;
24 public SwtTreeView(Composite parent
, int style
, HierarchicalPart
<T
> hierarchicalPart
) {
25 super(parent
, style
, hierarchicalPart
);
26 theme
= CmsSwtUtils
.getCmsTheme(parent
);
28 tree
= new Tree(this, SWT
.BORDER
);
29 tree
.setLayoutData(CmsSwtUtils
.fillAll());
30 this.hierarchicalPart
= hierarchicalPart
;
32 tree
.addSelectionListener(selectionListener
);
35 @SuppressWarnings("unchecked")
37 public void refresh() {
39 for (TreeItem rootItem
: tree
.getItems()) {
43 List
<T
> rootItems
= hierarchicalPart
.getChildren(hierarchicalPart
.getInput());
44 for (T child
: rootItems
) {
45 addTreeItem(null, child
);
48 tree
.addListener(SWT
.Expand
, event
-> {
49 final TreeItem root
= (TreeItem
) event
.item
;
50 TreeItem
[] items
= root
.getItems();
51 for (TreeItem item
: items
) {
52 if (item
.getData() != null) {
58 List
<T
> children
= hierarchicalPart
.getChildren((T
) root
.getData());
59 for (T child
: children
) {
60 addTreeItem(root
, child
);
64 CmsSwtUtils
.fill(tree
);
68 protected TreeItem
addTreeItem(TreeItem parent
, T data
) {
69 TreeItem item
= parent
== null ?
new TreeItem(tree
, SWT
.NONE
) : new TreeItem(parent
, SWT
.NONE
);
71 String txt
= hierarchicalPart
.getText(data
);
73 item
.setText(hierarchicalPart
.getText(data
));
74 CmsIcon icon
= hierarchicalPart
.getIcon(data
);
76 Image image
= theme
.getSmallIcon(icon
);
80 List
<T
> grandChildren
= hierarchicalPart
.getChildren(data
);
81 if (grandChildren
.size() != 0)
82 new TreeItem(item
, SWT
.NONE
);
86 protected Tree
getTree() {