1 package org
.argeo
.cms
.ui
.workbench
.osgi
;
3 import java
.util
.ArrayList
;
6 import org
.argeo
.cms
.ui
.workbench
.WorkbenchUiPlugin
;
7 import org
.argeo
.eclipse
.ui
.TreeParent
;
8 import org
.eclipse
.jface
.viewers
.ITreeContentProvider
;
9 import org
.eclipse
.jface
.viewers
.TreeViewer
;
10 import org
.eclipse
.jface
.viewers
.Viewer
;
11 import org
.eclipse
.swt
.SWT
;
12 import org
.eclipse
.swt
.widgets
.Composite
;
13 import org
.eclipse
.ui
.part
.ViewPart
;
14 import org
.osgi
.framework
.Bundle
;
15 import org
.osgi
.framework
.BundleContext
;
17 /** The OSGi runtime from a module perspective. */
18 public class ModulesView
extends ViewPart
{
19 private TreeViewer viewer
;
22 public void createPartControl(Composite parent
) {
23 viewer
= new TreeViewer(parent
, SWT
.MULTI
| SWT
.H_SCROLL
| SWT
.V_SCROLL
);
24 viewer
.setContentProvider(new ModulesContentProvider());
25 viewer
.setLabelProvider(new ModulesLabelProvider());
26 viewer
.setInput(WorkbenchUiPlugin
.getDefault().getBundle()
31 public void setFocus() {
32 viewer
.getTree().setFocus();
35 private class ModulesContentProvider
implements ITreeContentProvider
{
36 private static final long serialVersionUID
= 3819934804640641721L;
38 public Object
[] getElements(Object inputElement
) {
39 return getChildren(inputElement
);
42 public Object
[] getChildren(Object parentElement
) {
43 if (parentElement
instanceof BundleContext
) {
44 BundleContext bundleContext
= (BundleContext
) parentElement
;
45 Bundle
[] bundles
= bundleContext
.getBundles();
47 List
<BundleNode
> modules
= new ArrayList
<BundleNode
>();
48 for (Bundle bundle
: bundles
) {
49 if (bundle
.getState() == Bundle
.ACTIVE
)
50 modules
.add(new BundleNode(bundle
, true));
52 return modules
.toArray();
53 } else if (parentElement
instanceof TreeParent
) {
54 return ((TreeParent
) parentElement
).getChildren();
60 public Object
getParent(Object element
) {
61 // TODO Auto-generated method stub
65 public boolean hasChildren(Object element
) {
66 if (element
instanceof TreeParent
) {
67 return ((TreeParent
) element
).hasChildren();
72 public void dispose() {
75 public void inputChanged(Viewer viewer
, Object oldInput
, Object newInput
) {
79 private class ModulesLabelProvider
extends StateLabelProvider
{
80 private static final long serialVersionUID
= 5290046145534824722L;
83 public String
getText(Object element
) {
84 if (element
instanceof BundleNode
)
85 return element
.toString() + " ["
86 + ((BundleNode
) element
).getBundle().getBundleId()
88 return element
.toString();