]> git.argeo.org Git - lgpl/argeo-commons.git/blob - CmsSessionsView.java
8a360509527e41ac4eb3a562498d3fe4784e757b
[lgpl/argeo-commons.git] / 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 javax.annotation.PostConstruct;
11 import javax.naming.ldap.LdapName;
12
13 import org.argeo.api.cms.CmsSession;
14 import org.argeo.eclipse.ui.ColumnViewerComparator;
15 import org.argeo.eclipse.ui.specific.EclipseUiSpecificUtils;
16 import org.argeo.util.LangUtils;
17 import org.eclipse.e4.ui.di.Focus;
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.osgi.framework.BundleContext;
26 import org.osgi.framework.FrameworkUtil;
27 import org.osgi.framework.InvalidSyntaxException;
28 import org.osgi.framework.ServiceReference;
29
30 /**
31 * Overview of the active CMS sessions.
32 */
33 public class CmsSessionsView {
34 private final static BundleContext bc = FrameworkUtil.getBundle(CmsSessionsView.class).getBundleContext();
35
36 private TableViewer viewer;
37
38 @PostConstruct
39 public void createPartControl(Composite parent) {
40 viewer = new TableViewer(parent);
41 viewer.setContentProvider(new CmsSessionContentProvider());
42 viewer.getTable().setHeaderVisible(true);
43
44 EclipseUiSpecificUtils.enableToolTipSupport(viewer);
45
46 int longColWidth = 150;
47 int smallColWidth = 100;
48
49 // Display name
50 TableViewerColumn column = new TableViewerColumn(viewer, SWT.NONE);
51 column.getColumn().setWidth(longColWidth);
52 column.getColumn().setText("User");
53 column.setLabelProvider(new ColumnLabelProvider() {
54 private static final long serialVersionUID = -5234573509093747505L;
55
56 public String getText(Object element) {
57 return ((CmsSession) element).getDisplayName();
58 }
59
60 public String getToolTipText(Object element) {
61 return ((CmsSession) element).getUserDn().toString();
62 }
63 });
64 new ColumnViewerComparator(column);
65
66 // Creation time
67 column = new TableViewerColumn(viewer, SWT.NONE);
68 column.getColumn().setWidth(smallColWidth);
69 column.getColumn().setText("Since");
70 column.setLabelProvider(new ColumnLabelProvider() {
71 private static final long serialVersionUID = -5234573509093747505L;
72
73 public String getText(Object element) {
74 return LangUtils.since(((CmsSession) element).getCreationTime());
75 }
76
77 public String getToolTipText(Object element) {
78 return ((CmsSession) element).getCreationTime().toString();
79 }
80 });
81 new ColumnViewerComparator(column);
82
83 // Username
84 column = new TableViewerColumn(viewer, SWT.NONE);
85 column.getColumn().setWidth(smallColWidth);
86 column.getColumn().setText("Username");
87 column.setLabelProvider(new ColumnLabelProvider() {
88 private static final long serialVersionUID = -5234573509093747505L;
89
90 public String getText(Object element) {
91 LdapName userDn = ((CmsSession) element).getUserDn();
92 return userDn.getRdn(userDn.size() - 1).getValue().toString();
93 }
94
95 public String getToolTipText(Object element) {
96 return ((CmsSession) element).getUserDn().toString();
97 }
98 });
99 new ColumnViewerComparator(column);
100
101 // UUID
102 column = new TableViewerColumn(viewer, SWT.NONE);
103 column.getColumn().setWidth(smallColWidth);
104 column.getColumn().setText("UUID");
105 column.setLabelProvider(new ColumnLabelProvider() {
106 private static final long serialVersionUID = -5234573509093747505L;
107
108 public String getText(Object element) {
109 return ((CmsSession) element).getUuid().toString();
110 }
111
112 public String getToolTipText(Object element) {
113 return getText(element);
114 }
115 });
116 new ColumnViewerComparator(column);
117
118 // Local ID
119 column = new TableViewerColumn(viewer, SWT.NONE);
120 column.getColumn().setWidth(smallColWidth);
121 column.getColumn().setText("Local ID");
122 column.setLabelProvider(new ColumnLabelProvider() {
123 private static final long serialVersionUID = -5234573509093747505L;
124
125 public String getText(Object element) {
126 return ((CmsSession) element).getLocalId();
127 }
128
129 public String getToolTipText(Object element) {
130 return getText(element);
131 }
132 });
133 new ColumnViewerComparator(column);
134
135 viewer.setInput(bc);
136
137 }
138
139 @Focus
140 public void setFocus() {
141 if (viewer != null)
142 viewer.getControl().setFocus();
143 }
144
145 /** Content provider managing the array of bundles */
146 private static class CmsSessionContentProvider implements IStructuredContentProvider {
147 private static final long serialVersionUID = -8533792785725875977L;
148
149 public Object[] getElements(Object inputElement) {
150 if (inputElement instanceof BundleContext) {
151 BundleContext bc = (BundleContext) inputElement;
152 Collection<ServiceReference<CmsSession>> srs;
153 try {
154 srs = bc.getServiceReferences(CmsSession.class, null);
155 } catch (InvalidSyntaxException e) {
156 throw new IllegalArgumentException("Cannot retrieve CMS sessions", e);
157 }
158 List<CmsSession> res = new ArrayList<>();
159 for (ServiceReference<CmsSession> sr : srs) {
160 res.add(bc.getService(sr));
161 }
162 return res.toArray();
163 }
164 return null;
165 }
166
167 public void dispose() {
168 }
169
170 public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
171 }
172 }
173 }