1 package org
.argeo
.osgi
.ui
.explorer
.views
;
3 import java
.util
.Comparator
;
5 import org
.argeo
.eclipse
.ui
.ColumnViewerComparator
;
6 import org
.argeo
.osgi
.ui
.explorer
.OsgiExplorerImages
;
7 import org
.argeo
.osgi
.ui
.explorer
.OsgiExplorerPlugin
;
8 import org
.eclipse
.jface
.viewers
.ColumnLabelProvider
;
9 import org
.eclipse
.jface
.viewers
.ColumnViewerToolTipSupport
;
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 // FIXME methodNotFound issue in RAP when built in Maven against RCP
37 ColumnViewerToolTipSupport
.enableFor(viewer
);
39 //String prop = Table.ENABLE_CELL_TOOLTIP;
40 String prop
= "org.eclipse.swt.widgets.Table#enableCellToolTip";
41 viewer
.getControl().setData(prop
, Boolean
.TRUE
);
45 TableViewerColumn column
= new TableViewerColumn(viewer
, SWT
.NONE
);
46 column
.getColumn().setWidth(30);
47 column
.getColumn().setText("ID");
48 column
.getColumn().setAlignment(SWT
.RIGHT
);
49 column
.setLabelProvider(new ColumnLabelProvider() {
50 public String
getText(Object element
) {
51 return Long
.toString(((Bundle
) element
).getBundleId());
54 new ColumnViewerComparator
<Bundle
>(column
, new Comparator
<Bundle
>() {
55 public int compare(Bundle o1
, Bundle o2
) {
56 return (int) (o1
.getBundleId() - o2
.getBundleId());
61 column
= new TableViewerColumn(viewer
, SWT
.NONE
);
62 column
.getColumn().setWidth(18);
63 column
.getColumn().setText("State");
64 column
.setLabelProvider(new StateLabelProvider());
65 new ColumnViewerComparator
<Bundle
>(column
, new Comparator
<Bundle
>() {
66 public int compare(Bundle o1
, Bundle o2
) {
67 return o1
.getState() - o2
.getState();
72 column
= new TableViewerColumn(viewer
, SWT
.NONE
);
73 column
.getColumn().setWidth(300);
74 column
.getColumn().setText("Symbolic Name");
75 column
.setLabelProvider(new ColumnLabelProvider() {
76 public String
getText(Object element
) {
77 return ((Bundle
) element
).getSymbolicName();
80 new ColumnViewerComparator
<Bundle
>(column
, new Comparator
<Bundle
>() {
81 public int compare(Bundle o1
, Bundle o2
) {
82 return o1
.getSymbolicName().compareTo(o2
.getSymbolicName());
87 column
= new TableViewerColumn(viewer
, SWT
.NONE
);
88 column
.getColumn().setWidth(150);
89 column
.getColumn().setText("Version");
90 column
.setLabelProvider(new ColumnLabelProvider() {
91 public String
getText(Object element
) {
92 return ((Bundle
) element
).getVersion().toString();
95 new ColumnViewerComparator
<Bundle
>(column
, new Comparator
<Bundle
>() {
96 public int compare(Bundle o1
, Bundle o2
) {
97 return o1
.getVersion().compareTo(o2
.getVersion());
101 viewer
.setInput(OsgiExplorerPlugin
.getDefault().getBundle()
102 .getBundleContext());
107 public void setFocus() {
109 viewer
.getControl().setFocus();
112 /** Content provider managing the array of bundles */
113 private static class BundleContentProvider
implements
114 IStructuredContentProvider
{
115 public Object
[] getElements(Object inputElement
) {
116 if (inputElement
instanceof BundleContext
) {
117 BundleContext bc
= (BundleContext
) inputElement
;
118 return bc
.getBundles();
123 public void dispose() {
126 public void inputChanged(Viewer viewer
, Object oldInput
, Object newInput
) {
131 /** Label provider for the state column */
132 private static class StateLabelProvider
extends ColumnLabelProvider
{
134 public Image
getImage(Object element
) {
135 Integer state
= ((Bundle
) element
).getState();
137 case Bundle
.UNINSTALLED
:
138 return OsgiExplorerImages
.INSTALLED
;
139 case Bundle
.INSTALLED
:
140 return OsgiExplorerImages
.INSTALLED
;
141 case Bundle
.RESOLVED
:
142 return OsgiExplorerImages
.RESOLVED
;
143 case Bundle
.STARTING
:
144 return OsgiExplorerImages
.STARTING
;
145 case Bundle
.STOPPING
:
146 return OsgiExplorerImages
.STARTING
;
148 return OsgiExplorerImages
.ACTIVE
;
155 public String
getText(Object element
) {
160 public String
getToolTipText(Object element
) {
161 Bundle bundle
= (Bundle
) element
;
162 Integer state
= bundle
.getState();
164 case Bundle
.UNINSTALLED
:
165 return "UNINSTALLED";
166 case Bundle
.INSTALLED
:
168 case Bundle
.RESOLVED
:
170 case Bundle
.STARTING
:
171 String activationPolicy
= bundle
.getHeaders()
172 .get(Constants
.BUNDLE_ACTIVATIONPOLICY
).toString();
173 if (activationPolicy
!= null
174 && activationPolicy
.equals(Constants
.ACTIVATION_LAZY
))
177 case Bundle
.STOPPING
: