/* * Copyright (c) 2013, 2016 Eike Stepper (Berlin, Germany) and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Christian W. Damus (CEA LIST) - initial API and implementation */ package org.eclipse.emf.cdo.security.internal.ui.editor; import org.eclipse.emf.cdo.security.SecurityPackage; import org.eclipse.emf.cdo.security.User; import org.eclipse.emf.cdo.security.internal.ui.messages.Messages; import org.eclipse.emf.cdo.view.CDOView; import org.eclipse.emf.common.notify.AdapterFactory; import org.eclipse.emf.edit.domain.EditingDomain; import org.eclipse.emf.spi.cdo.InternalCDOSession; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.jobs.Job; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.ui.forms.widgets.FormToolkit; /** * Details page for selected {@link User} master objects. * * @author Christian W. Damus (CEA LIST) */ public class UserDetailsPage extends AbstractDetailsPage<User> { public UserDetailsPage(EditingDomain domain, AdapterFactory adapterFactory) { super(User.class, SecurityPackage.Literals.USER, domain, adapterFactory); } @Override protected void createContents(Composite parent, FormToolkit toolkit) { super.createContents(parent, toolkit); text(parent, toolkit, Messages.UserDetailsPage_0, SecurityPackage.Literals.ASSIGNEE__ID); text(parent, toolkit, Messages.UserDetailsPage_1, SecurityPackage.Literals.USER__FIRST_NAME); text(parent, toolkit, Messages.UserDetailsPage_2, SecurityPackage.Literals.USER__LAST_NAME); text(parent, toolkit, Messages.UserDetailsPage_4, SecurityPackage.Literals.USER__EMAIL); text(parent, toolkit, Messages.UserDetailsPage_3, SecurityPackage.Literals.USER__LABEL); space(parent, toolkit); checkbox(parent, toolkit, Messages.UserDetailsPage_5, SecurityPackage.Literals.USER__LOCKED); button(parent, toolkit, Messages.UserDetailsPage_9, new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { resetPassword(getInput()); } }); space(parent, toolkit); Control accessOverrideControl = combo(parent, toolkit, Messages.UserDetailsPage_6, SecurityPackage.Literals.USER__DEFAULT_ACCESS_OVERRIDE).getControl(); accessOverrideControl.setToolTipText(Messages.UserDetailsPage_10); space(parent, toolkit); oneToMany(parent, toolkit, Messages.UserDetailsPage_7, SecurityPackage.Literals.USER__GROUPS); oneToMany(parent, toolkit, Messages.UserDetailsPage_8, SecurityPackage.Literals.ASSIGNEE__ROLES); } private void resetPassword(final User user) { new Job(Messages.UserDetailsPage_9) { @Override public IStatus run(IProgressMonitor monitor) { CDOView view = user.cdoView(); if (!view.isClosed()) { InternalCDOSession session = (InternalCDOSession)view.getSession(); if (!session.isClosed()) { session.resetCredentials(user.getId()); } } return Status.OK_STATUS; } }.schedule(); } }