X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;ds=sidebyside;f=org.argeo.cms.e4%2Fsrc%2Forg%2Fargeo%2Fcms%2Fe4%2Fusers%2Fhandlers%2FDeleteUsers.java;h=d1afd22102049ededf8f38b15355b718a6b7e3f1;hb=b71546ddc74d6ca49d252806aafd491c75dfe1fb;hp=4a9417c9ef99f7bc4750aa35f7dc67dfa335f54b;hpb=d6390257a328199a2a4a677b33e79b6535175169;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms.e4/src/org/argeo/cms/e4/users/handlers/DeleteUsers.java b/org.argeo.cms.e4/src/org/argeo/cms/e4/users/handlers/DeleteUsers.java index 4a9417c9e..d1afd2210 100644 --- a/org.argeo.cms.e4/src/org/argeo/cms/e4/users/handlers/DeleteUsers.java +++ b/org.argeo.cms.e4/src/org/argeo/cms/e4/users/handlers/DeleteUsers.java @@ -1,32 +1,19 @@ -/* - * 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.cms.e4.users.handlers; -import java.util.ArrayList; -import java.util.Iterator; import java.util.List; import javax.inject.Inject; +import javax.inject.Named; +import org.argeo.cms.auth.UserAdminUtils; import org.argeo.cms.e4.users.UserAdminWrapper; -import org.argeo.cms.util.UserAdminUtils; +import org.argeo.cms.e4.users.UsersView; +import org.eclipse.e4.core.di.annotations.CanExecute; import org.eclipse.e4.core.di.annotations.Execute; +import org.eclipse.e4.ui.model.application.ui.basic.MPart; +import org.eclipse.e4.ui.services.IServiceConstants; +import org.eclipse.e4.ui.workbench.modeling.ESelectionService; import org.eclipse.jface.dialogs.MessageDialog; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.swt.widgets.Display; import org.osgi.service.useradmin.User; import org.osgi.service.useradmin.UserAdmin; @@ -42,37 +29,41 @@ public class DeleteUsers { @SuppressWarnings("unchecked") @Execute - public Object execute() { - ISelection selection = null;// HandlerUtil.getCurrentSelection(event); - if (selection.isEmpty()) - return null; + public void execute(@Named(IServiceConstants.ACTIVE_PART) MPart part, ESelectionService selectionService) { + // ISelection selection = null;// HandlerUtil.getCurrentSelection(event); + // if (selection.isEmpty()) + // return null; + List selection = (List) selectionService.getSelection(); + if (selection == null) + return; - Iterator it = ((IStructuredSelection) selection).iterator(); - List users = new ArrayList(); +// Iterator it = ((IStructuredSelection) selection).iterator(); +// List users = new ArrayList(); StringBuilder builder = new StringBuilder(); - while (it.hasNext()) { - User currUser = it.next(); + for(User user:selection) { + User currUser = user; +// User currUser = it.next(); String userName = UserAdminUtils.getUserLocalId(currUser.getName()); if (UserAdminUtils.isCurrentUser(currUser)) { MessageDialog.openError(Display.getCurrent().getActiveShell(), "Deletion forbidden", "You cannot delete your own user this way."); - return null; + return; } builder.append(userName).append("; "); - users.add(currUser); +// users.add(currUser); } if (!MessageDialog.openQuestion(Display.getCurrent().getActiveShell(), "Delete Users", "Are you sure that you want to delete these users?\n" + builder.substring(0, builder.length() - 2))) - return null; + return; userAdminWrapper.beginTransactionIfNeeded(); UserAdmin userAdmin = userAdminWrapper.getUserAdmin(); // IWorkbenchPage iwp = // HandlerUtil.getActiveWorkbenchWindow(event).getActivePage(); - for (User user : users) { + for (User user : selection) { String userName = user.getName(); // TODO find a way to close the editor cleanly if opened. Cannot be // done through the UserAdminListeners, it causes a @@ -85,14 +76,13 @@ public class DeleteUsers { } userAdminWrapper.commitOrNotifyTransactionStateChange(); - for (User user : users) { + for (User user : selection) { userAdminWrapper.notifyListeners(new UserAdminEvent(null, UserAdminEvent.ROLE_REMOVED, user)); } - return null; } - /* DEPENDENCY INJECTION */ - public void setUserAdminWrapper(UserAdminWrapper userAdminWrapper) { - this.userAdminWrapper = userAdminWrapper; + @CanExecute + public boolean canExecute(@Named(IServiceConstants.ACTIVE_PART) MPart part, ESelectionService selectionService) { + return part.getObject() instanceof UsersView && selectionService.getSelection() != null; } }