]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - security/eclipse/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/views/CurrentUserView.java
Adapt Security to RCP
[lgpl/argeo-commons.git] / security / eclipse / plugins / org.argeo.security.ui / src / main / java / org / argeo / security / ui / views / CurrentUserView.java
diff --git a/security/eclipse/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/views/CurrentUserView.java b/security/eclipse/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/views/CurrentUserView.java
new file mode 100644 (file)
index 0000000..263a722
--- /dev/null
@@ -0,0 +1,129 @@
+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;
+               }
+
+       }
+
+}