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