]> git.argeo.org Git - lgpl/argeo-commons.git/blob - SwtContentHierarchicalPart.java
230cca4c8985ee6f3240671fe3af3cafad003227
[lgpl/argeo-commons.git] / SwtContentHierarchicalPart.java
1 package org.argeo.cms.swt.acr;
2
3 import java.util.Iterator;
4
5 import org.argeo.api.acr.Content;
6 import org.argeo.cms.swt.widgets.SwtHierarchicalPart;
7 import org.eclipse.swt.widgets.Composite;
8 import org.eclipse.swt.widgets.TreeItem;
9
10 public class SwtContentHierarchicalPart extends SwtHierarchicalPart {
11
12 public SwtContentHierarchicalPart(Composite parent, int style) {
13 super(parent, style);
14 }
15
16 public Content getContent() {
17 return (Content) getInput();
18 }
19
20 @Override
21 protected void refreshRootItem(TreeItem item) {
22 refreshItem(null, item);
23 }
24
25 @Override
26 protected void refreshItem(TreeItem parentItem, TreeItem item) {
27 int index = getTree().indexOf(item);
28 Content parentContent = parentItem == null ? getContent() : (Content) parentItem.getData();
29 Content content = null;
30 int count = 0;
31 children: for (Content c : parentContent) {
32 if (count == index) {
33 content = c;
34 break children;
35 }
36 count++;
37 }
38 item.setData(content);
39 item.setText(content.getName().toString());
40 item.setItemCount(getChildrenCount(content));
41 }
42
43 @Override
44 protected int getRootItemCount() {
45 return getChildrenCount(getContent());
46 }
47
48 static int getChildrenCount(Content content) {
49 int count = 0;
50 for (Iterator<Content> it = content.iterator(); it.hasNext();it.next()) {
51 count++;
52 }
53 return count;
54 }
55 }