]> git.argeo.org Git - gpl/argeo-jcr.git/blob - swt/org.argeo.tool.devops.e4/src/org/argeo/cms/e4/monitoring/CmsSessionsView.java
Prepare next development cycle
[gpl/argeo-jcr.git] / swt / org.argeo.tool.devops.e4 / src / org / argeo / cms / e4 / monitoring / CmsSessionsView.java
1 //package org.argeo.eclipse.ui.workbench.osgi;
2 //public class BundlesView {}
3
4 package org.argeo.cms.e4.monitoring;
5
6 import java.util.ArrayList;
7 import java.util.Collection;
8 import java.util.List;
9
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;
26
27 import jakarta.annotation.PostConstruct;
28
29 /**
30 * Overview of the active CMS sessions.
31 */
32 public class CmsSessionsView {
33 private final static BundleContext bc = FrameworkUtil.getBundle(CmsSessionsView.class).getBundleContext();
34
35 private TableViewer viewer;
36
37 @PostConstruct
38 public void createPartControl(Composite parent) {
39 viewer = new TableViewer(parent);
40 viewer.setContentProvider(new CmsSessionContentProvider());
41 viewer.getTable().setHeaderVisible(true);
42
43 //EclipseUiSpecificUtils.enableToolTipSupport(viewer);
44
45 int longColWidth = 150;
46 int smallColWidth = 100;
47
48 // Display name
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;
54
55 public String getText(Object element) {
56 return ((CmsSession) element).getDisplayName();
57 }
58
59 public String getToolTipText(Object element) {
60 return ((CmsSession) element).getUserDn().toString();
61 }
62 });
63 new ColumnViewerComparator(column);
64
65 // Creation time
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;
71
72 public String getText(Object element) {
73 return LangUtils.since(((CmsSession) element).getCreationTime());
74 }
75
76 public String getToolTipText(Object element) {
77 return ((CmsSession) element).getCreationTime().toString();
78 }
79 });
80 new ColumnViewerComparator(column);
81
82 // Username
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;
88
89 public String getText(Object element) {
90 String userDn = ((CmsSession) element).getUserDn();
91 return RoleNameUtils.getLastRdnValue(userDn);
92 }
93
94 public String getToolTipText(Object element) {
95 return ((CmsSession) element).getUserDn().toString();
96 }
97 });
98 new ColumnViewerComparator(column);
99
100 // UUID
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;
106
107 public String getText(Object element) {
108 return ((CmsSession) element).uuid().toString();
109 }
110
111 public String getToolTipText(Object element) {
112 return getText(element);
113 }
114 });
115 new ColumnViewerComparator(column);
116
117 // Local ID
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;
123
124 public String getText(Object element) {
125 return ((CmsSession) element).getLocalId();
126 }
127
128 public String getToolTipText(Object element) {
129 return getText(element);
130 }
131 });
132 new ColumnViewerComparator(column);
133
134 viewer.setInput(bc);
135
136 }
137
138 @Focus
139 public void setFocus() {
140 if (viewer != null)
141 viewer.getControl().setFocus();
142 }
143
144 /** Content provider managing the array of bundles */
145 private static class CmsSessionContentProvider implements IStructuredContentProvider {
146 private static final long serialVersionUID = -8533792785725875977L;
147
148 public Object[] getElements(Object inputElement) {
149 if (inputElement instanceof BundleContext) {
150 BundleContext bc = (BundleContext) inputElement;
151 Collection<ServiceReference<CmsSession>> srs;
152 try {
153 srs = bc.getServiceReferences(CmsSession.class, null);
154 } catch (InvalidSyntaxException e) {
155 throw new IllegalArgumentException("Cannot retrieve CMS sessions", e);
156 }
157 List<CmsSession> res = new ArrayList<>();
158 for (ServiceReference<CmsSession> sr : srs) {
159 res.add(bc.getService(sr));
160 }
161 return res.toArray();
162 }
163 return null;
164 }
165
166 public void dispose() {
167 }
168
169 public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
170 }
171 }
172 }