1 package org
.argeo
.osgi
.ui
.explorer
.views
;
3 import java
.util
.Comparator
;
5 import org
.argeo
.eclipse
.ui
.ColumnViewerComparator
;
6 import org
.argeo
.eclipse
.ui
.specific
.EclipseUiSpecificUtils
;
7 import org
.argeo
.osgi
.ui
.explorer
.OsgiExplorerImages
;
8 import org
.argeo
.osgi
.ui
.explorer
.OsgiExplorerPlugin
;
9 import org
.eclipse
.jface
.viewers
.ColumnLabelProvider
;
10 import org
.eclipse
.jface
.viewers
.IStructuredContentProvider
;
11 import org
.eclipse
.jface
.viewers
.TableViewer
;
12 import org
.eclipse
.jface
.viewers
.TableViewerColumn
;
13 import org
.eclipse
.jface
.viewers
.Viewer
;
14 import org
.eclipse
.swt
.SWT
;
15 import org
.eclipse
.swt
.graphics
.Image
;
16 import org
.eclipse
.swt
.widgets
.Composite
;
17 import org
.eclipse
.ui
.part
.ViewPart
;
18 import org
.osgi
.framework
.Bundle
;
19 import org
.osgi
.framework
.BundleContext
;
20 import org
.osgi
.framework
.Constants
;
23 * Overview of the bundles as a table. Equivalent to Equinox 'ss' console
26 public class BundlesView
extends ViewPart
{
27 private TableViewer viewer
;
30 public void createPartControl(Composite parent
) {
31 viewer
= new TableViewer(parent
);
32 viewer
.setContentProvider(new BundleContentProvider());
33 viewer
.getTable().setHeaderVisible(true);
35 EclipseUiSpecificUtils
.enableToolTipSupport(viewer
);
38 TableViewerColumn column
= new TableViewerColumn(viewer
, SWT
.NONE
);
39 column
.getColumn().setWidth(30);
40 column
.getColumn().setText("ID");
41 column
.getColumn().setAlignment(SWT
.RIGHT
);
42 column
.setLabelProvider(new ColumnLabelProvider() {
43 public String
getText(Object element
) {
44 return Long
.toString(((Bundle
) element
).getBundleId());
47 new ColumnViewerComparator
<Bundle
>(column
, new Comparator
<Bundle
>() {
48 public int compare(Bundle o1
, Bundle o2
) {
49 return (int) (o1
.getBundleId() - o2
.getBundleId());
54 column
= new TableViewerColumn(viewer
, SWT
.NONE
);
55 column
.getColumn().setWidth(18);
56 column
.getColumn().setText("State");
57 column
.setLabelProvider(new StateLabelProvider());
58 new ColumnViewerComparator
<Bundle
>(column
, new Comparator
<Bundle
>() {
59 public int compare(Bundle o1
, Bundle o2
) {
60 return o1
.getState() - o2
.getState();
65 column
= new TableViewerColumn(viewer
, SWT
.NONE
);
66 column
.getColumn().setWidth(300);
67 column
.getColumn().setText("Symbolic Name");
68 column
.setLabelProvider(new ColumnLabelProvider() {
69 public String
getText(Object element
) {
70 return ((Bundle
) element
).getSymbolicName();
73 new ColumnViewerComparator
<Bundle
>(column
, new Comparator
<Bundle
>() {
74 public int compare(Bundle o1
, Bundle o2
) {
75 return o1
.getSymbolicName().compareTo(o2
.getSymbolicName());
80 column
= new TableViewerColumn(viewer
, SWT
.NONE
);
81 column
.getColumn().setWidth(150);
82 column
.getColumn().setText("Version");
83 column
.setLabelProvider(new ColumnLabelProvider() {
84 public String
getText(Object element
) {
85 return ((Bundle
) element
).getVersion().toString();
88 new ColumnViewerComparator
<Bundle
>(column
, new Comparator
<Bundle
>() {
89 public int compare(Bundle o1
, Bundle o2
) {
90 return o1
.getVersion().compareTo(o2
.getVersion());
94 viewer
.setInput(OsgiExplorerPlugin
.getDefault().getBundle()
100 public void setFocus() {
102 viewer
.getControl().setFocus();
105 /** Content provider managing the array of bundles */
106 private static class BundleContentProvider
implements
107 IStructuredContentProvider
{
108 public Object
[] getElements(Object inputElement
) {
109 if (inputElement
instanceof BundleContext
) {
110 BundleContext bc
= (BundleContext
) inputElement
;
111 return bc
.getBundles();
116 public void dispose() {
119 public void inputChanged(Viewer viewer
, Object oldInput
, Object newInput
) {
124 /** Label provider for the state column */
125 private static class StateLabelProvider
extends ColumnLabelProvider
{
127 public Image
getImage(Object element
) {
128 Integer state
= ((Bundle
) element
).getState();
130 case Bundle
.UNINSTALLED
:
131 return OsgiExplorerImages
.INSTALLED
;
132 case Bundle
.INSTALLED
:
133 return OsgiExplorerImages
.INSTALLED
;
134 case Bundle
.RESOLVED
:
135 return OsgiExplorerImages
.RESOLVED
;
136 case Bundle
.STARTING
:
137 return OsgiExplorerImages
.STARTING
;
138 case Bundle
.STOPPING
:
139 return OsgiExplorerImages
.STARTING
;
141 return OsgiExplorerImages
.ACTIVE
;
148 public String
getText(Object element
) {
153 public String
getToolTipText(Object element
) {
154 Bundle bundle
= (Bundle
) element
;
155 Integer state
= bundle
.getState();
157 case Bundle
.UNINSTALLED
:
158 return "UNINSTALLED";
159 case Bundle
.INSTALLED
:
161 case Bundle
.RESOLVED
:
163 case Bundle
.STARTING
:
164 String activationPolicy
= bundle
.getHeaders()
165 .get(Constants
.BUNDLE_ACTIVATIONPOLICY
).toString();
166 if (activationPolicy
!= null
167 && activationPolicy
.equals(Constants
.ACTIVATION_LAZY
))
170 case Bundle
.STOPPING
: