1 //package org.argeo.eclipse.ui.workbench.osgi;
2 //public class BundlesView {}
4 package org
.argeo
.cms
.ui
.workbench
.osgi
;
6 import java
.util
.ArrayList
;
7 import java
.util
.Collection
;
10 import javax
.naming
.ldap
.LdapName
;
12 import org
.argeo
.api
.cms
.CmsSession
;
13 import org
.argeo
.cms
.CmsException
;
14 import org
.argeo
.cms
.ui
.workbench
.WorkbenchUiPlugin
;
15 import org
.argeo
.eclipse
.ui
.ColumnViewerComparator
;
16 import org
.argeo
.eclipse
.ui
.specific
.EclipseUiSpecificUtils
;
17 import org
.argeo
.util
.LangUtils
;
18 import org
.eclipse
.jface
.viewers
.ColumnLabelProvider
;
19 import org
.eclipse
.jface
.viewers
.IStructuredContentProvider
;
20 import org
.eclipse
.jface
.viewers
.TableViewer
;
21 import org
.eclipse
.jface
.viewers
.TableViewerColumn
;
22 import org
.eclipse
.jface
.viewers
.Viewer
;
23 import org
.eclipse
.swt
.SWT
;
24 import org
.eclipse
.swt
.widgets
.Composite
;
25 import org
.eclipse
.ui
.part
.ViewPart
;
26 import org
.osgi
.framework
.BundleContext
;
27 import org
.osgi
.framework
.InvalidSyntaxException
;
28 import org
.osgi
.framework
.ServiceReference
;
31 * Overview of the active CMS sessions.
33 public class CmsSessionsView
extends ViewPart
{
34 private TableViewer viewer
;
37 public void createPartControl(Composite parent
) {
38 viewer
= new TableViewer(parent
);
39 viewer
.setContentProvider(new CmsSessionContentProvider());
40 viewer
.getTable().setHeaderVisible(true);
42 EclipseUiSpecificUtils
.enableToolTipSupport(viewer
);
44 int longColWidth
= 150;
45 int smallColWidth
= 100;
48 TableViewerColumn column
= new TableViewerColumn(viewer
, SWT
.NONE
);
49 column
.getColumn().setWidth(longColWidth
);
50 column
.getColumn().setText("User");
51 column
.setLabelProvider(new ColumnLabelProvider() {
52 private static final long serialVersionUID
= -5234573509093747505L;
54 public String
getText(Object element
) {
55 return ((CmsSession
) element
).getDisplayName();
58 public String
getToolTipText(Object element
) {
59 return ((CmsSession
) element
).getUserDn().toString();
62 new ColumnViewerComparator(column
);
65 column
= new TableViewerColumn(viewer
, SWT
.NONE
);
66 column
.getColumn().setWidth(smallColWidth
);
67 column
.getColumn().setText("Since");
68 column
.setLabelProvider(new ColumnLabelProvider() {
69 private static final long serialVersionUID
= -5234573509093747505L;
71 public String
getText(Object element
) {
72 return LangUtils
.since(((CmsSession
) element
).getCreationTime());
75 public String
getToolTipText(Object element
) {
76 return ((CmsSession
) element
).getCreationTime().toString();
79 new ColumnViewerComparator(column
);
82 column
= new TableViewerColumn(viewer
, SWT
.NONE
);
83 column
.getColumn().setWidth(smallColWidth
);
84 column
.getColumn().setText("Username");
85 column
.setLabelProvider(new ColumnLabelProvider() {
86 private static final long serialVersionUID
= -5234573509093747505L;
88 public String
getText(Object element
) {
89 LdapName userDn
= ((CmsSession
) element
).getUserDn();
90 return userDn
.getRdn(userDn
.size() - 1).getValue().toString();
93 public String
getToolTipText(Object element
) {
94 return ((CmsSession
) element
).getUserDn().toString();
97 new ColumnViewerComparator(column
);
100 column
= new TableViewerColumn(viewer
, SWT
.NONE
);
101 column
.getColumn().setWidth(smallColWidth
);
102 column
.getColumn().setText("UUID");
103 column
.setLabelProvider(new ColumnLabelProvider() {
104 private static final long serialVersionUID
= -5234573509093747505L;
106 public String
getText(Object element
) {
107 return ((CmsSession
) element
).getUuid().toString();
110 public String
getToolTipText(Object element
) {
111 return getText(element
);
114 new ColumnViewerComparator(column
);
117 column
= new TableViewerColumn(viewer
, SWT
.NONE
);
118 column
.getColumn().setWidth(smallColWidth
);
119 column
.getColumn().setText("Local ID");
120 column
.setLabelProvider(new ColumnLabelProvider() {
121 private static final long serialVersionUID
= -5234573509093747505L;
123 public String
getText(Object element
) {
124 return ((CmsSession
) element
).getLocalId();
127 public String
getToolTipText(Object element
) {
128 return getText(element
);
131 new ColumnViewerComparator(column
);
133 viewer
.setInput(WorkbenchUiPlugin
.getDefault().getBundle().getBundleContext());
138 public void setFocus() {
140 viewer
.getControl().setFocus();
143 /** Content provider managing the array of bundles */
144 private static class CmsSessionContentProvider
implements IStructuredContentProvider
{
145 private static final long serialVersionUID
= -8533792785725875977L;
147 public Object
[] getElements(Object inputElement
) {
148 if (inputElement
instanceof BundleContext
) {
149 BundleContext bc
= (BundleContext
) inputElement
;
150 Collection
<ServiceReference
<CmsSession
>> srs
;
152 srs
= bc
.getServiceReferences(CmsSession
.class, null);
153 } catch (InvalidSyntaxException e
) {
154 throw new CmsException("Cannot retrieve CMS sessions", e
);
156 List
<CmsSession
> res
= new ArrayList
<>();
157 for (ServiceReference
<CmsSession
> sr
: srs
) {
158 res
.add(bc
.getService(sr
));
160 return res
.toArray();
165 public void dispose() {
168 public void inputChanged(Viewer viewer
, Object oldInput
, Object newInput
) {