+++ /dev/null
-/*
- * Copyright (C) 2007-2012 Argeo GmbH
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-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.utils.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.UserTableComposite;
-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 UsersView extends ViewPart implements ArgeoNames {
- public final static String ID = SecurityAdminPlugin.PLUGIN_ID
- + ".adminUsersView";
-
- /* DEPENDENCY INJECTION */
- private Session session;
-
- private UserTableComposite 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 UserTableComposite(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