--- /dev/null
+package org.argeo.security.ui.views;
+
+import org.argeo.security.equinox.CurrentUser;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.ui.part.ViewPart;
+
+public class CurrentUserView extends ViewPart {
+ private TableViewer viewer;
+
+ @Override
+ public void createPartControl(Composite parent) {
+
+ // viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL
+ // | SWT.V_SCROLL);
+ viewer = new TableViewer(createTable(parent));
+ viewer.setContentProvider(new UsersContentProvider());
+ viewer.setLabelProvider(new UsersLabelProvider());
+ viewer.setInput(getViewSite());
+ // viewer.setInput(SecurityContextHolder.getContext());
+ }
+
+ protected Table createTable(Composite parent) {
+ int style = SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL;
+
+ Table table = new Table(parent, style);
+
+ // GridData gridData = new GridData(GridData.FILL_BOTH);
+ // gridData.grabExcessVerticalSpace = true;
+ // gridData.grabExcessHorizontalSpace = true;
+ // gridData.horizontalSpan = 3;
+ // table.setLayoutData(gridData);
+
+ table.setLinesVisible(true);
+ table.setHeaderVisible(true);
+
+ TableColumn column = new TableColumn(table, SWT.LEFT, 0);
+ column.setText("ID");
+ column.setWidth(100);
+
+// column = new TableColumn(table, SWT.LEFT, 1);
+// column.setText("Password");
+// column.setWidth(200);
+
+ // column = new TableColumn(table, SWT.LEFT, 2);
+ // column.setText("Roles");
+ // column.setWidth(300);
+
+ return table;
+ }
+
+ @Override
+ public void setFocus() {
+ viewer.getTable().setFocus();
+ }
+
+ private class UsersContentProvider implements IStructuredContentProvider {
+
+ public Object[] getElements(Object inputElement) {
+ return getChildren(inputElement);
+ }
+
+ public Object[] getChildren(Object parentElement) {
+// ILoginContext secureContext = LoginContextFactory
+// .createContext("SPRING");
+// try {
+// secureContext.login();
+// } catch (LoginException e) {
+// // login failed
+// }
+//
+// Subject subject = null;
+// // subject = Subject.getSubject(AccessController.getContext());
+// try {
+// subject = secureContext.getSubject();
+// } catch (Exception e) {
+// e.printStackTrace();
+// throw new ArgeoException("Cannot retrieve subject", e);
+// }
+//
+// if (subject == null)
+// throw new ArgeoException("No subject found");
+// return subject.getPrincipals().toArray();
+ return CurrentUser.roles().toArray();
+ }
+
+ public void dispose() {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ // TODO Auto-generated method stub
+
+ }
+
+ }
+
+ private class UsersLabelProvider extends LabelProvider implements
+ ITableLabelProvider {
+ public String getColumnText(Object element, int columnIndex) {
+// Principal argeoUser = (Principal) element;
+// switch (columnIndex) {
+// case 0:
+// return argeoUser.getName();
+// case 1:
+// return argeoUser.toString();
+// default:
+// throw new ArgeoException("Unmanaged column " + columnIndex);
+// }
+ return element.toString();
+ }
+
+ public Image getColumnImage(Object element, int columnIndex) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ }
+
+}