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
.swt
.widgets
.Table
;
18 import org
.eclipse
.ui
.part
.ViewPart
;
19 import org
.osgi
.framework
.Bundle
;
20 import org
.osgi
.framework
.BundleContext
;
21 import org
.osgi
.framework
.Constants
;
24 * Overview of the bundles as a table. Equivalent to Equinox 'ss' console
27 public class BundlesView
extends ViewPart
{
28 private TableViewer viewer
;
31 public void createPartControl(Composite parent
) {
32 viewer
= new TableViewer(parent
);
33 viewer
.setContentProvider(new BundleContentProvider());
34 viewer
.getTable().setHeaderVisible(true);
36 // FIXME methodNotFound issue in RAP when built in Maven against RCP
38 ColumnViewerToolTipSupport
.enableFor(viewer
);
39 } catch (Exception e
) {
40 //String prop = Table.ENABLE_CELL_TOOLTIP;
41 String prop
= "org.eclipse.swt.widgets.Table#enableCellToolTip";
42 viewer
.getControl().setData(prop
, Boolean
.TRUE
);
46 TableViewerColumn column
= new TableViewerColumn(viewer
, SWT
.NONE
);
47 column
.getColumn().setWidth(30);
48 column
.getColumn().setText("ID");
49 column
.getColumn().setAlignment(SWT
.RIGHT
);
50 column
.setLabelProvider(new ColumnLabelProvider() {
51 public String
getText(Object element
) {
52 return Long
.toString(((Bundle
) element
).getBundleId());
55 new ColumnViewerComparator
<Bundle
>(column
, new Comparator
<Bundle
>() {
56 public int compare(Bundle o1
, Bundle o2
) {
57 return (int) (o1
.getBundleId() - o2
.getBundleId());
62 column
= new TableViewerColumn(viewer
, SWT
.NONE
);
63 column
.getColumn().setWidth(16);
64 column
.getColumn().setText("State");
65 column
.setLabelProvider(new StateLabelProvider());
66 new ColumnViewerComparator
<Bundle
>(column
, new Comparator
<Bundle
>() {
67 public int compare(Bundle o1
, Bundle o2
) {
68 return o1
.getState() - o2
.getState();
73 column
= new TableViewerColumn(viewer
, SWT
.NONE
);
74 column
.getColumn().setWidth(300);
75 column
.getColumn().setText("Symbolic Name");
76 column
.setLabelProvider(new ColumnLabelProvider() {
77 public String
getText(Object element
) {
78 return ((Bundle
) element
).getSymbolicName();
81 new ColumnViewerComparator
<Bundle
>(column
, new Comparator
<Bundle
>() {
82 public int compare(Bundle o1
, Bundle o2
) {
83 return o1
.getSymbolicName().compareTo(o2
.getSymbolicName());
88 column
= new TableViewerColumn(viewer
, SWT
.NONE
);
89 column
.getColumn().setWidth(150);
90 column
.getColumn().setText("Version");
91 column
.setLabelProvider(new ColumnLabelProvider() {
92 public String
getText(Object element
) {
93 return ((Bundle
) element
).getVersion().toString();
96 new ColumnViewerComparator
<Bundle
>(column
, new Comparator
<Bundle
>() {
97 public int compare(Bundle o1
, Bundle o2
) {
98 return o1
.getVersion().compareTo(o2
.getVersion());
102 viewer
.setInput(OsgiExplorerPlugin
.getDefault().getBundle()
103 .getBundleContext());
108 public void setFocus() {
110 viewer
.getControl().setFocus();
113 /** Content provider managing the array of bundles */
114 private static class BundleContentProvider
implements
115 IStructuredContentProvider
{
116 public Object
[] getElements(Object inputElement
) {
117 if (inputElement
instanceof BundleContext
) {
118 BundleContext bc
= (BundleContext
) inputElement
;
119 return bc
.getBundles();
124 public void dispose() {
127 public void inputChanged(Viewer viewer
, Object oldInput
, Object newInput
) {
132 /** Label provider for the state column */
133 private static class StateLabelProvider
extends ColumnLabelProvider
{
135 public Image
getImage(Object element
) {
136 Integer state
= ((Bundle
) element
).getState();
138 case Bundle
.UNINSTALLED
:
139 return OsgiExplorerImages
.INSTALLED
;
140 case Bundle
.INSTALLED
:
141 return OsgiExplorerImages
.INSTALLED
;
142 case Bundle
.RESOLVED
:
143 return OsgiExplorerImages
.RESOLVED
;
144 case Bundle
.STARTING
:
145 return OsgiExplorerImages
.STARTING
;
146 case Bundle
.STOPPING
:
147 return OsgiExplorerImages
.STARTING
;
149 return OsgiExplorerImages
.ACTIVE
;
156 public String
getText(Object element
) {
161 public String
getToolTipText(Object element
) {
162 Bundle bundle
= (Bundle
) element
;
163 Integer state
= bundle
.getState();
165 case Bundle
.UNINSTALLED
:
166 return "UNINSTALLED";
167 case Bundle
.INSTALLED
:
169 case Bundle
.RESOLVED
:
171 case Bundle
.STARTING
:
172 String activationPolicy
= bundle
.getHeaders()
173 .get(Constants
.BUNDLE_ACTIVATIONPOLICY
).toString();
174 if (activationPolicy
!= null
175 && activationPolicy
.equals(Constants
.ACTIVATION_LAZY
))
178 case Bundle
.STOPPING
: