Remove old license headers
[lgpl/argeo-commons.git] / org.argeo.cms.e4 / src / org / argeo / cms / e4 / users / handlers / DeleteUsers.java
index 4a9417c9ef99f7bc4750aa35f7dc67dfa335f54b..d1afd22102049ededf8f38b15355b718a6b7e3f1 100644 (file)
@@ -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<User> selection = (List<User>) selectionService.getSelection();
+               if (selection == null)
+                       return;
 
-               Iterator<User> it = ((IStructuredSelection) selection).iterator();
-               List<User> users = new ArrayList<User>();
+//             Iterator<User> it = ((IStructuredSelection) selection).iterator();
+//             List<User> users = new ArrayList<User>();
                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;
        }
 }