1 //package org.argeo.eclipse.ui.workbench.osgi;
2 //public class BundlesView {}
4 package org
.argeo
.cms
.e4
.monitoring
;
6 import java
.util
.ArrayList
;
7 import java
.util
.Collection
;
10 import javax
.annotation
.PostConstruct
;
11 import javax
.naming
.ldap
.LdapName
;
13 import org
.argeo
.cms
.CmsException
;
14 import org
.argeo
.cms
.auth
.CmsSession
;
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
.e4
.ui
.di
.Focus
;
19 import org
.eclipse
.jface
.viewers
.ColumnLabelProvider
;
20 import org
.eclipse
.jface
.viewers
.IStructuredContentProvider
;
21 import org
.eclipse
.jface
.viewers
.TableViewer
;
22 import org
.eclipse
.jface
.viewers
.TableViewerColumn
;
23 import org
.eclipse
.jface
.viewers
.Viewer
;
24 import org
.eclipse
.swt
.SWT
;
25 import org
.eclipse
.swt
.widgets
.Composite
;
26 import org
.osgi
.framework
.BundleContext
;
27 import org
.osgi
.framework
.FrameworkUtil
;
28 import org
.osgi
.framework
.InvalidSyntaxException
;
29 import org
.osgi
.framework
.ServiceReference
;
32 * Overview of the active CMS sessions.
34 public class CmsSessionsView
{
35 private final static BundleContext bc
= FrameworkUtil
.getBundle(CmsSessionsView
.class).getBundleContext();
37 private TableViewer viewer
;
40 public void createPartControl(Composite parent
) {
41 viewer
= new TableViewer(parent
);
42 viewer
.setContentProvider(new CmsSessionContentProvider());
43 viewer
.getTable().setHeaderVisible(true);
45 EclipseUiSpecificUtils
.enableToolTipSupport(viewer
);
47 int longColWidth
= 150;
48 int smallColWidth
= 100;
51 TableViewerColumn column
= new TableViewerColumn(viewer
, SWT
.NONE
);
52 column
.getColumn().setWidth(longColWidth
);
53 column
.getColumn().setText("User");
54 column
.setLabelProvider(new ColumnLabelProvider() {
55 private static final long serialVersionUID
= -5234573509093747505L;
57 public String
getText(Object element
) {
58 return ((CmsSession
) element
).getAuthorization().toString();
61 public String
getToolTipText(Object element
) {
62 return ((CmsSession
) element
).getUserDn().toString();
65 new ColumnViewerComparator(column
);
68 column
= new TableViewerColumn(viewer
, SWT
.NONE
);
69 column
.getColumn().setWidth(smallColWidth
);
70 column
.getColumn().setText("Since");
71 column
.setLabelProvider(new ColumnLabelProvider() {
72 private static final long serialVersionUID
= -5234573509093747505L;
74 public String
getText(Object element
) {
75 return LangUtils
.since(((CmsSession
) element
).getCreationTime());
78 public String
getToolTipText(Object element
) {
79 return ((CmsSession
) element
).getCreationTime().toString();
82 new ColumnViewerComparator(column
);
85 column
= new TableViewerColumn(viewer
, SWT
.NONE
);
86 column
.getColumn().setWidth(smallColWidth
);
87 column
.getColumn().setText("Username");
88 column
.setLabelProvider(new ColumnLabelProvider() {
89 private static final long serialVersionUID
= -5234573509093747505L;
91 public String
getText(Object element
) {
92 LdapName userDn
= ((CmsSession
) element
).getUserDn();
93 return userDn
.getRdn(userDn
.size() - 1).getValue().toString();
96 public String
getToolTipText(Object element
) {
97 return ((CmsSession
) element
).getUserDn().toString();
100 new ColumnViewerComparator(column
);
103 column
= new TableViewerColumn(viewer
, SWT
.NONE
);
104 column
.getColumn().setWidth(smallColWidth
);
105 column
.getColumn().setText("UUID");
106 column
.setLabelProvider(new ColumnLabelProvider() {
107 private static final long serialVersionUID
= -5234573509093747505L;
109 public String
getText(Object element
) {
110 return ((CmsSession
) element
).getUuid().toString();
113 public String
getToolTipText(Object element
) {
114 return getText(element
);
117 new ColumnViewerComparator(column
);
120 column
= new TableViewerColumn(viewer
, SWT
.NONE
);
121 column
.getColumn().setWidth(smallColWidth
);
122 column
.getColumn().setText("Local ID");
123 column
.setLabelProvider(new ColumnLabelProvider() {
124 private static final long serialVersionUID
= -5234573509093747505L;
126 public String
getText(Object element
) {
127 return ((CmsSession
) element
).getLocalId();
130 public String
getToolTipText(Object element
) {
131 return getText(element
);
134 new ColumnViewerComparator(column
);
141 public void setFocus() {
143 viewer
.getControl().setFocus();
146 /** Content provider managing the array of bundles */
147 private static class CmsSessionContentProvider
implements IStructuredContentProvider
{
148 private static final long serialVersionUID
= -8533792785725875977L;
150 public Object
[] getElements(Object inputElement
) {
151 if (inputElement
instanceof BundleContext
) {
152 BundleContext bc
= (BundleContext
) inputElement
;
153 Collection
<ServiceReference
<CmsSession
>> srs
;
155 srs
= bc
.getServiceReferences(CmsSession
.class, null);
156 } catch (InvalidSyntaxException e
) {
157 throw new CmsException("Cannot retrieve CMS sessions", e
);
159 List
<CmsSession
> res
= new ArrayList
<>();
160 for (ServiceReference
<CmsSession
> sr
: srs
) {
161 res
.add(bc
.getService(sr
));
163 return res
.toArray();
168 public void dispose() {
171 public void inputChanged(Viewer viewer
, Object oldInput
, Object newInput
) {