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 org
.argeo
.api
.cms
.CmsSession
;
11 import org
.argeo
.api
.cms
.auth
.RoleNameUtils
;
12 import org
.argeo
.cms
.util
.LangUtils
;
13 import org
.argeo
.eclipse
.ui
.ColumnViewerComparator
;
14 import org
.eclipse
.e4
.ui
.di
.Focus
;
15 import org
.eclipse
.jface
.viewers
.ColumnLabelProvider
;
16 import org
.eclipse
.jface
.viewers
.IStructuredContentProvider
;
17 import org
.eclipse
.jface
.viewers
.TableViewer
;
18 import org
.eclipse
.jface
.viewers
.TableViewerColumn
;
19 import org
.eclipse
.jface
.viewers
.Viewer
;
20 import org
.eclipse
.swt
.SWT
;
21 import org
.eclipse
.swt
.widgets
.Composite
;
22 import org
.osgi
.framework
.BundleContext
;
23 import org
.osgi
.framework
.FrameworkUtil
;
24 import org
.osgi
.framework
.InvalidSyntaxException
;
25 import org
.osgi
.framework
.ServiceReference
;
27 import jakarta
.annotation
.PostConstruct
;
30 * Overview of the active CMS sessions.
32 public class CmsSessionsView
{
33 private final static BundleContext bc
= FrameworkUtil
.getBundle(CmsSessionsView
.class).getBundleContext();
35 private TableViewer viewer
;
38 public void createPartControl(Composite parent
) {
39 viewer
= new TableViewer(parent
);
40 viewer
.setContentProvider(new CmsSessionContentProvider());
41 viewer
.getTable().setHeaderVisible(true);
43 //EclipseUiSpecificUtils.enableToolTipSupport(viewer);
45 int longColWidth
= 150;
46 int smallColWidth
= 100;
49 TableViewerColumn column
= new TableViewerColumn(viewer
, SWT
.NONE
);
50 column
.getColumn().setWidth(longColWidth
);
51 column
.getColumn().setText("User");
52 column
.setLabelProvider(new ColumnLabelProvider() {
53 private static final long serialVersionUID
= -5234573509093747505L;
55 public String
getText(Object element
) {
56 return ((CmsSession
) element
).getDisplayName();
59 public String
getToolTipText(Object element
) {
60 return ((CmsSession
) element
).getUserDn().toString();
63 new ColumnViewerComparator(column
);
66 column
= new TableViewerColumn(viewer
, SWT
.NONE
);
67 column
.getColumn().setWidth(smallColWidth
);
68 column
.getColumn().setText("Since");
69 column
.setLabelProvider(new ColumnLabelProvider() {
70 private static final long serialVersionUID
= -5234573509093747505L;
72 public String
getText(Object element
) {
73 return LangUtils
.since(((CmsSession
) element
).getCreationTime());
76 public String
getToolTipText(Object element
) {
77 return ((CmsSession
) element
).getCreationTime().toString();
80 new ColumnViewerComparator(column
);
83 column
= new TableViewerColumn(viewer
, SWT
.NONE
);
84 column
.getColumn().setWidth(smallColWidth
);
85 column
.getColumn().setText("Username");
86 column
.setLabelProvider(new ColumnLabelProvider() {
87 private static final long serialVersionUID
= -5234573509093747505L;
89 public String
getText(Object element
) {
90 String userDn
= ((CmsSession
) element
).getUserDn();
91 return RoleNameUtils
.getLastRdnValue(userDn
);
94 public String
getToolTipText(Object element
) {
95 return ((CmsSession
) element
).getUserDn().toString();
98 new ColumnViewerComparator(column
);
101 column
= new TableViewerColumn(viewer
, SWT
.NONE
);
102 column
.getColumn().setWidth(smallColWidth
);
103 column
.getColumn().setText("UUID");
104 column
.setLabelProvider(new ColumnLabelProvider() {
105 private static final long serialVersionUID
= -5234573509093747505L;
107 public String
getText(Object element
) {
108 return ((CmsSession
) element
).uuid().toString();
111 public String
getToolTipText(Object element
) {
112 return getText(element
);
115 new ColumnViewerComparator(column
);
118 column
= new TableViewerColumn(viewer
, SWT
.NONE
);
119 column
.getColumn().setWidth(smallColWidth
);
120 column
.getColumn().setText("Local ID");
121 column
.setLabelProvider(new ColumnLabelProvider() {
122 private static final long serialVersionUID
= -5234573509093747505L;
124 public String
getText(Object element
) {
125 return ((CmsSession
) element
).getLocalId();
128 public String
getToolTipText(Object element
) {
129 return getText(element
);
132 new ColumnViewerComparator(column
);
139 public void setFocus() {
141 viewer
.getControl().setFocus();
144 /** Content provider managing the array of bundles */
145 private static class CmsSessionContentProvider
implements IStructuredContentProvider
{
146 private static final long serialVersionUID
= -8533792785725875977L;
148 public Object
[] getElements(Object inputElement
) {
149 if (inputElement
instanceof BundleContext
) {
150 BundleContext bc
= (BundleContext
) inputElement
;
151 Collection
<ServiceReference
<CmsSession
>> srs
;
153 srs
= bc
.getServiceReferences(CmsSession
.class, null);
154 } catch (InvalidSyntaxException e
) {
155 throw new IllegalArgumentException("Cannot retrieve CMS sessions", e
);
157 List
<CmsSession
> res
= new ArrayList
<>();
158 for (ServiceReference
<CmsSession
> sr
: srs
) {
159 res
.add(bc
.getService(sr
));
161 return res
.toArray();
166 public void dispose() {
169 public void inputChanged(Viewer viewer
, Object oldInput
, Object newInput
) {