xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
- <bean id="openArgeoUserEditor"
- class="org.argeo.security.ui.admin.commands.OpenArgeoUserEditor"
- scope="prototype" />
-
+ <!-- <bean id="openArgeoUserEditor" class="org.argeo.security.ui.admin.commands.OpenArgeoUserEditor"
+ scope="prototype" /> -->
<!-- USERS -->
- <bean id="newUser" class="org.argeo.security.ui.admin.commands.NewUser"
- scope="prototype">
- <property name="repository" ref="nodeRepository" />
- <property name="userAdminService" ref="userAdminService" />
- <!-- <property name="jcrSecurityModel" ref="jcrSecurityModel" /> -->
- </bean>
-
- <bean id="refreshUsersList" class="org.argeo.security.ui.admin.commands.RefreshUsersList"
- scope="prototype">
- <property name="userAdminService" ref="userAdminService" />
- <property name="repository" ref="nodeRepository" />
- </bean>
-
- <bean id="deleteUser" class="org.argeo.security.ui.admin.commands.DeleteUser"
- scope="prototype">
- <property name="userAdminService" ref="userAdminService" />
- </bean>
-
- <bean id="userBatchUpdate" class="org.argeo.security.ui.admin.commands.UserBatchUpdate"
- scope="prototype">
- <property name="repository" ref="nodeRepository" />
- <property name="userAdminService" ref="userAdminService" />
- </bean>
-
-
+ <!-- <bean id="newUser" class="org.argeo.security.ui.admin.commands.NewUser"
+ scope="prototype"> <property name="repository" ref="nodeRepository" /> <property
+ name="userAdminService" ref="userAdminService" /> </bean> <bean id="refreshUsersList"
+ class="org.argeo.security.ui.admin.commands.RefreshUsersList" scope="prototype">
+ <property name="userAdminService" ref="userAdminService" /> <property name="repository"
+ ref="nodeRepository" /> </bean> <bean id="deleteUser" class="org.argeo.security.ui.admin.commands.DeleteUser"
+ scope="prototype"> <property name="userAdminService" ref="userAdminService"
+ /> </bean> <bean id="userBatchUpdate" class="org.argeo.security.ui.admin.commands.UserBatchUpdate"
+ scope="prototype"> <property name="repository" ref="nodeRepository" /> <property
+ name="userAdminService" ref="userAdminService" /> </bean> -->
<!-- ROLES -->
- <bean id="refreshRoles" class="org.argeo.security.ui.admin.commands.RefreshRoles"
- scope="prototype">
- </bean>
-
- <bean id="addRole" class="org.argeo.security.ui.admin.commands.AddRole"
- scope="prototype">
- <property name="userAdminService" ref="userAdminService" />
- </bean>
-
- <bean id="deleteRole" class="org.argeo.security.ui.admin.commands.DeleteRole"
- scope="prototype">
- <property name="userAdminService" ref="userAdminService" />
- </bean>
+ <!-- <bean id="refreshRoles" class="org.argeo.security.ui.admin.commands.RefreshRoles"
+ scope="prototype"> </bean> <bean id="addRole" class="org.argeo.security.ui.admin.commands.AddRole"
+ scope="prototype"> <property name="userAdminService" ref="userAdminService"
+ /> </bean> <bean id="deleteRole" class="org.argeo.security.ui.admin.commands.DeleteRole"
+ scope="prototype"> <property name="userAdminService" ref="userAdminService"
+ /> </bean> -->
</beans>
<!-- <bean id="groupEditor" class="org.argeo.security.ui.admin.editors.GroupEditor"
scope="prototype"> <property name="userAdmin" ref="userAdmin" /> </bean> -->
<!-- LEGACY -->
- <bean id="adminArgeoUserEditor" class="org.argeo.security.ui.admin.editors.JcrArgeoUserEditor"
- scope="prototype">
- <property name="userAdminService" ref="userAdminService" />
- <property name="repository" ref="nodeRepository" />
- </bean>
+ <!-- <bean id="adminArgeoUserEditor" class="org.argeo.security.ui.admin.editors.JcrArgeoUserEditor"
+ scope="prototype"> <property name="userAdminService" ref="userAdminService"
+ /> <property name="repository" ref="nodeRepository" /> </bean> -->
</beans>
\r
<reference id="nodeRepository" interface="javax.jcr.Repository"\r
filter="(argeo.jcr.repository.alias=node)" />\r
- <reference id="userAdminService" interface="org.argeo.security.UserAdminService" />\r
- \r
+ <!-- <reference id="userAdminService" interface="org.argeo.security.UserAdminService" \r
+ /> -->\r
<!-- new useradmin -->\r
<reference id="userAdmin" interface="org.osgi.service.useradmin.UserAdmin" />\r
\r
</bean>
<!-- LEGACY. TODO: Remove -->
- <bean id="jcrUsersView" class="org.argeo.security.ui.admin.views.JcrUsersView"
- scope="prototype">
- <property name="repository" ref="nodeRepository" />
- </bean>
- <bean id="adminRolesView" class="org.argeo.security.ui.admin.views.RolesView"
- scope="prototype">
- <property name="userAdminService" ref="userAdminService" />
- </bean>
+ <!-- <bean id="jcrUsersView" class="org.argeo.security.ui.admin.views.JcrUsersView"
+ scope="prototype"> <property name="repository" ref="nodeRepository" /> </bean>
+ <bean id="adminRolesView" class="org.argeo.security.ui.admin.views.RolesView"
+ scope="prototype"> <property name="userAdminService" ref="userAdminService"
+ /> </bean> -->
</beans>
</view>
<!-- Legacy -->
- <view
+ <!-- <view
class="org.argeo.eclipse.spring.SpringExtensionFactory"
icon="icons/users.gif"
id="org.argeo.security.ui.admin.jcrUsersView"
id="org.argeo.security.ui.admin.jcrRolesView"
name="Roles"
restorable="false">
- </view>
- </extension>
+ </view>-->
+ </extension>
<!-- Editors -->
<extension
default="false">
</editor>
<!-- Legacy -->
- <editor
+ <!--<editor
class="org.argeo.eclipse.spring.SpringExtensionFactory"
id="org.argeo.security.ui.admin.adminArgeoUserEditor"
name="User"
icon="icons/user.gif"
default="false">
- </editor>
+ </editor> -->
</extension>
<extension
point="org.eclipse.ui.commands">
- <command
+ <!--<command
defaultHandler="org.argeo.eclipse.spring.SpringCommandHandler"
id="org.argeo.security.ui.admin.openArgeoUserEditor"
name="OpenArgeoUserEditor">
defaultHandler="org.argeo.eclipse.spring.SpringCommandHandler"
id="org.argeo.security.ui.admin.userBatchUpdate"
name="User batch update">
- </command>
+ </command> -->
</extension>
<extension
point="org.eclipse.ui.menus">
- <menuContribution
+<!-- <menuContribution
locationURI="toolbar:org.argeo.security.ui.admin.adminRolesView">
<command
commandId="org.argeo.security.ui.admin.deleteRole"
label="LDAP Users Sync"
tooltip="Synchronize users from LDAP">
</command>
- </menuContribution>
+ </menuContribution> -->
</extension>
<extension
package org.argeo.security.ui.admin;
import org.argeo.security.ui.admin.views.GroupsView;
-import org.argeo.security.ui.admin.views.JcrUsersView;
-import org.argeo.security.ui.admin.views.JcrRolesView;
import org.argeo.security.ui.admin.views.UsersView;
import org.eclipse.ui.IFolderLayout;
import org.eclipse.ui.IPageLayout;
IFolderLayout left = layout.createFolder("left", IPageLayout.LEFT,
0.25f, editorArea);
left.addView(UsersView.ID);
- left.addView(JcrUsersView.ID);
- left.addView(JcrRolesView.ID);
+ // left.addView(JcrUsersView.ID);
+ // left.addView(JcrRolesView.ID);
IFolderLayout right = layout.createFolder("right", IPageLayout.RIGHT,
0.70f, editorArea);
*/
package org.argeo.security.ui.admin.commands;
-import org.argeo.ArgeoException;
import org.argeo.security.UserAdminService;
-import org.argeo.security.ui.admin.editors.JcrArgeoUserEditor;
-import org.argeo.security.ui.admin.views.JcrRolesView;
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.ui.IEditorReference;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.handlers.HandlerUtil;
/** Add a new role. */
public class AddRole extends AbstractHandler {
private String rolePrefix = "ROLE_";
public Object execute(ExecutionEvent event) throws ExecutionException {
- JcrRolesView rolesView = (JcrRolesView) HandlerUtil
- .getActiveWorkbenchWindow(event).getActivePage()
- .findView(JcrRolesView.ID);
- String role = rolesView.getNewRole();
- if (role.trim().equals(""))
- return null;
- if (role.equals(rolesView.getAddNewRoleText()))
- return null;
- role = role.trim().toUpperCase();
- if (!role.startsWith(rolePrefix))
- role = rolePrefix + role;
- if (userAdminService.listEditableRoles().contains(role))
- throw new ArgeoException("Role " + role + " already exists");
- userAdminService.newRole(role);
- rolesView.refresh();
-
- // refresh editors
- IEditorReference[] refs = HandlerUtil.getActiveWorkbenchWindow(event)
- .getActivePage()
- .findEditors(null, JcrArgeoUserEditor.ID, IWorkbenchPage.MATCH_ID);
- for (IEditorReference ref : refs) {
- JcrArgeoUserEditor userEditor = (JcrArgeoUserEditor) ref.getEditor(false);
- if (userEditor != null) {
- userEditor.refresh();
- }
- }
return null;
}
public void setUserAdminService(UserAdminService userAdminService) {
this.userAdminService = userAdminService;
}
-
}
+// JcrRolesView rolesView = (JcrRolesView) HandlerUtil
+// .getActiveWorkbenchWindow(event).getActivePage()
+// .findView(JcrRolesView.ID);
+// String role = rolesView.getNewRole();
+// if (role.trim().equals(""))
+// return null;
+// if (role.equals(rolesView.getAddNewRoleText()))
+// return null;
+// role = role.trim().toUpperCase();
+// if (!role.startsWith(rolePrefix))
+// role = rolePrefix + role;
+// if (userAdminService.listEditableRoles().contains(role))
+// throw new ArgeoException("Role " + role + " already exists");
+// userAdminService.newRole(role);
+// rolesView.refresh();
+//
+// // refresh editors
+// IEditorReference[] refs = HandlerUtil.getActiveWorkbenchWindow(event)
+// .getActivePage()
+// .findEditors(null, JcrArgeoUserEditor.ID, IWorkbenchPage.MATCH_ID);
+// for (IEditorReference ref : refs) {
+// JcrArgeoUserEditor userEditor = (JcrArgeoUserEditor) ref.getEditor(false);
+// if (userEditor != null) {
+// userEditor.refresh();
+// }
+// }
+// return null;
+// }
+//
+// public void setUserAdminService(UserAdminService userAdminService) {
+// this.userAdminService = userAdminService;
+// }
+//
+// }
*/
package org.argeo.security.ui.admin.commands;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
import org.argeo.security.UserAdminService;
-import org.argeo.security.ui.admin.views.JcrRolesView;
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.ui.handlers.HandlerUtil;
/** Deletes the selected roles */
public class DeleteRole extends AbstractHandler {
@SuppressWarnings("unchecked")
public Object execute(ExecutionEvent event) throws ExecutionException {
- ISelection selection = HandlerUtil.getCurrentSelection(event);
- if (selection.isEmpty())
- return null;
-
- List<String> toDelete = new ArrayList<String>();
- Iterator<String> it = ((IStructuredSelection) selection).iterator();
- while (it.hasNext()) {
- toDelete.add(it.next());
- }
-
- if (!MessageDialog
- .openQuestion(
- HandlerUtil.getActiveShell(event),
- "Delete Role",
- "Are you sure that you want to delete "
- + toDelete
- + "?\n"
- + "This may lead to inconsistencies in the application."))
- return null;
-
- for (String role : toDelete) {
- userAdminService.deleteRole(role);
- }
-
- JcrRolesView view = (JcrRolesView) HandlerUtil
- .getActiveWorkbenchWindow(event).getActivePage()
- .findView(JcrRolesView.ID);
- view.refresh();
return null;
}
public void setUserAdminService(UserAdminService userAdminService) {
this.userAdminService = userAdminService;
}
-}
\ No newline at end of file
+}
+// ISelection selection = HandlerUtil.getCurrentSelection(event);
+// if (selection.isEmpty())
+// return null;
+//
+// List<String> toDelete = new ArrayList<String>();
+// Iterator<String> it = ((IStructuredSelection) selection).iterator();
+// while (it.hasNext()) {
+// toDelete.add(it.next());
+// }
+//
+// if (!MessageDialog
+// .openQuestion(
+// HandlerUtil.getActiveShell(event),
+// "Delete Role",
+// "Are you sure that you want to delete "
+// + toDelete
+// + "?\n"
+// + "This may lead to inconsistencies in the application."))
+// return null;
+//
+// for (String role : toDelete) {
+// userAdminService.deleteRole(role);
+// }
+//
+// JcrRolesView view = (JcrRolesView) HandlerUtil
+// .getActiveWorkbenchWindow(event).getActivePage()
+// .findView(JcrRolesView.ID);
+// view.refresh();
+// return null;
+// }
+//
+// public void setUserAdminService(UserAdminService userAdminService) {
+// this.userAdminService = userAdminService;
+// }
+// }
\ No newline at end of file
*/
package org.argeo.security.ui.admin.commands;
-import org.argeo.security.ui.admin.editors.JcrArgeoUserEditor;
-import org.argeo.security.ui.admin.editors.ArgeoUserEditorInput;
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.handlers.HandlerUtil;
/** Command handler to set visible or open a Argeo user. */
public class OpenArgeoUserEditor extends AbstractHandler {
public final static String PARAM_USERNAME = "org.argeo.security.ui.admin.username";
public Object execute(ExecutionEvent event) throws ExecutionException {
- try {
- ArgeoUserEditorInput editorInput = new ArgeoUserEditorInput(
- event.getParameter(PARAM_USERNAME));
- IWorkbenchPage activePage = HandlerUtil.getActiveWorkbenchWindow(
- event).getActivePage();
- activePage.openEditor(editorInput, JcrArgeoUserEditor.ID);
- } catch (Exception e) {
- throw new ExecutionException("Cannot open editor", e);
- }
+ // try {
+ // ArgeoUserEditorInput editorInput = new ArgeoUserEditorInput(
+ // event.getParameter(PARAM_USERNAME));
+ // IWorkbenchPage activePage = HandlerUtil.getActiveWorkbenchWindow(
+ // event).getActivePage();
+ // activePage.openEditor(editorInput, JcrArgeoUserEditor.ID);
+ // } catch (Exception e) {
+ // throw new ExecutionException("Cannot open editor", e);
+ // }
return null;
}
}
*/
package org.argeo.security.ui.admin.commands;
-import java.util.Set;
-
-import javax.jcr.Node;
-import javax.jcr.NodeIterator;
import javax.jcr.Repository;
-import javax.jcr.RepositoryException;
-import javax.jcr.Session;
-import javax.jcr.query.Query;
-import org.argeo.ArgeoException;
-import org.argeo.jcr.ArgeoNames;
-import org.argeo.jcr.ArgeoTypes;
-import org.argeo.jcr.JcrUtils;
import org.argeo.security.UserAdminService;
-import org.argeo.security.ui.admin.views.JcrUsersView;
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.handlers.HandlerUtil;
/**
* Refreshes the main user list, removing nodes which are not referenced by user
private Repository repository;
public Object execute(ExecutionEvent event) throws ExecutionException {
- Set<String> users = userAdminService.listUsers();
- Session session = null;
- try {
- session = repository.login();
- Query query = session
- .getWorkspace()
- .getQueryManager()
- .createQuery(
- "select * from [" + ArgeoTypes.ARGEO_USER_HOME
- + "]", Query.JCR_SQL2);
- NodeIterator nit = query.execute().getNodes();
- while (nit.hasNext()) {
- Node node = nit.nextNode();
- String username = node.getProperty(ArgeoNames.ARGEO_USER_ID)
- .getString();
- if (!users.contains(username))
- node.remove();
- }
- session.save();
- } catch (RepositoryException e) {
- JcrUtils.discardQuietly(session);
- throw new ArgeoException("Cannot list users", e);
- } finally {
- JcrUtils.logoutQuietly(session);
- }
- userAdminService.synchronize();
-
- // FIXME try to refresh views that extend the JcrUsersView and have another
- // ID
- IWorkbenchPart part = HandlerUtil.getActiveWorkbenchWindow(event)
- .getActivePage().getActivePart();
- if (part instanceof JcrUsersView)
- ((JcrUsersView) part).refresh();
-
- // Try to refresh JcrUsersView if opened
- JcrUsersView view = (JcrUsersView) HandlerUtil
- .getActiveWorkbenchWindow(event).getActivePage()
- .findView(JcrUsersView.ID);
- if (view != null)
- view.refresh();
+ // Set<String> users = userAdminService.listUsers();
+ // Session session = null;
+ // try {
+ // session = repository.login();
+ // Query query = session
+ // .getWorkspace()
+ // .getQueryManager()
+ // .createQuery(
+ // "select * from [" + ArgeoTypes.ARGEO_USER_HOME
+ // + "]", Query.JCR_SQL2);
+ // NodeIterator nit = query.execute().getNodes();
+ // while (nit.hasNext()) {
+ // Node node = nit.nextNode();
+ // String username = node.getProperty(ArgeoNames.ARGEO_USER_ID)
+ // .getString();
+ // if (!users.contains(username))
+ // node.remove();
+ // }
+ // session.save();
+ // } catch (RepositoryException e) {
+ // JcrUtils.discardQuietly(session);
+ // throw new ArgeoException("Cannot list users", e);
+ // } finally {
+ // JcrUtils.logoutQuietly(session);
+ // }
+ // userAdminService.synchronize();
+ //
+ // // FIXME try to refresh views that extend the JcrUsersView and have
+ // another
+ // // ID
+ // IWorkbenchPart part = HandlerUtil.getActiveWorkbenchWindow(event)
+ // .getActivePage().getActivePart();
+ // if (part instanceof JcrUsersView)
+ // ((JcrUsersView) part).refresh();
+ //
+ // // Try to refresh JcrUsersView if opened
+ // JcrUsersView view = (JcrUsersView) HandlerUtil
+ // .getActiveWorkbenchWindow(event).getActivePage()
+ // .findView(JcrUsersView.ID);
+ // if (view != null)
+ // view.refresh();
return null;
}
import org.argeo.security.ui.admin.internal.UserTableViewer;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.forms.AbstractFormPart;
import org.eclipse.ui.forms.IManagedForm;
import org.eclipse.ui.forms.SectionPart;
final static String ID = "GroupEditor.mainPage";
private final UserEditor editor;
-
private UserAdmin userAdmin;
+ // Local configuration
+ private final int PRE_TITLE_INDENT = 10;
+
public GroupMainPage(FormEditor editor, UserAdmin userAdmin) {
super(editor, ID, "Main");
this.editor = (UserEditor) editor;
protected void createFormContent(final IManagedForm mf) {
try {
ScrolledForm form = mf.getForm();
- form.getBody().getParent().setLayoutData(EclipseUiUtils.fillAll());
- form.setExpandHorizontal(true);
- refreshFormTitle(form);
- // GridLayout mainLayout = new GridLayout(1, true);
- createGeneralPart(form.getBody());
+ refreshFormTitle();
+
+ // Body
+ Composite body = form.getBody();
+ GridLayout mainLayout = new GridLayout();
+ body.setLayout(mainLayout);
+ appendOverviewPart(body);
+ appendMembersPart(body);
} catch (RepositoryException e) {
throw new ArgeoException("Cannot create form content", e);
}
}
/** Creates the general section */
- protected void createGeneralPart(Composite parent)
+ protected void appendOverviewPart(Composite parent) {
+ FormToolkit tk = getManagedForm().getToolkit();
+ Composite body = addSection(tk, parent, "Main information");
+ GridLayout layout = new GridLayout(2, false);
+ body.setLayout(layout);
+
+ Text distinguishedName = createLT(body, "Group Name",
+ editor.getProperty(UserAdminConstants.KEY_UID));
+ distinguishedName.setEnabled(false);
+
+ final Text commonName = createLT(body, "Common Name",
+ editor.getProperty(UserAdminConstants.KEY_CN));
+ commonName.setEnabled(false);
+
+ // create form part (controller)
+ AbstractFormPart part = new SectionPart((Section) body.getParent()) {
+ public void commit(boolean onSave) {
+ super.commit(onSave);
+ }
+ };
+ getManagedForm().addPart(part);
+ }
+
+ /** Filtered table with members. Has drag & drop ability */
+ protected void appendMembersPart(Composite parent)
throws RepositoryException {
- parent.setLayout(new GridLayout());
FormToolkit tk = getManagedForm().getToolkit();
Section section = tk.createSection(parent, Section.TITLE_BAR);
section.setLayoutData(EclipseUiUtils.fillAll());
- section.setText("Members of "
+ section.setText("Members of group "
+ editor.getProperty(UserAdminConstants.KEY_CN));
// Composite body = tk.createComposite(section, SWT.NONE);
}
}
- private void refreshFormTitle(ScrolledForm form) throws RepositoryException {
- // form.setText(getProperty(Property.JCR_TITLE)
- // + (userProfile.getProperty(ARGEO_ENABLED).getBoolean() ? ""
- // : " [DISABLED]"));
+ private void refreshFormTitle() throws RepositoryException {
+ getManagedForm().getForm().setText(
+ editor.getProperty(UserAdminConstants.KEY_CN));
+ }
+
+ private Composite addSection(FormToolkit tk, Composite parent, String title) {
+ Section section = tk.createSection(parent, Section.TITLE_BAR);
+ GridData gd = EclipseUiUtils.fillWidth();
+ gd.verticalAlignment = PRE_TITLE_INDENT;
+ section.setLayoutData(gd);
+ section.setText(title);
+ Composite body = tk.createComposite(section, SWT.WRAP);
+ body.setLayoutData(EclipseUiUtils.fillAll());
+ section.setClient(body);
+ return body;
+ }
+
+ /** Creates label and text. */
+ protected Text createLT(Composite body, String label, String value) {
+ FormToolkit toolkit = getManagedForm().getToolkit();
+ Label lbl = toolkit.createLabel(body, label);
+ lbl.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false));
+ Text text = toolkit.createText(body, value, SWT.BORDER);
+ text.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
+ return text;
}
// private class FormPartML implements ModifyListener {
*/
package org.argeo.security.ui.admin.editors;
-import java.util.ArrayList;
-
-import javax.jcr.Node;
-import javax.jcr.Repository;
-import javax.jcr.RepositoryException;
-import javax.jcr.Session;
-
-import org.argeo.ArgeoException;
-import org.argeo.jcr.JcrUtils;
-import org.argeo.jcr.UserJcrUtils;
-import org.argeo.security.UserAdminService;
-import org.argeo.security.jcr.JcrUserDetails;
-import org.argeo.security.ui.admin.SecurityAdminPlugin;
-import org.argeo.security.ui.admin.views.JcrUsersView;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorSite;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.forms.editor.FormEditor;
-import org.springframework.security.core.GrantedAuthority;
-
-/** Editor for an Argeo user. */
-public class JcrArgeoUserEditor extends FormEditor {
- private static final long serialVersionUID = 1933296330339252869L;
-
- public final static String ID = SecurityAdminPlugin.PLUGIN_ID
- + ".adminArgeoUserEditor";
-
- /* DEPENDENCY INJECTION */
- private Session session;
- private UserAdminService userAdminService;
-
- // private Node userHome;
- private Node userProfile;
- private JcrUserDetails userDetails;
-
- public void init(IEditorSite site, IEditorInput input)
- throws PartInitException {
- super.init(site, input);
- String username = ((ArgeoUserEditorInput) getEditorInput())
- .getUsername();
- userProfile = UserJcrUtils.getUserProfile(session, username);
-
- if (userAdminService.userExists(username)) {
- try {
- userDetails = (JcrUserDetails) userAdminService
- .loadUserByUsername(username);
- } catch (Exception e) {
- throw new ArgeoException("Cannot retrieve userDetails for "
- + username, e);
- }
- } else {
- try {
- userDetails = new JcrUserDetails(session, username, null,
- new ArrayList<GrantedAuthority>());
- } catch (RepositoryException e) {
- throw new ArgeoException("Cannot retrieve disabled JCR profile");
- }
- }
-
- this.setPartProperty("name", username != null ? username : "<new user>");
- setPartName(username != null ? username : "<new user>");
- }
-
- protected void addPages() {
- try {
- addPage(new DefaultUserMainPage(this, userProfile));
- addPage(new UserRolesPage(this, userDetails, userAdminService));
- } catch (Exception e) {
- throw new ArgeoException("Cannot add pages", e);
- }
- }
-
- @Override
- public void doSave(IProgressMonitor monitor) {
- // list pages
- // TODO: make it more generic
- DefaultUserMainPage defaultUserMainPage = (DefaultUserMainPage) findPage(DefaultUserMainPage.ID);
- if (defaultUserMainPage.isDirty()) {
- defaultUserMainPage.doSave(monitor);
- String newPassword = defaultUserMainPage.getNewPassword();
- defaultUserMainPage.resetNewPassword();
- if (newPassword != null)
- userDetails = userDetails.cloneWithNewPassword(newPassword);
- }
-
- UserRolesPage userRolesPage = (UserRolesPage) findPage(UserRolesPage.ID);
- if (userRolesPage.isDirty()) {
- userRolesPage.doSave(monitor);
- userDetails = userDetails.cloneWithNewRoles(userRolesPage
- .getRoles());
- }
-
- userAdminService.updateUser(userDetails);
-
- // if (userAdminService.userExists(user.getUsername()))
- // userAdminService.updateUser(user);
- // else {
- // userAdminService.newUser(user);
- // setPartName(user.getUsername());
- // }
- firePropertyChange(PROP_DIRTY);
-
- userRolesPage.setUserDetails(userDetails);
-
- // FIXME rather use a refresh command. Fails when called by another
- // view.
- // refresh users view
- IWorkbench iw = SecurityAdminPlugin.getDefault().getWorkbench();
- JcrUsersView usersView = (JcrUsersView) iw.getActiveWorkbenchWindow()
- .getActivePage().findView(JcrUsersView.ID);
- if (usersView != null)
- usersView.refresh();
- }
-
-
-
- @Override
- public void doSaveAs() {
- }
-
- @Override
- public boolean isSaveAsAllowed() {
- return false;
- }
-
- public void refresh() {
- UserRolesPage userRolesPage = (UserRolesPage) findPage(UserRolesPage.ID);
- userRolesPage.refresh();
- }
-
- @Override
- public void dispose() {
- JcrUtils.logoutQuietly(session);
- super.dispose();
- }
-
- /* DEPENDENCY INJECTION */
- public void setUserAdminService(UserAdminService userAdminService) {
- this.userAdminService = userAdminService;
- }
-
- public void setRepository(Repository repository) {
- try {
- session = repository.login();
- } catch (RepositoryException re) {
- throw new ArgeoException("Unable to initialise local session", re);
- }
- }
-}
+public class JcrArgeoUserEditor{}
+/** Editor for an Argeo user. Legacy. TODO Remove*/
+// public class JcrArgeoUserEditor extends FormEditor {
+// private static final long serialVersionUID = 1933296330339252869L;
+//
+// public final static String ID = SecurityAdminPlugin.PLUGIN_ID
+// + ".adminArgeoUserEditor";
+//
+// /* DEPENDENCY INJECTION */
+// private Session session;
+// private UserAdminService userAdminService;
+//
+// // private Node userHome;
+// private Node userProfile;
+// private JcrUserDetails userDetails;
+//
+// public void init(IEditorSite site, IEditorInput input)
+// throws PartInitException {
+// super.init(site, input);
+// String username = ((ArgeoUserEditorInput) getEditorInput())
+// .getUsername();
+// userProfile = UserJcrUtils.getUserProfile(session, username);
+//
+// if (userAdminService.userExists(username)) {
+// try {
+// userDetails = (JcrUserDetails) userAdminService
+// .loadUserByUsername(username);
+// } catch (Exception e) {
+// throw new ArgeoException("Cannot retrieve userDetails for "
+// + username, e);
+// }
+// } else {
+// try {
+// userDetails = new JcrUserDetails(session, username, null,
+// new ArrayList<GrantedAuthority>());
+// } catch (RepositoryException e) {
+// throw new ArgeoException("Cannot retrieve disabled JCR profile");
+// }
+// }
+//
+// this.setPartProperty("name", username != null ? username : "<new user>");
+// setPartName(username != null ? username : "<new user>");
+// }
+//
+// protected void addPages() {
+// try {
+// addPage(new DefaultUserMainPage(this, userProfile));
+// addPage(new UserRolesPage(this, userDetails, userAdminService));
+// } catch (Exception e) {
+// throw new ArgeoException("Cannot add pages", e);
+// }
+// }
+//
+// @Override
+// public void doSave(IProgressMonitor monitor) {
+// // list pages
+// // TODO: make it more generic
+// DefaultUserMainPage defaultUserMainPage = (DefaultUserMainPage)
+// findPage(DefaultUserMainPage.ID);
+// if (defaultUserMainPage.isDirty()) {
+// defaultUserMainPage.doSave(monitor);
+// String newPassword = defaultUserMainPage.getNewPassword();
+// defaultUserMainPage.resetNewPassword();
+// if (newPassword != null)
+// userDetails = userDetails.cloneWithNewPassword(newPassword);
+// }
+//
+// UserRolesPage userRolesPage = (UserRolesPage) findPage(UserRolesPage.ID);
+// if (userRolesPage.isDirty()) {
+// userRolesPage.doSave(monitor);
+// userDetails = userDetails.cloneWithNewRoles(userRolesPage
+// .getRoles());
+// }
+//
+// userAdminService.updateUser(userDetails);
+//
+// // if (userAdminService.userExists(user.getUsername()))
+// // userAdminService.updateUser(user);
+// // else {
+// // userAdminService.newUser(user);
+// // setPartName(user.getUsername());
+// // }
+// firePropertyChange(PROP_DIRTY);
+//
+// userRolesPage.setUserDetails(userDetails);
+//
+// // FIXME rather use a refresh command. Fails when called by another
+// // view.
+// // refresh users view
+// IWorkbench iw = SecurityAdminPlugin.getDefault().getWorkbench();
+// JcrUsersView usersView = (JcrUsersView) iw.getActiveWorkbenchWindow()
+// .getActivePage().findView(JcrUsersView.ID);
+// if (usersView != null)
+// usersView.refresh();
+// }
+//
+//
+//
+// @Override
+// public void doSaveAs() {
+// }
+//
+// @Override
+// public boolean isSaveAsAllowed() {
+// return false;
+// }
+//
+// public void refresh() {
+// UserRolesPage userRolesPage = (UserRolesPage) findPage(UserRolesPage.ID);
+// userRolesPage.refresh();
+// }
+//
+// @Override
+// public void dispose() {
+// JcrUtils.logoutQuietly(session);
+// super.dispose();
+// }
+//
+// /* DEPENDENCY INJECTION */
+// public void setUserAdminService(UserAdminService userAdminService) {
+// this.userAdminService = userAdminService;
+// }
+//
+// public void setRepository(Repository repository) {
+// try {
+// session = repository.login();
+// } catch (RepositoryException re) {
+// throw new ArgeoException("Unable to initialise local session", re);
+// }
+// }
+// }
package org.argeo.security.ui.admin.editors;
import org.argeo.ArgeoException;
+import org.argeo.security.ui.admin.SecurityAdminImages;
import org.argeo.security.ui.admin.SecurityAdminPlugin;
import org.argeo.security.ui.admin.internal.UserAdminConstants;
import org.eclipse.core.runtime.IProgressMonitor;
// firePartPropertyChanged("icon", "icons/user.gif", "icons/users.gif");
// }
setPartName(commonName != null ? commonName : "username");
+ setTitleImage(user.getType() == Role.GROUP ? SecurityAdminImages.ICON_GROUP
+ : SecurityAdminImages.ICON_USER);
}
/** Exposes the user (or group) that is displayed by the current editor */
return user;
}
+ void updateEditorTitle(String title) {
+ setPartName(title);
+ }
+
protected void addPages() {
try {
if (user.getType() == Role.GROUP)
addPage(new GroupMainPage(this, userAdmin));
else
- addPage(new UserMainPage(this));
+ addPage(new UserMainPage(this, userAdmin));
} catch (Exception e) {
throw new ArgeoException("Cannot add pages", e);
*/
package org.argeo.security.ui.admin.editors;
+import java.util.ArrayList;
import java.util.Arrays;
-
-import javax.jcr.RepositoryException;
+import java.util.List;
import org.argeo.ArgeoException;
+import org.argeo.eclipse.ui.EclipseUiUtils;
import org.argeo.jcr.ArgeoNames;
+import org.argeo.security.ui.admin.internal.ColumnDefinition;
+import org.argeo.security.ui.admin.internal.CommonNameLP;
+import org.argeo.security.ui.admin.internal.RoleIconLP;
import org.argeo.security.ui.admin.internal.UserAdminConstants;
+import org.argeo.security.ui.admin.internal.UserNameLP;
+import org.argeo.security.ui.admin.internal.UserTableDefaultDClickListener;
+import org.argeo.security.ui.admin.internal.UserTableViewer;
+import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.ui.forms.widgets.FormToolkit;
import org.eclipse.ui.forms.widgets.ScrolledForm;
import org.eclipse.ui.forms.widgets.Section;
+import org.osgi.service.useradmin.User;
+import org.osgi.service.useradmin.UserAdmin;
/** Display/edit the properties common to all users */
public class UserMainPage extends FormPage implements ArgeoNames {
// private final static Log log = LogFactory.getLog(UserMainPage.class);
private final UserEditor editor;
+ private UserAdmin userAdmin;
+
private char[] newPassword;
- public UserMainPage(FormEditor editor) {
+ // Local configuration
+ private final int PRE_TITLE_INDENT = 10;
+
+ public UserMainPage(FormEditor editor, UserAdmin userAdmin) {
super(editor, ID, "Main");
this.editor = (UserEditor) editor;
+ this.userAdmin = userAdmin;
+ }
+
+ public String getNewPassword() {
+ if (newPassword != null)
+ return new String(newPassword);
+ else
+ return null;
+ }
+
+ public void resetNewPassword() {
+ if (newPassword != null)
+ Arrays.fill(newPassword, 'x');
+ newPassword = null;
}
protected void createFormContent(final IManagedForm mf) {
- try {
- ScrolledForm form = mf.getForm();
- refreshFormTitle(form);
- GridLayout mainLayout = new GridLayout(1, true);
- form.getBody().setLayout(mainLayout);
-
- createGeneralPart(form.getBody());
- // createPassworPart(form.getBody());
- } catch (RepositoryException e) {
- throw new ArgeoException("Cannot create form content", e);
- }
+ ScrolledForm form = mf.getForm();
+ // Form page main title
+ form.setText(editor.getProperty(UserAdminConstants.KEY_CN));
+
+ // Body
+ Composite body = form.getBody();
+ GridLayout mainLayout = new GridLayout(1, true);
+ body.setLayout(mainLayout);
+ appendOverviewPart(body);
+ appendPasswordPart(body);
+ appendMemberOfPart(body);
}
/** Creates the general section */
- protected void createGeneralPart(Composite parent)
- throws RepositoryException {
+ protected void appendOverviewPart(Composite parent) {
FormToolkit tk = getManagedForm().getToolkit();
- Section section = tk.createSection(parent, Section.TITLE_BAR);
- section.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
- section.setText("General");
- Composite body = tk.createComposite(section, SWT.WRAP);
- section.setClient(body);
- GridLayout layout = new GridLayout(2, false);
- body.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
- body.setLayout(layout);
+ Composite body = addSection(tk, parent, "Main information");
+ body.setLayout(new GridLayout(2, false));
+
+ Text distinguishedName = createLT(body, "User Name",
+ editor.getProperty(UserAdminConstants.KEY_UID));
+ distinguishedName.setEnabled(false);
final Text commonName = createLT(body, "Common Name",
editor.getProperty(UserAdminConstants.KEY_CN));
commonName.setEnabled(false);
- // final Text firstName = createLT(body, "First name",
- // getProperty(ARGEO_FIRST_NAME));
- // final Text lastName = createLT(body, "Last name",
- // getProperty(ARGEO_LAST_NAME));
+ final Text firstName = createLT(body, "First name",
+ editor.getProperty(UserAdminConstants.KEY_FIRSTNAME));
+
+ final Text lastName = createLT(body, "Last name",
+ editor.getProperty(UserAdminConstants.KEY_LASTNAME));
+
final Text email = createLT(body, "Email",
editor.getProperty(UserAdminConstants.KEY_MAIL));
- // final Text description = createLMT(body, "Description",
- // getProperty(Property.JCR_DESCRIPTION));
// create form part (controller)
- AbstractFormPart part = new SectionPart(section) {
+ AbstractFormPart part = new SectionPart((Section) body.getParent()) {
public void commit(boolean onSave) {
+ // TODO check changed ?
+ // TODO Sanity checks
+
+ editor.setProperty(UserAdminConstants.KEY_FIRSTNAME,
+ firstName.getText());
+ editor.setProperty(UserAdminConstants.KEY_LASTNAME,
+ lastName.getText());
+ editor.setProperty(UserAdminConstants.KEY_CN,
+ commonName.getText());
// TODO check mail validity
editor.setProperty(UserAdminConstants.KEY_MAIL, email.getText());
- // userProfile.getSession().getWorkspace().getVersionManager()
- // .checkout(userProfile.getPath());
- // userProfile.setProperty(Property.JCR_TITLE,
- // commonName.getText());
- // userProfile.setProperty(ARGEO_FIRST_NAME,
- // firstName.getText());
- // userProfile
- // .setProperty(ARGEO_LAST_NAME, lastName.getText());
- // userProfile.setProperty(ARGEO_PRIMARY_EMAIL,
+ // Enable common name ?
+ // editor.setProperty(UserAdminConstants.KEY_CN,
// email.getText());
- // userProfile.setProperty(Property.JCR_DESCRIPTION,
- // description.getText());
- // userProfile.getSession().save();
- // userProfile.getSession().getWorkspace().getVersionManager()
- // .checkin(userProfile.getPath());
super.commit(onSave);
}
};
- // if (username != null)
- // username.addModifyListener(new FormPartML(part));
- // commonName.addModifyListener(new FormPartML(part));
- // firstName.addModifyListener(new FormPartML(part));
- // lastName.addModifyListener(new FormPartML(part));
+ ModifyListener cnML = new ModifyListener() {
+ private static final long serialVersionUID = 4298649222869835486L;
+
+ @Override
+ public void modifyText(ModifyEvent event) {
+ String first = firstName.getText();
+ String last = lastName.getText();
+ String cn = first.trim() + " " + last.trim() + " ";
+ cn = cn.trim();
+ commonName.setText(cn);
+ getManagedForm().getForm().setText(cn);
+ editor.updateEditorTitle(cn);
+ }
+ };
+ firstName.addModifyListener(cnML);
+ lastName.addModifyListener(cnML);
+ firstName.addModifyListener(new FormPartML(part));
+ lastName.addModifyListener(new FormPartML(part));
email.addModifyListener(new FormPartML(part));
getManagedForm().addPart(part);
}
- private void refreshFormTitle(ScrolledForm form) throws RepositoryException {
- // form.setText(getProperty(Property.JCR_TITLE)
- // + (userProfile.getProperty(ARGEO_ENABLED).getBoolean() ? ""
- // : " [DISABLED]"));
+ /** Creates the password section */
+ protected void appendPasswordPart(Composite parent) {
+ FormToolkit tk = getManagedForm().getToolkit();
+ Composite body = addSection(tk, parent, "Password");
+
+ // Section section = tk.createSection(parent, Section.TITLE_BAR);
+ // section.setLayoutData(EclipseUiUtils.fillWidth());
+ // section.setText("Password");
+ // Composite body = tk.createComposite(section, SWT.NO_FOCUS);
+ // section.setClient(body);
+ // body.setLayoutData(EclipseUiUtils.fillWidth());
+
+ body.setLayout(new GridLayout(2, false));
+ // add widgets (view)
+ final Text password1 = createLP(body, "New password", "");
+ final Text password2 = createLP(body, "Repeat password", "");
+ // create form part (controller)
+ AbstractFormPart part = new SectionPart((Section) body.getParent()) {
+
+ public void commit(boolean onSave) {
+ if (!password1.getText().equals("")
+ || !password2.getText().equals("")) {
+ if (password1.getText().equals(password2.getText())) {
+ newPassword = password1.getText().toCharArray();
+ // TODO real set password
+ password1.setText("");
+ password2.setText("");
+ super.commit(onSave);
+ } else {
+ password1.setText("");
+ password2.setText("");
+ throw new ArgeoException("Passwords are not equals");
+ }
+ }
+ }
+
+ };
+ password1.addModifyListener(new FormPartML(part));
+ password2.addModifyListener(new FormPartML(part));
+ getManagedForm().addPart(part);
}
- // /** @return the property, or the empty string if not set */
- // protected String getProperty(String name) throws RepositoryException {
- // return userProfile.hasProperty(name) ? userProfile.getProperty(name)
- // .getString() : "";
- // }
+ private UserTableViewer userTableViewerCmp;
+ private TableViewer userViewer;
- /** Creates the password section */
- // protected void createPassworPart(Composite parent) {
- // FormToolkit tk = getManagedForm().getToolkit();
- // Section section = tk.createSection(parent, Section.TITLE_BAR);
- // section.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
- // section.setText("Password");
- //
- // Composite body = tk.createComposite(section, SWT.WRAP);
- // section.setClient(body);
- // GridLayout layout = new GridLayout(2, false);
- // body.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
- // body.setLayout(layout);
- //
- // // add widgets (view)
- // final Text password1 = createLP(body, "New password", "");
- // final Text password2 = createLP(body, "Repeat password", "");
- // // create form part (controller)
- // AbstractFormPart part = new SectionPart(section) {
- //
- // public void commit(boolean onSave) {
- // if (!password1.getText().equals("")
- // || !password2.getText().equals("")) {
- // if (password1.getText().equals(password2.getText())) {
- // newPassword = password1.getText().toCharArray();
- // password1.setText("");
- // password2.setText("");
- // super.commit(onSave);
- // } else {
- // password1.setText("");
- // password2.setText("");
- // throw new ArgeoException("Passwords are not equals");
- // }
- // }
- // }
- //
- // };
- // password1.addModifyListener(new FormPartML(part));
- // password2.addModifyListener(new FormPartML(part));
- // getManagedForm().addPart(part);
- // }
+ public void appendMemberOfPart(Composite parent) {
+ FormToolkit tk = getManagedForm().getToolkit();
+ Composite body = addSection(tk, parent, "Groups");
+ body.setLayout(EclipseUiUtils.noSpaceGridLayout());
- /** Creates label and text. */
- protected Text createLT(Composite body, String label, String value) {
- FormToolkit toolkit = getManagedForm().getToolkit();
- Label lbl = toolkit.createLabel(body, label);
- lbl.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false));
- Text text = toolkit.createText(body, value, SWT.BORDER);
- text.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
- return text;
+ // Define the displayed columns
+ List<ColumnDefinition> columnDefs = new ArrayList<ColumnDefinition>();
+ columnDefs.add(new ColumnDefinition(new RoleIconLP(), "", 0, 24));
+ columnDefs.add(new ColumnDefinition(new UserNameLP(),
+ "Distinguished Name", 240));
+ columnDefs.add(new ColumnDefinition(new CommonNameLP(), "Common Name",
+ 150));
+
+ // Create and configure the table
+ userTableViewerCmp = new MyUserTableViewer(body, SWT.MULTI
+ | SWT.H_SCROLL | SWT.V_SCROLL, userAdmin);
+
+ userTableViewerCmp.setColumnDefinitions(columnDefs);
+ userTableViewerCmp.populate(true, false);
+ GridData gd = EclipseUiUtils.fillAll();
+ gd.heightHint = 300;
+ userTableViewerCmp.setLayoutData(gd);
+
+ // Links
+ userViewer = userTableViewerCmp.getTableViewer();
+ userViewer.addDoubleClickListener(new UserTableDefaultDClickListener());
+ // Really?
+ userTableViewerCmp.refresh();
+ }
+
+ private class MyUserTableViewer extends UserTableViewer {
+ private static final long serialVersionUID = 8467999509931900367L;
+
+ public MyUserTableViewer(Composite parent, int style,
+ UserAdmin userAdmin) {
+ super(parent, style, userAdmin, true);
+ }
+
+ @Override
+ protected List<User> listFilteredElements(String filter) {
+ List<User> users = new ArrayList<User>();
+
+ // "member of" method?
+ // Group group = (Group) editor.getDisplayedUser();
+ // Role[] roles = group.getMembers();
+ // List<User> users = new ArrayList<User>();
+ // for (Role role : roles)
+ // // if (role.getType() == Role.GROUP)
+ // users.add((User) role);
+ // return users;
+ return users;
+ }
+ }
+
+ private Composite addSection(FormToolkit tk, Composite parent, String title) {
+ Section section = tk.createSection(parent, Section.TITLE_BAR);
+ GridData gd = EclipseUiUtils.fillWidth();
+ gd.verticalAlignment = PRE_TITLE_INDENT;
+ section.setLayoutData(gd);
+ section.setText(title);
+ Composite body = tk.createComposite(section, SWT.WRAP);
+ body.setLayoutData(EclipseUiUtils.fillAll());
+ section.setClient(body);
+ return body;
}
/** Creates label and multiline text. */
return text;
}
+ /** Creates label and text. */
+ protected Text createLT(Composite body, String label, String value) {
+ FormToolkit toolkit = getManagedForm().getToolkit();
+ Label lbl = toolkit.createLabel(body, label);
+ lbl.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false));
+ Text text = toolkit.createText(body, value, SWT.BORDER);
+ text.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
+ return text;
+ }
+
private class FormPartML implements ModifyListener {
private static final long serialVersionUID = 6299808129505381333L;
private AbstractFormPart formPart;
public void modifyText(ModifyEvent e) {
formPart.markDirty();
}
-
- }
-
- public String getNewPassword() {
- if (newPassword != null)
- return new String(newPassword);
- else
- return null;
- }
-
- public void resetNewPassword() {
- if (newPassword != null)
- Arrays.fill(newPassword, 'x');
- newPassword = null;
}
}
\ No newline at end of file
public final static String KEY_UID = "uid";
public final static String KEY_CN = "cn";
+ public final static String KEY_FIRSTNAME = "givenname";
+ public final static String KEY_LASTNAME = "sn";
public final static String KEY_MAIL = "mail";
}
*/
package org.argeo.security.ui.admin.views;
-import org.argeo.ArgeoException;
-import org.argeo.security.UserAdminService;
-import org.argeo.security.ui.admin.SecurityAdminPlugin;
-import org.argeo.security.ui.admin.commands.AddRole;
-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.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.handlers.IHandlerService;
-import org.eclipse.ui.part.ViewPart;
-
-/** List all roles. */
-public class JcrRolesView extends ViewPart {
- public final static String ID = SecurityAdminPlugin.PLUGIN_ID
- + ".jcrRolesView";
-
- private Text newRole;
-
- private TableViewer viewer;
- private UserAdminService userAdminService;
-
- private String addNewRoleText = "<add new role here>";
-
- @Override
- public void createPartControl(Composite parent) {
- parent.setLayout(new GridLayout(1, false));
-
- // new role text field
- newRole = new Text(parent, SWT.BORDER);
- newRole.setText(addNewRoleText);
- newRole.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
- // default action is add role
- newRole.addListener(SWT.DefaultSelection, new Listener() {
- private static final long serialVersionUID = -2367261849260929505L;
-
- public void handleEvent(Event evt) {
- IWorkbench iw = SecurityAdminPlugin.getDefault().getWorkbench();
- IHandlerService handlerService = (IHandlerService) iw
- .getService(IHandlerService.class);
- try {
- handlerService.executeCommand(AddRole.COMMAND_ID, evt);
- } catch (Exception e) {
- throw new ArgeoException("Cannot execute add role command",
- e);
- }
- }
- });
- // select all on focus
- newRole.addListener(SWT.FocusIn, new Listener() {
- private static final long serialVersionUID = 2612811281477034356L;
-
- public void handleEvent(Event e) {
- newRole.selectAll();
- }
- });
-
- // roles table
- Table table = new Table(parent, SWT.V_SCROLL | SWT.BORDER);
- table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
- table.setLinesVisible(false);
- table.setHeaderVisible(false);
- viewer = new TableViewer(table);
- viewer.setContentProvider(new RolesContentProvider());
- viewer.setLabelProvider(new UsersLabelProvider());
- getViewSite().setSelectionProvider(viewer);
- viewer.setInput(getViewSite());
- }
-
- @Override
- public void setFocus() {
- viewer.getTable().setFocus();
- }
-
- public void setUserAdminService(UserAdminService userAdminService) {
- this.userAdminService = userAdminService;
- }
-
- public String getAddNewRoleText() {
- return addNewRoleText;
- }
-
- private class RolesContentProvider implements IStructuredContentProvider {
- private static final long serialVersionUID = 7446442682717419289L;
-
- public Object[] getElements(Object inputElement) {
- return userAdminService.listEditableRoles().toArray();
- }
-
- public void dispose() {
- }
-
- public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
- }
-
- }
-
- private class UsersLabelProvider extends LabelProvider implements
- ITableLabelProvider {
- private static final long serialVersionUID = -1886204791002421430L;
-
- public String getColumnText(Object element, int columnIndex) {
- return element.toString();
- }
-
- public Image getColumnImage(Object element, int columnIndex) {
- return null;
- }
-
- }
-
- public String getNewRole() {
- return newRole.getText();
- }
-
- public void refresh() {
- viewer.refresh();
- newRole.setText(addNewRoleText);
- }
+public class JcrRolesView {
}
+
+/** List all roles. Legacy. TODO Remove */
+// public class JcrRolesView extends ViewPart {
+// public final static String ID = SecurityAdminPlugin.PLUGIN_ID
+// + ".jcrRolesView";
+//
+// private Text newRole;
+//
+// private TableViewer viewer;
+// private UserAdminService userAdminService;
+//
+// private String addNewRoleText = "<add new role here>";
+//
+// @Override
+// public void createPartControl(Composite parent) {
+// parent.setLayout(new GridLayout(1, false));
+//
+// // new role text field
+// newRole = new Text(parent, SWT.BORDER);
+// newRole.setText(addNewRoleText);
+// newRole.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
+// // default action is add role
+// newRole.addListener(SWT.DefaultSelection, new Listener() {
+// private static final long serialVersionUID = -2367261849260929505L;
+//
+// public void handleEvent(Event evt) {
+// IWorkbench iw = SecurityAdminPlugin.getDefault().getWorkbench();
+// IHandlerService handlerService = (IHandlerService) iw
+// .getService(IHandlerService.class);
+// try {
+// handlerService.executeCommand(AddRole.COMMAND_ID, evt);
+// } catch (Exception e) {
+// throw new ArgeoException("Cannot execute add role command",
+// e);
+// }
+// }
+// });
+// // select all on focus
+// newRole.addListener(SWT.FocusIn, new Listener() {
+// private static final long serialVersionUID = 2612811281477034356L;
+//
+// public void handleEvent(Event e) {
+// newRole.selectAll();
+// }
+// });
+//
+// // roles table
+// Table table = new Table(parent, SWT.V_SCROLL | SWT.BORDER);
+// table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+// table.setLinesVisible(false);
+// table.setHeaderVisible(false);
+// viewer = new TableViewer(table);
+// viewer.setContentProvider(new RolesContentProvider());
+// viewer.setLabelProvider(new UsersLabelProvider());
+// getViewSite().setSelectionProvider(viewer);
+// viewer.setInput(getViewSite());
+// }
+//
+// @Override
+// public void setFocus() {
+// viewer.getTable().setFocus();
+// }
+//
+// public void setUserAdminService(UserAdminService userAdminService) {
+// this.userAdminService = userAdminService;
+// }
+//
+// public String getAddNewRoleText() {
+// return addNewRoleText;
+// }
+//
+// private class RolesContentProvider implements IStructuredContentProvider {
+// private static final long serialVersionUID = 7446442682717419289L;
+//
+// public Object[] getElements(Object inputElement) {
+// return userAdminService.listEditableRoles().toArray();
+// }
+//
+// public void dispose() {
+// }
+//
+// public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+// }
+//
+// }
+//
+// private class UsersLabelProvider extends LabelProvider implements
+// ITableLabelProvider {
+// private static final long serialVersionUID = -1886204791002421430L;
+//
+// public String getColumnText(Object element, int columnIndex) {
+// return element.toString();
+// }
+//
+// public Image getColumnImage(Object element, int columnIndex) {
+// return null;
+// }
+//
+// }
+//
+// public String getNewRole() {
+// return newRole.getText();
+// }
+//
+// public void refresh() {
+// viewer.refresh();
+// newRole.setText(addNewRoleText);
+// }
+// }
*/
package org.argeo.security.ui.admin.views;
-import javax.jcr.Node;
-import javax.jcr.Repository;
-import javax.jcr.RepositoryException;
-import javax.jcr.Session;
-import javax.jcr.observation.Event;
-import javax.jcr.observation.EventIterator;
-import javax.jcr.observation.EventListener;
-
-import org.argeo.ArgeoException;
-import org.argeo.eclipse.ui.parts.UsersTable;
-import org.argeo.eclipse.ui.workbench.CommandUtils;
-import org.argeo.jcr.ArgeoJcrConstants;
-import org.argeo.jcr.ArgeoNames;
-import org.argeo.jcr.ArgeoTypes;
-import org.argeo.jcr.JcrUtils;
-import org.argeo.security.ui.admin.SecurityAdminPlugin;
-import org.argeo.security.ui.admin.commands.OpenArgeoUserEditor;
-import org.eclipse.jface.viewers.DoubleClickEvent;
-import org.eclipse.jface.viewers.IDoubleClickListener;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.FillLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.part.ViewPart;
-
-/** List all users with filter. */
-public class JcrUsersView extends ViewPart implements ArgeoNames {
- public final static String ID = SecurityAdminPlugin.PLUGIN_ID
- + ".jcrUsersView";
-
- /* DEPENDENCY INJECTION */
- private Session session;
-
- private UsersTable userTableCmp;
- private JcrUserListener userStructureListener;
- private JcrUserListener userPropertiesListener;
-
- @Override
- public void createPartControl(Composite parent) {
- parent.setLayout(new FillLayout());
-
- // Create the composite that displays the list and a filter
- userTableCmp = new UsersTable(parent, SWT.NO_FOCUS, session);
- userTableCmp.populate(true, false);
-
- // Configure
- userTableCmp.getTableViewer().addDoubleClickListener(
- new ViewDoubleClickListener());
- getViewSite().setSelectionProvider(userTableCmp.getTableViewer());
-
- // Add listener to refresh the list when something changes
- userStructureListener = new JcrUserListener(getSite().getShell()
- .getDisplay());
- JcrUtils.addListener(session, userStructureListener, Event.NODE_ADDED
- | Event.NODE_REMOVED, ArgeoJcrConstants.PEOPLE_BASE_PATH, null);
- userPropertiesListener = new JcrUserListener(getSite().getShell()
- .getDisplay());
- JcrUtils.addListener(session, userStructureListener,
- Event.PROPERTY_CHANGED | Event.PROPERTY_ADDED
- | Event.PROPERTY_REMOVED,
- ArgeoJcrConstants.PEOPLE_BASE_PATH,
- ArgeoTypes.ARGEO_USER_PROFILE);
- }
-
- @Override
- public void setFocus() {
- userTableCmp.setFocus();
- }
-
- @Override
- public void dispose() {
- JcrUtils.removeListenerQuietly(session, userStructureListener);
- JcrUtils.removeListenerQuietly(session, userPropertiesListener);
- JcrUtils.logoutQuietly(session);
- super.dispose();
- }
-
- // public void setSession(Session session) {
- // this.session = session;
- // }
-
- public void refresh() {
- this.getSite().getShell().getDisplay().asyncExec(new Runnable() {
- @Override
- public void run() {
- userTableCmp.refresh();
- }
- });
- }
-
- private class JcrUserListener implements EventListener {
- private final Display display;
-
- public JcrUserListener(Display display) {
- super();
- this.display = display;
- }
-
- @Override
- public void onEvent(EventIterator events) {
- display.asyncExec(new Runnable() {
- @Override
- public void run() {
- userTableCmp.refresh();
- }
- });
- }
- }
-
- class ViewDoubleClickListener implements IDoubleClickListener {
- public void doubleClick(DoubleClickEvent evt) {
- if (evt.getSelection().isEmpty())
- return;
-
- Object obj = ((IStructuredSelection) evt.getSelection())
- .getFirstElement();
- if (obj instanceof Node) {
- try {
- String username = ((Node) obj).getProperty(ARGEO_USER_ID)
- .getString();
- String commandId = OpenArgeoUserEditor.COMMAND_ID;
- String paramName = OpenArgeoUserEditor.PARAM_USERNAME;
- CommandUtils.callCommand(commandId, paramName, username);
- } catch (RepositoryException e) {
- throw new ArgeoException("Cannot open user editor", e);
- }
- }
- }
- }
-
- /* DEPENDENCY INJECTION */
- public void setRepository(Repository repository) {
- try {
- session = repository.login();
- } catch (RepositoryException re) {
- throw new ArgeoException("Unable to initialise local session", re);
- }
- }
-}
\ No newline at end of file
+public class JcrUsersView {
+}
+/** List all users with filter. Legacy. TODO Remove */
+// public class JcrUsersView extends ViewPart implements ArgeoNames {
+// public final static String ID = SecurityAdminPlugin.PLUGIN_ID
+// + ".jcrUsersView";
+//
+// /* DEPENDENCY INJECTION */
+// private Session session;
+//
+// private UsersTable userTableCmp;
+// private JcrUserListener userStructureListener;
+// private JcrUserListener userPropertiesListener;
+//
+// @Override
+// public void createPartControl(Composite parent) {
+// parent.setLayout(new FillLayout());
+//
+// // Create the composite that displays the list and a filter
+// userTableCmp = new UsersTable(parent, SWT.NO_FOCUS, session);
+// userTableCmp.populate(true, false);
+//
+// // Configure
+// userTableCmp.getTableViewer().addDoubleClickListener(
+// new ViewDoubleClickListener());
+// getViewSite().setSelectionProvider(userTableCmp.getTableViewer());
+//
+// // Add listener to refresh the list when something changes
+// userStructureListener = new JcrUserListener(getSite().getShell()
+// .getDisplay());
+// JcrUtils.addListener(session, userStructureListener, Event.NODE_ADDED
+// | Event.NODE_REMOVED, ArgeoJcrConstants.PEOPLE_BASE_PATH, null);
+// userPropertiesListener = new JcrUserListener(getSite().getShell()
+// .getDisplay());
+// JcrUtils.addListener(session, userStructureListener,
+// Event.PROPERTY_CHANGED | Event.PROPERTY_ADDED
+// | Event.PROPERTY_REMOVED,
+// ArgeoJcrConstants.PEOPLE_BASE_PATH,
+// ArgeoTypes.ARGEO_USER_PROFILE);
+// }
+//
+// @Override
+// public void setFocus() {
+// userTableCmp.setFocus();
+// }
+//
+// @Override
+// public void dispose() {
+// JcrUtils.removeListenerQuietly(session, userStructureListener);
+// JcrUtils.removeListenerQuietly(session, userPropertiesListener);
+// JcrUtils.logoutQuietly(session);
+// super.dispose();
+// }
+//
+// // public void setSession(Session session) {
+// // this.session = session;
+// // }
+//
+// public void refresh() {
+// this.getSite().getShell().getDisplay().asyncExec(new Runnable() {
+// @Override
+// public void run() {
+// userTableCmp.refresh();
+// }
+// });
+// }
+//
+// private class JcrUserListener implements EventListener {
+// private final Display display;
+//
+// public JcrUserListener(Display display) {
+// super();
+// this.display = display;
+// }
+//
+// @Override
+// public void onEvent(EventIterator events) {
+// display.asyncExec(new Runnable() {
+// @Override
+// public void run() {
+// userTableCmp.refresh();
+// }
+// });
+// }
+// }
+//
+// class ViewDoubleClickListener implements IDoubleClickListener {
+// public void doubleClick(DoubleClickEvent evt) {
+// if (evt.getSelection().isEmpty())
+// return;
+//
+// Object obj = ((IStructuredSelection) evt.getSelection())
+// .getFirstElement();
+// if (obj instanceof Node) {
+// try {
+// String username = ((Node) obj).getProperty(ARGEO_USER_ID)
+// .getString();
+// String commandId = OpenArgeoUserEditor.COMMAND_ID;
+// String paramName = OpenArgeoUserEditor.PARAM_USERNAME;
+// CommandUtils.callCommand(commandId, paramName, username);
+// } catch (RepositoryException e) {
+// throw new ArgeoException("Cannot open user editor", e);
+// }
+// }
+// }
+// }
+//
+// /* DEPENDENCY INJECTION */
+// public void setRepository(Repository repository) {
+// try {
+// session = repository.login();
+// } catch (RepositoryException re) {
+// throw new ArgeoException("Unable to initialise local session", re);
+// }
+// }
+// }
\ No newline at end of file